,具体转换规则如下:

90~100为A;

80~89为B;

70~79为C;

60~69为D;

0~59为E;

如果输入数据不在0~100范围内,请输出一行:“Score is error!”。

这题的关键在于最后一句如果输入数据不在范围内如何处理?

如果简单的定义一个整型变量,再复制,如果输入一个字母或者一串字符就会出错。

  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int a;
  7. while (cin>>a&&a!=EOF)
  8. {
  9. if (a >= 0 && a <= 59)
  10. cout << "E" << endl;
  11. else if (a <= 69)
  12. cout << "D" << endl;
  13. else if (a <= 79)
  14. cout << "C" << endl;
  15. else if (a <= 89)
  16. cout << "B" << endl;
  17. else if (a <= 100)
  18. cout << "A" << endl;
  19. else
  20. cout << "Score is error!" << endl;
  21. }
  22. system("pause");
  23. return 0;
  24. }

  上面这段代码运行如何输入字母,程序会立即结束。原因是检测到输入流错误,没有对a赋值自然不会进while循环。

解决这个错误可以改为这样。

  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int a;
  7. while (1)
  8. {
  9. cin >> a;
  10. if (!cin)
  11. {
  12. cin.clear();
  13. cin.sync();
  14. cout << "Score is error!" << endl;
  15. continue;
  16. }
  17. if (a<0)
  18. cout << "Score is error!" << endl;
  19. else if ( a <= 59)
  20. cout << "E" << endl;
  21. else if (a <= 69)
  22. cout << "D" << endl;
  23. else if (a <= 79)
  24. cout << "C" << endl;
  25. else if (a <= 89)
  26. cout << "B" << endl;
  27. else if (a <= 100)
  28. cout << "A" << endl;
  29. else
  30. cout << "Score is error!" << endl;
  31. }
  32. system("pause");
  33. return 0;
  34. }

  用cin.clear();来重置流,用cin.sync();来清空流。

具体解释看另一篇随笔。

2004-输入一个百分制的成绩t,将其转换成对应的等级的更多相关文章

  1. 输入一个十进制数N,将它转换成R进制数输出(运用递归实现)

    #include<stdio.h> int cnt=0;                             //用来记录每个进制存放的位置 char num[20];   //用来存 ...

  2. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...

  3. 一个java的DES加密解密类转换成C#

    一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...

  4. 分享一个小工具:Excel表高速转换成JSON字符串

    在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...

  5. 知道内存中一个图片的指针IntPtr大小,转换成图片显示

    //nSize 为总长度//pImageData 为总数据//nImageSize //一个图片的长度 byte[] _bytes = new byte[nImageSize];// //IntPtr ...

  6. 【PTA】5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。

    5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出.要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩scor ...

  7. Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...

  8. 第二次作业#include <stdio.h> int main() { int a,b,c,d,e; printf("请输入一个不多于五位的整数:\n"); scanf("%d",&a); if(a>=100000||a<=0) { printf("输入格式错误! \n"); } else { if(

    1 判断成绩等级 给定一百分制成绩,要求输出成绩的等级.90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出"输入数据错误". ...

  9. 当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

    原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有 ...

随机推荐

  1. [Z] 北大一牛人生物转申CS的经历

    http://www.bdwm.net/bbs/bbscon.php?board=CIS&file=M.1367038121.A&num=626&attach=0&di ...

  2. HDU 3791 二叉搜索树

    二叉搜索树 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. mysql 显示行号,以及分组排序

    建表: CREATE TABLE `my_tb` ( `id` ) NOT NULL AUTO_INCREMENT, `parent_code` ) DEFAULT NULL, `code` ) DE ...

  4. Outer Join Query Over Dblink Can Fail With ORA-904 (Doc ID 730256.1)

    Outer Join Query Over Dblink Can Fail With ORA-904 (Doc ID 730256.1) To Bottom Modified:03-May-2013T ...

  5. Rails4 中 因为secret key 引起在production环境下无法运行

    错误信息 Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` ...

  6. C# 对话框隐藏 标题栏

    在对话框设计窗口上双击,进入如下函数 private void Form1_Load(object sender, EventArgs e) { this.FormBorderStyle = Form ...

  7. smartjs 0.3 DataManager 发布&介绍

    在0.3版加入了DataManager,基于策略的数据管理模块:是SmartJS中比较重要的一个系列.整个个DataManager模块包括有:dataManager,dataPolicyManager ...

  8. JS 传递对象问题,指针引用

    $(function () { var test1 = function (args) { args.name = "lcc2"; args = { name: "lcc ...

  9. [Git] 快速签出与更新所有远程分支.md

    git-fetch 命令从远程仓库复制 heads 和 tags 信息到本地,保存在临时文件 .git/FETCH_HEAD 中以备 git-merge 命令使用. 你可以使用 git fetch 命 ...

  10. 进阶学习js中的执行上下文

    在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文. 1.当遇到变量名和函数名相同的问题. var a = 10; functio ...