注册 登录
编程论坛 C语言论坛

这个程序中不论输入一个什么数,都输出default后面的内容。

小白报道 发布于 2019-11-22 22:09, 1866 次点击
#include<stdio.h>
int main(void)
{
    char ch;
    while ((ch=getchar())!=EOF)
    {
        switch (ch - '0')
        {
        case 1: printf("1\n");  break;
        case 2: printf("2\n");  break;
        case 3: printf("3\n");  break;
        case 4: printf("4\n");  break;
        default: printf("请输入一个0 - 4\n");
        }
    }
}
4 回复
#2
小白报道2019-11-22 22:19
回复 楼主 小白报道
为什么case后面的break不能跳出循环
#3
zbjzbj2019-11-22 22:33
输入数字的时候,按了一个回车符。getchar()只读取了一个字符,缓冲区还剩一个回车符。而程序把缓冲区中的回车符当成了第二次输入,故而打印 请输入一个0 - 4
#4
纯蓝之刃2019-11-22 22:39
程序代码:
#include<stdio.h>
int main(void)
{
    char ch;
    while ((ch=getchar())!=EOF)
    {
        switch (ch)
        {
        case '1': printf("1\n");  break;
        case '2': printf("2\n");  break;
        case '3': printf("3\n");  break;
        case '4': printf("4\n");  break;
        case '\n':break;
        default: printf("请输入一个0 - 4\n");break;
        }
    }
}

getchar()会把输入最后的换行符读入到字符串中,这样当读到换行符后,就会进入一次default。
你可以理解switch为选择样式的循环语句,也是需要break跳出的。
#5
小白报道2019-11-23 11:23
回复 3楼 zbjzbj
原来这样  终于知道原因了  感谢感谢  
1