题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2004
看题目这是一个不难的题,代码也不难写出来,但是写出来后出现了问题。
初次代码:
#include "stdio.h"
void main()
{
int k;
while (scanf("%lf",&k)!=EOF)
{
if (k<0||k>100)
printf("Score is error!\n");
else
switch(k/10)
{
case 10:
case 9:printf("A\n");
break;
case 8:printf("B\n");
break;
case 7:printf("C\n");
break;
case 6:printf("D\n");
break;
default:
printf("E\n");
break;
}
}
}
运行之后输入一个数据就出现了Debug Error,用管理员身份运行程序也还是不行,后来发现是代码的问题。
解决方法:(1)多定义一个变量,输入数据为十进制整数,使switch函数里面为整数;
在if语句后加入continue,使程序不执行后面的语句。
改后的正确代码:
#include "stdio.h"
void main()
{
int x,k;
while (scanf("%d",&k)!=EOF)
{
if (k<0||k>100)
{printf("Score is error!\n");
continue;
}
else
x=k/10 ;
switch(x)
{
case 10:
case 9:printf("A\n");
break;
case 8:printf("B\n");
break;
case 7:printf("C\n");
break;
case 6:printf("D\n");
break;
default:
printf("E\n");
break;
}
}
}
笔记:(1)continue作用:不执行下面的语句,执行下一次循环;
(2)switch函数里面不能是浮点数;
(3)break作用:退出循环;if else要规范使用,要记得在后面加上括号,如果不加就只有紧贴着if的那个语句有用