第六章:分支语句和逻辑运算符
近来考试,耽误了进度。。
第一部分:学习笔记
1.分析代码:
for (i = 0; i < Max; i++)
{
cout << "round #" << i+1 << ": ";
while (!(cin >> golf[i])) {
cin.clear(); // reset input
while (cin.get() != '\n')
continue; // get rid of bad input
cout << "Please enter a number: ";
}
}
golf[]数组为int类型,如果输入的不为数字,或者由于各种原因输入失败,while (!(cin >> golf[i])) 将执行,首先clean()方法重置输入,如果省略这条语句,程序将拒绝继续读取输入。接下来,程序在while中循环使用cin.get()来读取行尾之前的所有输入(那些不是数字的字符),从而删除这一行中的错误输出。
2.cin是如何处理输入的
同时处理输入行 38.5 19.2
①
char ch;
cin >> ch;
输入的第一个字符3被赋给ch, 这里存储的数值3是字符3的编码,执行上述输入语句后,输入队列中的下一个字符为字符8
②
int n;
cin >> n;
在这种情况下,cin将不断读取,直到遇到非数字字符,将38的二进制编码复制到n中。
③
double x;
cin >> x;
cin将不断读取,直到遇到第一个不属于浮点数的字符。
④
char word[50];
cin >> word;
在这种情况下,cin将不断读取,直到遇到空白字符,也就是说读取3、8句点和5,使得空格称为输入队列的下一个字符。然后,cin将这4个字符的字符编码存储到数组word中,并在末尾加上一个空字符。
⑤
char word[50];
cin.geline(word, 50);
cin将不断读取,直到遇到换行符,所有的字符都被存储到word中,并在末尾加上一个空字符。换行符被丢弃,输入队列的下一个字符是下一行中的第一个字符。
3.setprecision、fixed、showpoint用法
cout << fixed;//
cout.precision(2);//以上面的搭配使用,精度为小数点后两位
cout.setf(ios_base::showpoint);//
贴一个网上的总结:
setprecision、fixed、showpoint的用法总结:
首先要加头文件:iomanip
一:setprecision
作用:控制输出流显示浮点数的数字个数,setprecision(n)就是输出的n个数,会有四舍五入。
比如:double s=20.7843000,
cout<<setprecision(1)<<s<<endl;会输出2e+001,因为要输出一个数字,所以只有2.
cout<<setprecision(2)<<s<<endl;会输出21。
cout<<setprecision(3)<<s<<endl;会输出20.8。
cout<<setprecision(6)<<s<<endl;会输出20.7843。
cout<<setprecision(7)<<s<<endl;会输出20.7843。
cout<<setprecision(8)<<s<<endl;会输出20.7843。
可见,小数部分末尾为0时,是输不出来的!
要想输出来,就得用showpoint了。
特别提示 :
(如果再在这些语句后面加个两个语句:
cout<<1<<endl;
cout<<1.00800<<endl;
猜到会输出什么吗?
第一条输出:1。不是浮点型。
第二条为:1