码迷,mamicode.com
首页 > 编程语言 > 详细

C语言一个小程序的bug疑问 数组相关

时间:2016-04-02 12:14:08      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

程序目的:输入一个数组的元素数,然后给每个元素赋值,再给出一个值作为关键词,查出数组内是否有元素等于这个值。

代码如下:

 1 #include <stdio.h>
 2 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<n;m++)
20     {
21         do
22         {
23             printf("\n请输入元素%d的值: ",m+1);
24             scanf("%d",&array[m]);
25             if(array[m]<=0)
26             {
27                 printf("\n请正确输入元素%d的值!",m+1);
28             }
29         }while(array[m]<=0);
30     }
31     
32     //获取作为关键词的值
33     do
34     {
35         printf("\n请输入你要查询的值: ");
36         scanf("%d",&x);
37         if(x<=0)
38         {
39             printf("\n请正确输入你要查询的值!");
40         }
41     }while(x<=0);
42     
43     //进行查找
44     for(m=0;m<n;m++)
45     {
46         if(x==array[m])
47         {
48             printf("\n要查找的是第%d个元素.",m+1);
49             b=1;
50         }
51     }
52     
53     //如果没有找到,输出本句
54     if(b!=1)
55     {
56         printf("\n查无此数.");
57     }
58     
59     return 0;
60 }

正常运行结果是:

请输入数组元素的个数: 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的值: 4
10 
11 请输入元素5的值: 5
12 
13 请输入你要查询的值: 4
14 
15 要查找的是第4个元素.
16 要查找的是第5个元素.

本人初学C,恳请路过的熟手可以帮忙解释一下是不是我哪儿写错了。。。谢谢大家的拔刀相助!

C语言一个小程序的bug疑问 数组相关

标签:

原文地址:http://www.cnblogs.com/alpharobert/p/5347097.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!