两个数组a,b,各有三个元素,将他们对应的逐个比较大小(a[0]与b[0]比,a[1]与b[1]比……),如果a中元素大于b中相应元素的数目 多于 b中元素大于a中相应元素的数目,则认为a数组大于b数组,并分别统计出两个数组相应元素大于 等于 小于的次数
我的程序如下:
int compare(int x,int y)
{int flag=0;
if(x>y)
flag=1;
else if(x==y)
flag=0;
else flag=-1;
return (flag);
}
void main()
{int a[3],b[3];
int i,k=0;
int m=0,n=0,p=0;
for(i=0;i<3;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<3;i++)
scanf("%d",&b[i]);
for(i=0;i<3;i++)
{
k=compare(a[i],b[i]);
if(k=1)
m=m+1;
else if(k=0)
n=n+1;
else
p=p+1;
}
printf("a[i]>b[i] %d times \na[i]<b[i] %d times\na[i]=b[i] %d times\n",m,p,n);
if(m>p)
printf("the larger is a[i]");
else if(m=p)
printf("a[i] equal with b[i]");
else
printf("the largeris b[i]");
}
但无论输入什么值,结果总是输出
a[i]>b[i] 3 times
a[i]<b[i] 0 times
a[i]=b[i] 0 times
the larger is a[3]
请高手帮帮忙 看看这是怎么回事。
{
k=compare(a[i],b[i]);
if(k=1)
m=m+1;
else if(k=0)
n=n+1;
else
p=p+1;
}
这里有错,应该是==号,你弄成了赋值操作,所以第一个if肯定为真。这种错误是比较常见的。为避免这类错误可以把常量写在前面,if(1 == k),如果写成=了编译器会报错,就不会出现这类错误了。
if (k=1)改成if(k==1)
else if(m=p)改成....(m==p)
单步调试下