C++ Primer Plus p-189-6.14-cingolf.cpp
来源:互联网 发布:单片机编程要学什么 编辑:程序博客网 时间:2024/06/09 23:06
创建一个数组,记录五个数字,求平均值。并且程序可以判断输入是否为整型。
#include <iostream>using namespace std;const int Max = 5;int main(){ int golf[Max]; cout << "please enter your golf scores.\n"; cout << "You must enter "<<Max<<" rounds.\n"; int i; for (i = 0;i<Max;i++){ cout << "round #"<< i+1 << ": "; while (!(cin >> golf[i])){ cin.clear(); while (cin.get() != '\n') continue; cout << "please enter a number:"; } } double total = 0.0; for (i = 0; i<Max;i++) total += golf[i]; cout << total/Max<<"= average score"<<Max<<" rounds\n"; return 0;}
输出结果
please enter your golf scores.
You must enter 5 rounds.
round #1: 23
round #2: 1
round #3: 44
round #4: 123
round #5: ewe
please enter a number:23
42.8= average score5 rounds
关键代码:
while (!(cin >> golf[i])){ cin.clear(); while (cin.get() != '\n') continue; cout << "please enter a number:"; }
如果用户输入23,则cin表达式为true,因此将一个值放到数组中;而表达式!(cin>>golf[i])为flase,因此结束内部循环。
如果用户输入 ewe,则cin表达式将为false,因此不会将任何值放到数组中;而表达式!(cin>>golf[i])将为true,因此进入内部的while循环。该循环的第一条语句是用clear()方法重置输入,如果省略这条语句,程序将拒绝继续读取输入。接下来,程序在while循环中使用cin.get()来读取行尾之前的所有输入,从而删除这一行中的错误输入(对于cin.get(),能删除这一行的错误输入不是很理解)。另一种方法是读取到下一个空白字符,这样将每次删除一个单词,而不是一次删除整行。最后程序告诉用户,应该输入一个数字。
cin.clear()
cin.clear()默认参数为0,即无错误,正常操作。当我们输入英文字母’ewe’时,它的状态标识改为false,即错误,用cout对用户输出信息,再用cin.clear让错误标识改回为0,让我们可以继续输入,再清空流数据继续输入。如果我们没有了cin.clear(),则会进入死循环,其过程为我们输入了英文字母,它的状态标识便为false,当运行到条件判断时,便总是回到错误的条件表示里,并且我们再也没办法输入,因为错误的表示关闭了cin,所以会进入死循环。
- C++ Primer Plus p-189-6.14-cingolf.cpp
- C-PRIMER PLUS读书笔记
- C-PRIMER PLUS读书笔记
- C Primer Plus 读书笔记
- C Primer Plus学习计划
- C primer plus 一到五章
- 重读 c primer plus
- c primer plus note
- c primer plus chapter6
- c primer plus chapter6
- 《c primer plus》
- C Primer Plus学习
- C Primer Plus学习计划
- C Primer Plus汇总
- C Primer Plus随笔
- c++:primer plus 源代码
- C Primer Plus - 笔记
- C++Primer plus 例题
- hdu 1254 推箱子 (bfs+dfs+预处理)
- java计算器,可以运算括号
- 【机器学习】支持向量机
- iOS mac终端下的SQL语句
- 狐狸找兔子—php实现
- C++ Primer Plus p-189-6.14-cingolf.cpp
- Vue DevTools调试工具
- 华为OJ——查找兄弟单词
- BZOJ 2803: [Poi2012]Prefixuffix
- iOS UICollectionViewLayout
- idea创建项目步骤和遇到的问题登录代码
- ndk-jni初级入门
- 八、外观模式——设计模式学习笔记
- ubuntu修改用户名