首页 > 用户发贴区 > 编程问题提问区 > 新手编程出现的问题
2010
02-14

新手编程出现的问题

#include<stdio.h>
void main()
{
 char day; 
 printf(“please input the first letter of week.\n”);
 day=getchar();
    switch(day)
 {
 case ‘m’:printf(“monday\n”);break;
 case ‘t’:printf(“please input second char\n”);
  day=getchar();
   if(getchar()==’u')
   printf(“tuesday\n”);
   else if(getchar()==’h')
   printf(“thursday\n”);
   else
   printf(“date error\n”);
   break;
 case ‘W’:printf(“wednesday\n”);break;
 case ‘S’:printf(“please input second char\n”);
   day=getchar();
   if (getchar()==’u')
   printf(“sunday\n”);
   else if(getchar()==’a')
   printf(“saturday\n”);
   else
   printf(“date error”);
   break;
 case ‘F’:printf(“friday\n”);break;
 default:printf(“date error\n”);
 }
}

这个当我输入t然后输入h的时候就是显示date error但是输入u的时候会正常

输入s时也是一样。。有一个会有问题。。谁能告诉我这是为什么吗。。。万分感谢。。


新手编程出现的问题》有 1 条评论

  1. whos 说:
    程序改过后如下:
    #include<stdio.h>
    void main()
    {
     char day;
     printf(“please input the first letter of week.\n”);
     day=getchar();
     getchar();
        switch(day)
     {
     case ‘m’:printf(“monday\n”);break;
     case ‘t’:printf(“please input second char\n”);
      day=getchar();
      getchar();
       if(day==’u')
       printf(“tuesday\n”);
       else if(day==’h')
       printf(“thursday\n”);
       else
       printf(“date error\n”);
       break;
     case ‘w’:printf(“wednesday\n”);break;
     case ‘s’:printf(“please input second char\n”);
       day=getchar();
       getchar();
       if (day==’u')
       printf(“sunday\n”);
       else if(day==’a')
       printf(“saturday\n”);
       else
       printf(“date error”);
       break;
     case ‘f’:printf(“friday\n”);break;
     default:printf(“date error\n”);
     }
    }
     
    每调用一次getchar,函数就会从键盘输入缓冲区中取出一个字符。
    如输入t并回车,再输入h并回车,这时day=getchar()中day=’t',之后再次getchar(),则此时取出的是回车键的ASCII码。原程序中在接受了t后没有接收回车键,所以出错。

留下一个回复