关于网友提出的“ 求教:switch语句问题。”问题疑问,本网通过在网上对“ 求教:switch语句问题。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 求教:switch语句问题。描述:
#include
main()
{ float score;
char grade;
printf("请输入学生成绩:");
scanf("%f",&score);
while(score>100||(score<0)
{ printf("\n输入有误,请重新输入:");
scanf("%f",&score);
}
switch((int)(score/10))
{
case 10:
case 9: grade=’A’;break;
case 8: grade=’B’;break;
case 7: grade=’C’;break;
case 6: grade=’D’;break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade=’E’;
}
printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);
}
这个程序是C习题答案,运行结果是乱码,请指导一下是哪里出错?
解决方案1:
4楼,请不要误人子弟,您说的就是在放狗屁,&&可能同时成立不?!怎么学的数学啊?!
我的建议:main()您要不就是void main()要不就是 int main() 加个return 0;
其次,switch,您要不就是把那个(float\10)用其他字母代替,建议别用强制类型(INT),这样不划算啊,麻烦。
细心点,()不是随便加的,scanf不需要用在while ()里面,那样多麻烦啊~
最后,还是您的习惯问题,您可否将标点设置正常一些啊,别中英文混杂,编译器识别能力有限,他毕竟不是人脑,是机器:)
好啦,我能说的就是这些,希望对您有帮助!
#include
int main(void)
{
float score;
char grade;
printf("请输入学生成绩:");
scanf("%f",&score);
while(score>100||score<0)//原来代码多了一个上括号
排除这个原因,在DEV-C++ 下调试通过
应该与你编译器有关吧 解决方案3:
那边就应该用||的,因为是程序功能需要的呀 解决方案4:
[code=C/C++][#include
int main()
{ float score;
char grade;
printf("请输入学生成绩:");
scanf("%f",&score);
while(score>100||score<0)//原来代码多了一个上括号
{
printf("\n输入有误,请重新输入:");
scanf("%f",&score);
}
switch((int)(score/10))
{
case 10:
case 9: grade='A';break;//这里的单引号改成英文的了
case 8: grade='B';break;
case 7: grade='C';break;
case 6: grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade='E';
}
printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);
return 0;
}
/code]
其他的没有改动 在vc6和codeblocks里都通过了
include
main()
{ float score;
char grade;
printf("请输入学生成绩:");
scanf("%f",&score);
while(score>100||(score<0) //这里不要用||用&& { printf("\n输入有误,请重新输入:");
scanf("%f",&score); //把这句移到while外面来,因为本身不成立所以就不执行下面的语句 }
switch((int)(score/10))
{
case 10:
case 9: grade=’A’;break;
case 8: grade=’B’;break;
case 7: grade=’C’;break;
case 6: grade=’D’;break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade=’E’;
}
printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);
}
不知道说的对不,你试下我这里没有编译器
你程序里面有错误’A’引号要用英文的引号,不能是中文,while少了个 ) ,main 前加个void
#include
void main()
{ float score;
char grade;
printf("请输入学生成绩:");
scanf("%f",&score);
while(score>100||(score<0) )
{ printf("\n输入有误,请重新输入:");
scanf("%f",&score);
}
switch((int)(score/10))
{
case 10:
case 9: grade='A';break;
case 8: grade='B';break;
case 7: grade='C';break;
case 6: grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade='E';
}
printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);
}
这主要和你的编译器和操作系统有关