对if语句的疑问
我在学习C语言,用的是谭浩强教授的C程序设计第三版。对书中的例8.10产生了疑问:
首先,用例题中的方法:(程序如下,我自行简化了数组的初始化,直接给出了数组)
#include <stdio.h>
void main()
{
int large(int x,int y);
int i,n=0,m=0,k=0;
int a[]={0,1,2,3,4,5,6,7,8,9};
int b[]={2,2,2,2,2,2,2,2,2,2};
for (i=0;i<10;i++)
{
if (large(a[i],b[i])==1)
{
n=n+1;
}
else if (large(a[i],b[i])==0)
{
m=m+1;
}
else
{
k=k+1;
}
}
printf("%d,%d,%d\n",n,m,k);
}
int large(int x,int y)
{
int flag;
if (x>y)
flag=1;
else if (x<y)
flag=-1;
else
flag=0;
return (flag);
}
结果是对的,如下:
但是我自己写的程序,如下:
#include <stdio.h>
void main()
{
int a[]={0,1,2,3,4,5,6,7,8,9};
int b[]={2,2,2,2,2,2,2,2,2,2};
int i,n=0,k=0,m=0;
for (i=0;i<10;i++)
{
if (a[i]>b[i])
{
n=n+1;
}
else if (a[i]=b[i])
{
m=m+1;
}
else
{
k=k+1;
}
}
printf("%d,%d,%d\n",n,m,k);
}
运行结果不对,如下
我不明白2个程序的运行结果为什么不一样。书上讲的方法对if语句中每一种情况进行了赋值,而我并没有对每一种情况赋值。这是否是我的错误所在呢?那我以后用到if语句时也需要对每一种情况进行赋值吗?