C++ primer plus(第六版)学习笔记、习题答案(5)

这篇博客是C++ Primer Plus第六版的学习笔记,主要探讨分支语句和逻辑运算符。内容包括:cin处理输入的机制、setprecision、fixed、showpoint的使用方法,以及简单的文件输入输出操作。博主详细解释了cin如何清除错误输入,setprecision如何控制浮点数的显示位数,并给出了文件I/O的示例。
摘要由CSDN通过智能技术生成

第六章:分支语句和逻辑运算符

近来考试,耽误了进度大哭。。


第一部分:学习笔记

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值