还是刚才那个程序,大侠进来帮一下

来源:百度知道 编辑:UC知道 时间:2024/06/06 21:44:25
#include<stdio.h>
void main()
{
char a,c;
printf("input the first letter:\n");
while((a=getchar())!='Y'){
if(a=='\n')continue;
switch(a)
{case 'M':printf("Monday\n");break;
case 'T': printf("input second letter:");
c=getchar();
if(c=='u')
printf("Tuesday\n");
else if(c=='h')
printf("Thursday\n");
else printf("data error\n");
break;
case 'W':printf("Wednesday\n");
break;
case 'F':printf("Friday\n");
break;
case 'S': printf("input second letter:");
c=getchar();
if(c=='a')
printf("Saturday\n");
else if(c=='u')
p

那是因为你执行case 'S''T'后,c得到了缓冲中的<CR>。
将case 'S''T'后面的:
c=getchar();
修改为:
while ((c=getchar()) == '\n');
这样,可以避免<CR>带来的困扰。

case 'T': printf("input second letter:");
c=getchar();
把c=getchar(); 改成 while((c=getchar())=='\n');
因为前面的a=getchar()后还残留一个按回车符.直接用c=getchar(),不等你输入c就被赋值为换行符'\n'

那位8级大侠很厉害