batcj1 发表于 2013-10-18 10:51:16

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

#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;
        }

}


文象一族 发表于 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()就会直接读走回车,然后就继续向下执行。所以,就感觉仿佛直接越过一样啦

651871536 发表于 2013-10-18 11:48:08

http://blog.163.com/fengjiale123@126/blog/static/129890240201072904814130/.

吃肉无罪 发表于 2013-10-18 14:56:35

你的回车也是一个字符吧。在缓存里面。

牡丹花下死做鬼 发表于 2013-10-18 17:30:18

因为回车 也是字符 忘了是什么了比如换行是'\n'吧好像

青玄 发表于 2013-10-19 21:45:00

哥们,你好像少了一个文件头

风之残月 发表于 2013-10-21 08:32:06

这个getchar从输入缓冲区里取走回车, '\n'也是一个字符
页: [1]
查看完整版本: 一个小问题,程序中有一点不懂 ,新手