| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 751 人关注过本帖
标题:while 的问题,老师们帮我看一下,错在哪里了?我是初学
只看楼主 加入收藏
竺洪平
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-7-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
while 的问题,老师们帮我看一下,错在哪里了?我是初学
#include "stdio.h"
main()
{
    int s1;
    char s2;
    char s3;
        s3='y';
    while (s3!='n')
    {
    printf("\n input chengji: ");
    scanf ("%d",&s1);
    if (s1<60) s2='E';
    else if(s1<70) s2='D';
    else if (s1<80) s2='c';
    else if (s1<90)  s2='B';
    else s2='A';
    printf("it is %c\n",s2);
    printf("if it not needs go on>input: n \n");
    scanf("%c",&s3);
    printf("s3=%c\n",s3);
    }
printf("end!\n");
}

发现:    scanf("%c",&s3); 没被执行,不知道为什么?变为死loop了
搜索更多相关主题的帖子: include 
2012-07-27 10:58
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:10 
你的编译器是VC6.0吧?
std::flunt???
函数名忘了...就是要清空缓存.

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2012-07-27 11:15
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:10 
字符要注意清空缓存....你在scanf("%c",&s3);前加一句getchar()............就OK了!!!
2012-07-27 11:55
竺洪平
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-7-21
收藏
得分:0 
谢谢!
2012-07-27 11:57
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
前面+fflush (stdin);
或者用" %c"(+个空格)


莫问前尘有愧,但求今生无悔
2012-07-27 12:17
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
收藏
得分:0 
原来在接受字符之前一定要 先清空啊 getchar() 好东西啊!~~
2012-07-27 13:26
我乃新手
Rank: 2
等 级:论坛游民
帖 子:52
专家分:73
注 册:2012-7-23
收藏
得分:0 
清缓存,不错
2012-07-27 13:29
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:0 
唔 这问题够常见的,我也遇到过,当时得到的解决方式是scanf(" %c",&s3);

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-07-27 13:34
竺洪平
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-7-21
收藏
得分:0 
还不是十分明白,为什么要清缓存?
我在开始,已有: s3='y';s3已有初值,而
scanf("%c",&s3);是刚从键盘上输入的数据,此数据先被读到缓存,再交给s3,
这样应该是不管原来缓存中的数据是什么,它都应该被刚从键盘上输入的数据刷新,
反之,难道在每句scanf()前都要加getchar()了吗?
请高手解答
2012-07-27 13:51
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:0 
以下是引用竺洪平在2012-7-27 13:51:19的发言:

还不是十分明白,为什么要清缓存?
我在开始,已有: s3='y';s3已有初值,而
scanf("%c",&s3);是刚从键盘上输入的数据,此数据先被读到缓存,再交给s3,
这样应该是不管原来缓存中的数据是什么,它都应该被刚从键盘上输入的数据刷新,
反之,难道在每句scanf()前都要加getchar()了吗?
请高手解答

不是的,
你在scanf("%c",&s3);后边加一句printf("%d",s3);就能解决你的问题了

[ 本帖最后由 LShang 于 2012-7-27 14:10 编辑 ]

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-07-27 14:08
快速回复:while 的问题,老师们帮我看一下,错在哪里了?我是初学
数据加载中...
 
   



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

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