杭电题目2004

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2004

图片发自App



看题目这是一个不难的题,代码也不难写出来,但是写出来后出现了问题。

图片发自App

图片发自App


初次代码:

#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的那个语句有用

你可能感兴趣的:(杭电题目2004)