首页 新闻 会员 周边

我是c语言学习新手,一个关于数组比较大小的问题。求解。

0
悬赏园豆:20 [已解决问题] 解决于 2014-11-03 21:40

错误信息这样,能够比较出数组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);
}

 

jhualee的主页 jhualee | 初学一级 | 园豆:2
提问于:2014-11-03 12:57
< >
分享
最佳答案
0
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++;
}
收获园豆:20
会长 | 专家六级 |园豆:12401 | 2014-11-03 16:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册