2004-输入一个百分制的成绩t,将其转换成对应的等级
,具体转换规则如下:
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();来清空流。
具体解释看另一篇随笔。
2004-输入一个百分制的成绩t,将其转换成对应的等级的更多相关文章
- 输入一个十进制数N,将它转换成R进制数输出(运用递归实现)
#include<stdio.h> int cnt=0; //用来记录每个进制存放的位置 char num[20]; //用来存 ...
- 一个java的DES加解密类转换成C#
原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...
- 一个java的DES加密解密类转换成C#
一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...
- 分享一个小工具:Excel表高速转换成JSON字符串
在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...
- 知道内存中一个图片的指针IntPtr大小,转换成图片显示
//nSize 为总长度//pImageData 为总数据//nImageSize //一个图片的长度 byte[] _bytes = new byte[nImageSize];// //IntPtr ...
- 【PTA】5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。
5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出.要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩scor ...
- Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。
返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...
- 第二次作业#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时输出"输入数据错误". ...
- 当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有 ...
随机推荐
- [Z] 北大一牛人生物转申CS的经历
http://www.bdwm.net/bbs/bbscon.php?board=CIS&file=M.1367038121.A&num=626&attach=0&di ...
- HDU 3791 二叉搜索树
二叉搜索树 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- mysql 显示行号,以及分组排序
建表: CREATE TABLE `my_tb` ( `id` ) NOT NULL AUTO_INCREMENT, `parent_code` ) DEFAULT NULL, `code` ) DE ...
- 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 ...
- Rails4 中 因为secret key 引起在production环境下无法运行
错误信息 Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` ...
- C# 对话框隐藏 标题栏
在对话框设计窗口上双击,进入如下函数 private void Form1_Load(object sender, EventArgs e) { this.FormBorderStyle = Form ...
- smartjs 0.3 DataManager 发布&介绍
在0.3版加入了DataManager,基于策略的数据管理模块:是SmartJS中比较重要的一个系列.整个个DataManager模块包括有:dataManager,dataPolicyManager ...
- JS 传递对象问题,指针引用
$(function () { var test1 = function (args) { args.name = "lcc2"; args = { name: "lcc ...
- [Git] 快速签出与更新所有远程分支.md
git-fetch 命令从远程仓库复制 heads 和 tags 信息到本地,保存在临时文件 .git/FETCH_HEAD 中以备 git-merge 命令使用. 你可以使用 git fetch 命 ...
- 进阶学习js中的执行上下文
在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文. 1.当遇到变量名和函数名相同的问题. var a = 10; functio ...