| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:死循环了,求解
只看楼主 加入收藏
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:7 
死循环了,求解
大神们!这个死循环怎么解决?
程序代码:
int displayhand()
{//显示主界面
    int displayTag,drug=1;
    printf("************************ 显 示 操 作 *****************************\n");
    printf("****请选择显示类型:                                        ******\n");
    printf("**                                                              **\n");
    printf("**        1.科技类 2.人文类 3.语言类 4.all                      **\n");
    printf("**          5.返回     6.退出                                   **\n");
    printf("**                                                              **\n");
    printf("************************ 显 示 操 作 *****************************\n");
    while(drug ==1)
    {
        scanf("%d",&displayTag);
        if (displayTag>6||displayTag<1)//这里输入"="时进入死循环,不解!
        {
            printf("输入非法,请输入正确的操作!\n");
        }
        else drug = 0;
    }

    return displayTag;//返回选择的操作值传给display()函数
}

2012-12-27 17:28
想々
Rank: 2
来 自:新邵
等 级:论坛游民
帖 子:67
专家分:40
注 册:2012-12-23
收藏
得分:5 
在表示个人看法:
你已经将1赋值给drug,那么drug的值就是1,你在用while(drug==1),这不就是个死循环!
2012-12-27 17:37
qq1129349299
Rank: 2
等 级:论坛游民
帖 子:5
专家分:16
注 册:2012-12-25
收藏
得分:5 
scanf("%d",&displayTag);  你设置了输入必须为int型(%d),输入任何字符都会死循环。
2012-12-27 17:53
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:5 
你试一下输入%c型,以字符的形式比较

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-12-27 18:22
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
回复 2楼 想々
额,我那里加了判断了,if()...else drug = 0;
我描述一下问题吧,刚才有点冲忙。这个死循环是我在测试的时候遇到的,"="号和其他字符测试不过。当我输入不在1到6的值是整数时没有死循环,当我输入"="时或其他字符时就进入了死循环了
2012-12-27 18:34
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:5 
else drug = 0;变为else break;看看会怎么样
2012-12-27 18:40
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
回复 4楼 额外覆盖
我把displayTag 定义成 char 类型的   死循环没有了,但这又有问题了,当我运行到那时 总是循环两次,而且第一次都是自动的进入if里面然后第二次循环的时候才是真正的输入
程序代码:
    while(drug ==1)
    {
        scanf("%c",&displayTag);
        (int)displayTag;
        if (displayTag>6||displayTag<1)
        {
            printf("输入非法,请输入正确的操作!\n");
        }
        else drug = 0;
    }


2012-12-27 18:56
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
I got it 。原来是这样子的:原来是定义为int类型的,当输入的是字符时因为没有转换类型,而输入的格式又是(%d),没法放入变量,所以输入的字符一直在不停的做着录入比较的工作,就进入了死循环了,而字符就不会,数字也算是字符。当我用 (%c)格式输入时,enter键也算是一个字符,每当敲下enter键时都会赋给了需要输入的变量进入了if()判断语句;改换成(%s)格式输入时enter就不算是输入的字符,可以正常输入,再把输入的字符转换类型就  ok了 !多谢各位网友
程序代码:
    while(drug ==1)
    {
        scanf("%s",&select);
        displayTag = (int)select-48;
        printf("%d",displayTag);
        if (displayTag>6||displayTag<1)
        {
            printf("输入非法,请输入正确的操作!\n");
        }
        else drug = 0;
    }
    
相助

2012-12-27 19:35
快速回复:死循环了,求解
数据加载中...
 
   



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

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