題目分析:
由於題目要求輸入的非零整數各不相同,並且每個整數的絕對值不超過1000,所以可以設置一個大小爲1000的數組,逐個掃描待輸入的整數,如果是大於零的正數,則直接按照數組的位序進行統計,即使用++操作;如果是負數,則將其值取反後再按數組位序統計。由於要求輸入的數各不相同,所以按照相反數的定義,從上述統計操作中可以得到是相反數的判斷標準爲數組對應位序的值爲2.
C語言源程序:
#include<stdio.h>
#include<string.h>
#define N 1000
int num[N+1];
int main()
{
int n,i,v;
int j=0;
//初始化數組值爲0
memset(num,0,sizeof(num));
scanf("%d",&n);
//逐個掃描待輸入整數
for(i=0;i<n;i++)
{
scanf("%d",&v);
if(v<0)
{
num[(-v)]++;
}
else
{
num[v]++;
}
}
for(i=0;i<=N;i++)
{
//判斷是相反數的條件
if((num[i])==2)
{
j++;
}
}
printf("%d",j);
return 0;
}