错误信息这样,能够比较出数组a大于和等于数组b的次数,但是比较不出小于b的次数,直接头大啊,给你们看看源代码:
//数组元素作为函数实参 flag 定义一个开关
#include<stdio.h>
void main()
{
int large(int x,int y);
int a[10],b[10],i,n=0,m=0,k=0;
printf("请输入数组a的值;\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
printf("请输入数组b的值;\n");
for(i=0;i<10;i++)
scanf("%d",&b[i]);
printf("\n");
for(i=0;i<10;i++)
{
if(large(a[i],b[i])==1)
n++;
if(large(a[i],b[i])==0)
m++;
else
k++;
}
printf("a[i]>b[i] %d times\na[i]=b[i] %d times\na[i]<b[i] %d times\n",n,m,k);
if(n>k)
printf("array a is larger than array b\n");
if(n<k)
printf("array a is smaller than array b\n");
else
printf("array a is equal to array b\n");
}
large(int x,int y){
int flag;
if(x>y)
flag=1;
else if(x<y)
flag=-1;
else
flag=0;
return (flag);
}
for(i=0;i<10;i++) { if(large(a[i],b[i])==1) n++; if(large(a[i],b[i])==0) m++; else k++; }
这段代码写错了,应该是:
for(i=0;i<10;i++) { if(large(a[i],b[i])==1) { n++; } else if(large(a[i],b[i])==0) { m++; } else { k++; } }
第二个if前面少写了个else。我是目测的,没有编译,就是这个意思吧。
或者:
for(i=0;i<10;i++) { if(large(a[i],b[i])==1) { n++;continue; } if(large(a[i],b[i])==0) { m++;continue; } k++; }