#include
#define N 500
void main()
{
int a[N],n,i,j,count=0;
printf("请输入n的个数:\n");
scanf("%d",&n);
printf("请输入数据:\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])\\这里的写法无法实现,但是写成((a[i]+a[j])==0)就能实现\\
{
count++;
}
}
}
printf("相反数对数为 %d\n",count);
return 0;
}
a[i]+a[j])==0 这个是绝对值相等
(a[i]+a[j])==0是绝对值相等符号相反
根据你最后一行的输出语句来看,这个程序应该是用来查询输入序列中相反数的对数的,所以可以猜测样例输入应该是包含很多相反数的序列,因此没有多少相等数,你用==判断相等也就判断不到了吧
这段代码呵标题不匹配,如果是标题中的要求的话,a[i]==a[j]按理说是完全可以实现的
不是要求相反数的对数吗?
你的 a[i] == a[j]判断的是两个数是不是相等
如果a,b是一对相反数,则存在着a = -b,即a + b == 0。所以你后面的 (a[i]+a[j])==0 的判断条件是正确的。
而 a[i]==a[j] 是进行两个数是否完全相等的判断,所以不能得到预期的结果。