一个小问题,程序中有一点不懂 ,新手
#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(); \*这里只能用getch函数和getche函数,如果用getchar就不执行,直接越过此函数执行了,想不通啊!\*
这时候,getchar()就会直接读走回车,然后就继续向下执行。所以,就感觉仿佛直接越过一样啦 http://blog.163.com/fengjiale123@126/blog/static/129890240201072904814130/. 你的回车也是一个字符吧。在缓存里面。 因为回车 也是字符 忘了是什么了比如换行是'\n'吧好像 哥们,你好像少了一个文件头 这个getchar从输入缓冲区里取走回车, '\n'也是一个字符
页:
[1]