| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1050 人关注过本帖
标题:这个程序有什么问题吗?
只看楼主 加入收藏
阿秀
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-3-20
收藏
得分:0 
#include<stdio.h>
main()
{
int array[10]={1,0,4,8,12,65,-76,100,-45,123};
int location;
int i;
printf("\n输入你要查找的数值:");
scanf("%d",&location);
for (i=0;i<10;i++)
{
if (array[i]==location)
{
printf("%d在数组里\n",location);
break;
}
if (i==9)
printf("%d不在数组里\n",location);
}
}
哦不好意思 应该是这样 呵呵~

2006-03-20 17:34
不惑不获
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-3-17
收藏
得分:0 
恩,我试过了,可以运行,if (i==9)printf("%d不在数组里\n",location);我不是很明白,为什么,可以解释下吗?

2006-03-20 17:47
莽东
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-20
收藏
得分:0 
这个问题只须在查找的后面判断i的值是否为结束位置就可以了。我修改如下:
#include<stdio.h>
void main()
{
int array[] = {1,0,4,8,12,65,-76,100,-45,123};
int size = sizeof(array) / sizeof(array[0]);
int location = 0;
int i = 0;

printf("\n输入你要查找的数值:");
scanf("%d",&location);
for (; i != size && array[i] != location; ++i);
if (i < 10)
{
printf("你要查找的%d在%d位置\n", location, i);
}
else
{
printf("对不起,你要查找的%d不在列表内\n",i);
}
}
你的程序之所以结果不对,是因为在将location赋值给array[i]之后然后if语句判断array[i]是否为真,为真则输出为在里面,为假则输出不在里面。每次都要做直至循环结束。因而不要在循环里判断是否存在,应该之后判断,因为相等固然在,不等在没有结束的情况下是无法判断的。正如我的代码里所写的那样。假如我们与常数做比较,一般做法是将常数放前要比较的数放后,这样如果出现相等符写成赋值符,那编译都无法通过,直接都能看出问题所在,而不是在调试的时候。
2006-03-20 18:49
快速回复:这个程序有什么问题吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027417 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved