本例错误在于数组的长度不能是变量.
程序目的:输入一个数组的元素数,然后给每个元素赋值,再给出一个值作为关键词,查出数组内是否有元素等于这个值。
代码如下:
1 #include2 int main() 3 { 4 int n,m,x,b; 5 int array[n]; 6 7 //本段代码用来获取元素个数 8 do 9 {10 printf("\n请输入数组元素的个数: ");11 scanf("%d",&n);12 if(n<=0)13 {14 printf("\n请正确输入数组元素的个数!");15 }16 }while(n<=0);17 18 //用来给每个元素赋值19 for(m=0;m
正常运行结果是:
请输入数组元素的个数: 6请输入元素1的值: 1请输入元素2的值: 2请输入元素3的值: 3请输入元素4的值: 4请输入元素5的值: 5请输入元素6的值: 6请输入你要查询的值: 5要查找的是第5个元素.
但是当元素个数是5,且查询的值是第4个元素的值的时候,结果会出现2个:(经过验证,目前只发现在这个情况会出现bug)
1 请输入数组元素的个数: 5 2 3 请输入元素1的值: 1 4 5 请输入元素2的值: 2 6 7 请输入元素3的值: 3 8 9 请输入元素4的值: 410 11 请输入元素5的值: 512 13 请输入你要查询的值: 414 15 要查找的是第4个元素.16 要查找的是第5个元素.
本人初学C,恳请路过的熟手可以帮忙解释一下是不是我哪儿写错了。。。谢谢大家的拔刀相助!
后来我在学习其他章节的时候突然想明白了,正确代码如下:
1 #include2 #define NUM 5//用来定义数组长度 3 int main() 4 { 5 int m,x,b; 6 int array[NUM]; 7 8 //用来给每个元素赋值 9 for(m=0;m
这样结果就不会有bug了,原来的代码如果输出结果准确, 纯属运气........
请输入元素1的值: 1请输入元素2的值: 2请输入元素3的值: 3请输入元素4的值: 4请输入元素5的值: 5请输入你要查询的值: 4要查找的是第4个元素.