2004-输入一个百分制的成绩t,将其转换成对应的等级
2015-06-09 00:19
483 查看
,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
这题的关键在于最后一句如果输入数据不在范围内如何处理?
如果简单的定义一个整型变量,再复制,如果输入一个字母或者一串字符就会出错。
上面这段代码运行如何输入字母,程序会立即结束。原因是检测到输入流错误,没有对a赋值自然不会进while循环。
解决这个错误可以改为这样。
用cin.clear();来重置流,用cin.sync();来清空流。
具体解释看另一篇随笔。
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
这题的关键在于最后一句如果输入数据不在范围内如何处理?
如果简单的定义一个整型变量,再复制,如果输入一个字母或者一串字符就会出错。
#include<iostream> using namespace std; int main() { int a; while (cin>>a&&a!=EOF) { if (a >= 0 && a <= 59) cout << "E" << endl; else if (a <= 69) cout << "D" << endl; else if (a <= 79) cout << "C" << endl; else if (a <= 89) cout << "B" << endl; else if (a <= 100) cout << "A" << endl; else cout << "Score is error!" << endl; } system("pause"); return 0; }
上面这段代码运行如何输入字母,程序会立即结束。原因是检测到输入流错误,没有对a赋值自然不会进while循环。
解决这个错误可以改为这样。
#include<iostream> using namespace std; int main() { int a; while (1) { cin >> a; if (!cin) { cin.clear(); cin.sync(); cout << "Score is error!" << endl; continue; } if (a<0) cout << "Score is error!" << endl; else if ( a <= 59) cout << "E" << endl; else if (a <= 69) cout << "D" << endl; else if (a <= 79) cout << "C" << endl; else if (a <= 89) cout << "B" << endl; else if (a <= 100) cout << "A" << endl; else cout << "Score is error!" << endl; } system("pause"); return 0; }
用cin.clear();来重置流,用cin.sync();来清空流。
具体解释看另一篇随笔。
相关文章推荐
- android实现图片触摸旋转
- Unity3D中的Quaternion(四元数)
- 在进行数据插入数据库操作时,对于id的处理
- POJ 3983:快算24
- POJ 3983:快算24
- 6.9学习内容 设置相机参数,android古怪的bug,仿微信可点击的点赞文字
- 记录我第一次在Android开发图像处理算法的经历
- Java 中包装类wrapped type之间以及和primitive type的比较
- 用Jquery控制文本框只能输入数字和字母
- Mac OS X终端(iterm) javac乱码的解决
- Android下使用pull解析器生成XML文件、读取XML文件
- Uva - 1225 - Digit Counting
- Uva - 1225 - Digit Counting
- 三种代码中特殊的注释-TODO、FIXME、XXX详解
- 我在51sap学习过程中经常遇到的一些实施问题
- Linux 文件的基本操作
- javaEE开发eclipse字符默认配置修改
- ls命令的修改时间显示到秒
- 数据结构之---C语言实现二叉树的顺序存储
- swift-基础部分