第一个程序和第二个程序的区别:if(score<=100&&score>=0)
如果分数是不规范的(负数或大于一百):
第一个程序就不会进入switch语句;
第二个程序在分数不规范的情况下,会打印:score is wrong,但是语句会接着往下执行,最后printf("%c",grade);这句也被执行了,所以出现了不是预期的结果。
修改方法有很多,有问题可以再联系。
希望对你有帮助。
我们的分数是在0到100之间,当 score>100||score<0(即分数小于0或大于100)时,分数不正确,输出 score is wrong .
当输入的分数正确时,执行swith语句。所以这是一个条件语句,应用到if-else语句。
程序只需稍微改一下:
if(score>100||score<0)
printf("score is wrong");
else
{
p=score/10;
switch(p)
{... ...
... ...
}
printf("%c",grade);
}
#include
main()
{
int
a
=
1,
b
=
0;
switch(a)
{
case
1:
switch(b)
//执行到这里
{
case
0:printf("**0**");break;
//输出
case
1:printf("**1**");break;
}//注意!这里的switch并没有break;所以继续向下执行,执行了
printf("**2**");,虽然a不等于2,但是由于没有break会继续向下执行的,这就是为什么switch(b)里要加两个break的缘故,没有break会向下执行而不是跳出选择
case
2:printf("**2**");break;
}
}
if(score>100||score<0) printf("score is wrong");
这一行只是在分数不正确的时候,输出了一行信息
而第一个程序
if(score<=100&&score>=0)
{
}
else printf("score is wrong");
---------------------------
这样修改,分数不对,输出提示之后就结束程序
if(score>100||score<0)
{
printf("score is wrong");
getch();
return;
}
第一个是if else 的选择结构
而第二个只是if判断下,不影响后面语句的执行,如果是要实现同一个功能,则第二个语句也应改为if else型的选择结构
个人认为你把else给漏掉了