C语言简单程序。求一个数组中是否存在n这个数

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int a[5],i,k,j,n;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<5;i++)
if(a[i]==n)
{printf("%d",n);break;}
if(i>=5) printf("not fould");
}这个程序是对的。。但是这样写就不能达到目的了,这是为什么/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int a[5],i,k,j,n;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<5;i++)
if(a[i]==n)
{printf("%d",n);break;}
else printf("not fould");
}

第1个回答  2011-11-02
for(i=0;i<5;i++)
if(a[i]==n)
{printf("%d",n);break;}
else printf("not fould");
这样写,是每一个元素都需要不是if就是else。
例如 a[] = {1,2,3,4,5};
要查找3,
则比较时,与1先让不相等,也就是if不成立,那么else成立了,输出not found,这显然不对啊。因为3是有的,只是还没往下查而已。
第2个回答  2011-11-02
你的程序相当于:
#include "stdio.h"
void main()
{
int a[5],i,k,j,n;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&n);
for(i=0;i<5;i++)
{
if(a[i]==n)
{
printf("%d",n);break;
}
else printf("not fould");
}
}
而第一个程序相当于:
#include "stdio.h"
void main()
{
int a[5],i,k,j,n;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&n);

for(i=0;i<5;i++)
{
if(a[i]==n)
{
printf("%d",n);break;
}
}
if(i>=5) printf("not fould");
}

for和if不带大括号默认只跟后面一句,还是都带上吧,看着清楚明了。本回答被提问者采纳
第3个回答  2011-11-02
你第二个程序不对,因为if(){}else语句是在循环体里面的,如果第3个元素是n,那么在前两次比较的时候都要执行一下else后面的语句,或多余的输出两个not found.
第4个回答  2011-11-02
#include "stdio.h"
void main()
{
int a[5],i,k,j,n;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<5;i++)
if(a[i]==n)
{
printf("%d",n);
return 0;
}
printf("not fould");
}
相似回答