| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 526 人关注过本帖
标题:残念do--while
只看楼主 加入收藏
citystudy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-10-2
结帖率:0
收藏
 问题点数:0 回复次数:2 
残念do--while
#include <stdio.h>

void main(){
    char a,b,c;
    do{
        printf("input the grade");
        scanf("%c",&c);
        switch(c){
        case 'A':case 'a': printf("wonderful");
            break;
        case 'B':case 'b':printf("good");
            break;
        case 'C':case 'c':printf("soso");
            break;
        case 'D':case 'd':printf("bad");
            break;
        default:
            printf("wrong");
            break;
        }
                printf("more student?(y to continue");
        scanf("%c",&a);
    }while(a!='y');
}

这个程序会跳过more students 的验证,求指教为什么啊
搜索更多相关主题的帖子: soso default include wrong break 
2011-10-03 21:35
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
程序代码:
#include <stdio.h>

int main()
{
    char score;
    char choice = 'y';
    
    while (choice == 'y')
    {
        printf("Please input score:\n");
        scanf("%c", &score);
        getchar();
        
        switch(score)
        {
            case 'a':
            case 'A':
                printf("Wonderful\n");
                break;
            case 'b':
            case 'B':
                printf("Good\n");
                break;
            case 'c':
            case 'C':
                printf("Soso\n");
                break;
            case 'd':
            case 'D':
                printf("Bad\n");
                break;
            default:
                printf("Wrong\n");
                break;
        }
        
        printf("more student?(y to continue)\n");
        scanf("%c", &choice);
        getchar();
    }
    return 0;
}


[ 本帖最后由 thlgood 于 2011-10-3 21:58 编辑 ]

o(∩∩)Linux & Python 群:187367181
2011-10-03 21:54
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
o(∩∩)o...哈哈
首先:注意一下代码的规范性。你的代码可读性很差。

其次说一下为什么跳过more student的验证。

当你运行这个程序的时时候,那么你往往会这样输入:’ a ‘  +  ‘ 回车 ’。
接下来程序会把 ‘  a  ’这个字符赋给变量c,然后把 ‘ 回车 ’ 这个字符依然保存在缓冲区内。

当你的程序运行到 scanf("%c",&a);这一句的时候,由于缓冲区内已经有一个字符的缘故,系统会直接把  ‘ 回车 ’这个字符付给a,而不是等着你输入一个字符。

o(∩∩)Linux & Python 群:187367181
2011-10-03 22:06
快速回复:残念do--while
数据加载中...
 
   



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

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