关于一题C语言(运用switch时的问题)

来源:百度知道 编辑:UC知道 时间:2024/06/30 23:06:35
我在用code blocks时,
#include "stdio.h"
main()
{
int i;
char grade;
for(i=1;i<=6;i++){
printf("Input Grade:");
scanf("%c",&grade);
if(grade=='0')
break;
switch(grade){
case 'A':
printf("A(90~100)\n");
break;
case 'B':
printf("B(80~89)\n");
break;
case 'C':
printf("C(70~79)\n");
break;
case 'D':
printf("D(60~69)\n");
break;
case 'E':
printf("E(0~59)\n");
break;
default:
printf("error!\n");
break;
}
}
printf("Thank you!");
}

残阳古道已经讲明白了错误原因,但并不需要吧grade改成int型的,因为你设计这个程序的初衷是为了查看每个成绩等级对应的分数段。我据此在你的代码中添加了一条语句,就是当你输入一个字符敲回车把该字符送入内存缓冲区时为了避免把回车符送给grade,你可以再次执行输入操作。代码如下:(用了goto语句)

》解决方法一:》》:
#include "stdio.h"
void main()
{
int i;
char grade;
for(i=1;i<=6;i++)
{
printf("Input Grade:");
myd:scanf("%c",&grade);
if(grade=='\n')goto myd;
if(grade=='0')
break;
switch(grade)
{
case 'A':
printf("A(90~100)\n");
break;
case 'B':
printf("B(80~89)\n");
break;
case 'C':
printf("C(70~79)\n");
break;
case 'D':
printf("D(60~69)\n");
break;
case 'E':
printf(