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退出):
为什么会多出两行的样子?
#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;
}因为你的每次输入还有一个换行。 虽然你的问题已经解决,我也是初学者,我花了一些时间调试,还是将我的答案放出来,供你参考;
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;
} 风过无痕1989 发表于 2020-7-30 01:46
虽然你的问题已经解决,我也是初学者,我花了一些时间调试,还是将我的答案放出来,供你参考;
scanf()...
嗯,谢谢你!
页:
[1]