欣欣celin 发表于 2014-3-4 22:41:55

为何死循环,调试不出来,挠头吖

#define M 10
#include"stdio.h"
void main()
{
        static int a={-12,0,6,23,56,80,100,110,115};
        int n,low,mid,high,found;
        low=0;
        high=M-1;
        found=0;
        printf("input a num to be searched: \n");
        do
        {
                scanf("%d",&n);                  //*1*
                getchar();
        }while(n < a || n > a);   //运行到这里就会跳回*1*处f,老是在这三句转攸,出不来,咋办吖??
       
        while(low <= high)
        {
                mid=(low + high)/2;
                if(n == a)
                {
                        found = 1;
                        break;
                }
                else if(n > a)
                { low = mid + 1; }
                else
                { high = mid - 1; }
        }
        if(1 == found)
        {
                printf("the index of %d is %d\n",n,mid);
        }
        else
        { printf("there is not %d\n",n); }
}

有劳各位万能的鱼油指点迷津,感谢万分{:7_154:}

zhaopengfei 发表于 2014-3-4 22:41:56

你数组是开辟10个单元的空间,但初始化里边只有9个数字,所以最后一个a自动填充为0,所以不输入的数字总是会满足n > a,所以总是在循环里出不来。望楼主采纳小弟的答案,以资鼓励,嘿嘿。

笑鬼xxoo 发表于 2014-3-4 23:10:30

scanf("%d",&n) 之后 为什么还要 getchar()死循环跟你的输入肯定有关系啊。

getchar()是输入一个字符,且只能输入单个字符,是字符输入函数。
而scanf()是输入函数,可以输入字符、字符串、整形数、浮点数等等。

希望你能解决

超级忍者龟 发表于 2014-3-4 23:11:23

你输入-10,然后回车,不就跳出来了!跳出来了记得给分:lol:

zhongguoren 发表于 2014-3-4 23:23:05

a自动填充为0,所以你只能输入-12到0之间的数,也就是3楼那么建议的原因。----个人愚见,请多指教。

欣欣celin 发表于 2014-3-5 18:45:19

zhaopengfei 发表于 2014-3-4 22:41 static/image/common/back.gif
你数组是开辟10个单元的空间,但初始化里边只有9个数字,所以最后一个a自动填充为0,所以不输入的数字 ...

非常感谢,原来又是偶太粗心,少打了两个数,难怪跟鱼视频的一样的代码,他老人家的可以执行,这边却挂了,哈哈{:5_109:}

欣欣celin 发表于 2014-3-5 18:47:48

笑鬼xxoo 发表于 2014-3-4 23:10 static/image/common/back.gif
scanf("%d",&n) 之后 为什么还要 getchar()死循环跟你的输入肯定有关系啊。

getchar()是输入一个字符, ...

事关,不加getchar这句,只我输入范围以外的数/字符,就会死循环{:7_183:}

欣欣celin 发表于 2014-3-5 18:52:06

超级忍者龟 发表于 2014-3-4 23:11 static/image/common/back.gif
你输入-10,然后回车,不就跳出来了!跳出来了记得给分

兄弟,不好意,偶还很菜,虽然龟兄的建议是对的,但最想知的其实是问题背后的为什么...{:7_163:}

欣欣celin 发表于 2014-3-5 18:55:16

zhongguoren 发表于 2014-3-4 23:23 static/image/common/back.gif
a自动填充为0,所以你只能输入-12到0之间的数,也就是3楼那么建议的原因。----个人愚见,请多指教。

感谢给予说明,开窍了{:7_183:}

zhaopengfei 发表于 2014-3-5 22:01:27

欣欣celin 发表于 2014-3-5 18:45 static/image/common/back.gif
非常感谢,原来又是偶太粗心,少打了两个数,难怪跟鱼视频的一样的代码,他老人家的可以执行,这边却挂了 ...

粗心大意害死人呀

欣欣celin 发表于 2014-3-5 22:27:56

zhaopengfei 发表于 2014-3-5 22:01 static/image/common/back.gif
粗心大意害死人呀

哈哈,幸好不是造飞机的{:7_183:}

超级忍者龟 发表于 2014-3-5 22:55:45

欣欣celin 发表于 2014-3-5 18:52 static/image/common/back.gif
兄弟,不好意,偶还很菜,虽然龟兄的建议是对的,但最想知的其实是问题背后的为什么...

不好意思,我没权限加好友,新鱼油:) ,可以QQ:28513349

欣欣celin 发表于 2014-3-5 23:05:58

超级忍者龟 发表于 2014-3-5 22:55 static/image/common/back.gif
不好意思,我没权限加好友,新鱼油:) ,可以QQ:28513349

http://fishc.com/dvd/vip.html
看这个,最快有权限的方法{:7_182:}

超级忍者龟 发表于 2014-3-5 23:10:15

欣欣celin 发表于 2014-3-5 23:05 static/image/common/back.gif
http://fishc.com/dvd/vip.html
看这个,最快有权限的方法

呵呵,我比较喜欢开源的free!

14780212469 发表于 2014-3-6 01:10:34

呵呵,一样啊

欣欣celin 发表于 2014-3-6 19:01:12

超级忍者龟 发表于 2014-3-5 23:10 static/image/common/back.gif
呵呵,我比较喜欢开源的free!

好吧,等神龟有权限再加吧,嘻{:7_181:}
页: [1]
查看完整版本: 为何死循环,调试不出来,挠头吖