灰白 发表于 2020-7-30 00:18:22

C语言求助

#include <stdio.h>

int main()
{
      char ch;

      while(1)
      {
                printf("请输入成绩评级(输入Q退出):\n");
                scanf("%c", &ch);

                if (ch == 'Q')
                {
                        break;
                }
                else
                {
                        switch(ch)
                        {
                              case 'A' : printf("对应的成绩在90以上\n\n");break;
                              case 'B' : printf("对应的成绩在80~90\n\n");break;
                              case 'C' : printf("对应的成绩在70~80\n\n");break;
                              case 'D' : printf("对应的成绩在60~70\n\n");break;
                              case 'E' : printf("对应的成绩在0~60\n\n");break;
                              default : printf("请输入有效成绩评级\n\n");break;
                        }
                }
      }

      return 0;
}

我输入A时,输出如下:

请输入成绩评级(输入Q退出):
A
对应的成绩在90以上

请输入成绩评级(输入Q退出):
请输入有效成绩评级

请输入成绩评级(输入Q退出):

为什么会多出两行的样子?





                                 

永恒的蓝色梦想 发表于 2020-7-30 00:20:47

#include <stdio.h>

int main()
{
    char ch;

    while (1)
    {
      printf("请输入成绩评级(输入Q退出):\n");
      scanf("%c%*c", &ch);

      if (ch == 'Q')
      {
            break;
      }
      else
      {
            switch (ch)
            {
                case 'A': printf("对应的成绩在90以上\n\n"); break;
                case 'B': printf("对应的成绩在80~90\n\n"); break;
                case 'C': printf("对应的成绩在70~80\n\n"); break;
                case 'D': printf("对应的成绩在60~70\n\n"); break;
                case 'E': printf("对应的成绩在0~60\n\n"); break;
                default: printf("请输入有效成绩评级\n\n"); break;
            }
      }
    }

    return 0;
}因为你的每次输入还有一个换行。

风过无痕1989 发表于 2020-7-30 01:46:37

虽然你的问题已经解决,我也是初学者,我花了一些时间调试,还是将我的答案放出来,供你参考;

scanf() 语句的使用时需要注意,前一句若是有换行符,第二次执行时,就会跳过,建议改用 getchar() 好一点;另外,帮你添加了小写字母自动变为大写字母的功能,代码如下:

#include<stdio.h>

int main()
{
        char ch;

        printf("请输入成绩评级(输入Q退出):\n");

        while(1)
        {
        ch = getchar();
      if ( ch >= 'a' && ch <= 'z' )
      ch -= 32 ;
                if (ch == 'Q')
                {
                        break;
                }
                else
                {
                        switch(ch)
                        {
                        case 'A' : printf("对应的成绩在90以上\n\n");break;
                        case 'B' : printf("对应的成绩在80~90\n\n");break;
                        case 'C' : printf("对应的成绩在70~80\n\n");break;
                        case 'D' : printf("对应的成绩在60~70\n\n");break;
                        case 'E' : printf("对应的成绩在0~60\n\n");break;
                        default : printf("请输入有效成绩评级\n\n");break;
                        }
                }

        }

        return 0;
}

灰白 发表于 2020-7-30 22:00:21

风过无痕1989 发表于 2020-7-30 01:46
虽然你的问题已经解决,我也是初学者,我花了一些时间调试,还是将我的答案放出来,供你参考;

scanf()...

嗯,谢谢你!
页: [1]
查看完整版本: C语言求助