| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 296 人关注过本帖
标题:C语言这个 代码 为什么 输入浮点型 和 字符 就会 进入死循环啊
只看楼主 加入收藏
tianxiayehan
Rank: 1
等 级:禁止发言
帖 子:47
专家分:4
注 册:2011-8-31
结帖率:50%
收藏
 问题点数:0 回复次数:4 
C语言这个 代码 为什么 输入浮点型 和 字符 就会 进入死循环啊
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: C语言 
2011-09-07 16:53
edwardflee
Rank: 4
等 级:业余侠客
帖 子:145
专家分:234
注 册:2011-7-27
收藏
得分:0 
scanf没有被正常执行,a的值始终是一个垃圾值,所以满足while循环的条件
但后面循环里的scanf受之前错误的影响,也不能正常执行了
可以加几行代码,就解决了
程序代码:
# include <stdio.h>
# include <stdlib.h>

int main(void)
{
    int a;
   
    printf("请输入你的保险箱密码:");
    scanf ("%d", &a);

   
    while(a != 12345)
    {
        printf("你输入的密码不正确,再输入一次\n");
       
        char ch;
        while ( (ch=getchar()) != '\n')               
        continue;
       
        scanf("%d", &a);   
    }
    printf("恭  喜  你  密  码  正  确!!\n");
   
    system("pause");
   
    return 0;
   
} 




[ 本帖最后由 edwardflee 于 2011-9-7 17:11 编辑 ]

学C的秘诀=每天都来泡论坛
2011-09-07 17:08
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 楼主 tianxiayehan
没上机,只供参考: 应该是缓冲区问题 # include <stdio.h>
# include <stdlib.h>
int main(void)
{
    int a,i;
    printf("请输入你的保险箱密码:");
    scanf ("%d", &a);
    while(a != 12345)
    {
        printf("你输入的密码不正确,再输入一次\n");      while((i=getchar())!='\n');
        scanf("%d", &a);
    }
        printf("恭            确!!\n");
    system("pause");
    return 0;
}

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-07 18:35
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
scanf找不到和你指定的格式相同的数据就会一直找

                                         
===========深入<----------------->浅出============
2011-09-07 18:49
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:0 
以下是引用tianxiayehan在2011-9-7 16:53:36的发言:

# include <stdio.h>
# include <stdlib.h>

int main(void)
{
    int a;
        
    printf("请输入你的保险箱密码:");
    scanf ("%d", &a);

    while(a != 12345)
    {
        printf("你输入的密码不正确,再输入一次\n");
        fflush(stdin);//加这一句,一了百了!!Luminal
        scanf("%d", &a);   
    }
        printf("恭            确!!\n");

    system("pause");
   
    return 0;

}

图懒省事,在楼主的代码中直接回复了,杯具了,没分

[ 本帖最后由 Luminal 于 2011-9-7 18:58 编辑 ]
2011-09-07 18:56
快速回复:C语言这个 代码 为什么 输入浮点型 和 字符 就会 进入死循环啊
数据加载中...
 
   



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

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