鱼C论坛

 找回密码
 立即注册
查看: 2993|回复: 6

一个小问题,程序中有一点不懂 ,新手

[复制链接]
发表于 2013-10-18 10:51:16 | 显示全部楼层 |阅读模式
2鱼币
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
main()
{
        char le,er,san;
        printf("请输入请输入星期的第一个字母M,T,W,F,S\n");
        le=getchar();
        le=toupper(le);
        if(le!='S' && le!='F' && le!='M' && le!='T' && le!='W' )
        {        printf("您输入有误");
                exit(0);
        }
        switch(le)
        {        case 'M':printf("Monday\n");break;
                case 'W':printf("Wensday\n");break;
                case 'F':printf("Friday\n");break;
                case 'S':
               
                        {        printf("请在输入第二个字母a,u\n");
                                er=getch(); \*这里只能用getch函数和getche函数,如果用getchar就不执行,直接越过此函数执行了,想不通啊!\*
                                er=tolower(er);
                                switch(er)
                                {        case 'a':printf("Saturday\n");break;
                                        case 'u':printf("Sunday\n");break;
                                        default :printf("输入有误!\n");
                                }break;
                        }break;
                case 'T':
                        {
                                printf("请在输入第二个字母u,h\n");
                                san=tolower(getch());
                                switch(san)
                                {        case 'T':printf("Tuesday\n");break;
                                        case 'h':printf("Thursday\n");break;
                                        default :printf("您输入有误!\n");       
                                }break;       
                        }break;
        }

}


最佳答案

查看完整内容

这个问题很简单啦。 1.首先呢,你在开头的代码是: char le,er,san; printf("请输入请输入星期的第一个字母M,T,W,F,S\n"); le=getchar(); 这时候,你的输入,肯定是一个字母加上回车。然而呢,你的getchar()只是把字母读走啦,这时候在标准输入流里,就还有一个回车在那里放着,等待着被读取。 2.接着,你又有如下代码: printf("请在输入第二个字母a,u\n"); er=getch(); ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-18 10:51:17 | 显示全部楼层
这个问题很简单啦。
1.首先呢,你在开头的代码是:
char le,er,san;
        printf("请输入请输入星期的第一个字母M,T,W,F,S\n");
        le=getchar();
这时候,你的输入,肯定是一个字母加上回车。然而呢,你的getchar()只是把字母读走啦,这时候在标准输入流里,就还有一个回车在那里放着,等待着被读取。
2.接着,你又有如下代码:
printf("请在输入第二个字母a,u\n");
                                er=getch(); \*这里只能用getch函数和getche函数,如果用getchar就不执行,直接越过此函数执行了,想不通啊!\*
这时候,getchar()就会直接读走回车,然后就继续向下执行。所以,就感觉仿佛直接越过一样啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-18 11:48:08 | 显示全部楼层
http://blog.163.com/fengjiale123@126/blog/static/129890240201072904814130/.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-18 14:56:35 | 显示全部楼层
你的回车也是一个字符吧。在缓存里面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-18 17:30:18 | 显示全部楼层
因为回车 也是字符 忘了是什么了  比如换行是'\n'吧好像
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-19 21:45:00 | 显示全部楼层
哥们,你好像少了一个文件头
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-21 08:32:06 | 显示全部楼层
这个getchar从输入缓冲区里取走回车, '\n'也是一个字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 03:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表