C++Primer第五版习题解答---第一章

C++Primer第五版习题解答---第一章

ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考。

作者:cosefy
Date: 2022/1/7

第一章:开始

练习1.3

#include<iostream>

int main() {
    std::cout << "hello, world" << std::endl;
    return 0;
}

练习1.4:

#include<iostream>

int main()
{
    int v1 = 0, v2 = 0;
    std::cout << "please input two numbers: " << std::endl;
    std::cin >> v1 >> v2;
    std::cout << "The product of " << v1 << " and " << v2 << " is: " << v1 * v2 << std::endl;
    return 0;

}

练习1.5:

#include<iostream>
int main()
{
    int v1 = 0, v2 = 0;
    std::cout << "please input two numbers: " << std::endl;
    std::cin >> v1 >> v2;
    std::cout << "The product of ";
    std::cout << v1;
    std::cout << " and ";
    std::cout << v2;
    std::cout << " is: ";
    std::cout << v1 * v2;
    std::cout << std::endl;
    return 0;
}

练习1.6:

结果如下图所示,存在报错,显然格式不合法。

错误原因:输出流表示的格式不正确。
修改格式为:

    std::cout << "The sum of  " << v1;
    std::cout<< "and " << v2;
    std::cout<<"is: "<<v1+v2<<std::endl;

运行结果:

练习1.7:

不正确的嵌套程序:

#include<iostream>
int main()
{
    std::cout<<"hello,C++" << std::endl;
    /*
    *int v1 = 0;
    */*std::cin >> v1 * /
    */
    return 0;
}

错误信息:

练习1.8:

部分代码如下:

    std::cout << "/*";
    std::cout << "\n";
    std::cout << "*/";
    std::cout << "\n";
    //std::cout << /*"*/"*/;
    std::cout <</*"*/"/*"/*"*/;

运行结果:

代码中只有被注释的该行的输出会发生错误,错误原因是界定符不可以嵌套。

练习1.9:

#include<iostream>
int main()
{
    //编写程序,使用while循环将50-100的整数相加
    int val = 50, sum = 0;
    while (val <= 100)
    {
        sum += val;
        ++val;
    }
    std::cout << "Sum of 50 to 100 inclusive is: " << sum << std::endl;
    return 0;
}

练习1.10:

#include<iostream>
int main()
{
    //使用递减运算符(--),实现按递减顺序输出10-0之间的整数
    int val = 10;
    while (val >= 0)
    {
        std::cout << val << " ";
        --val;
    }
    std::cout << std::endl;
    return 0;
}

练习1.11:

#include<iostream>
int main()
{
    //用户输入两个整数,打印出俩整数范围内所有整数
    std::cout << "please input two numbers: " << std::endl;
    int a = 0, b = 0;
    std::cin >> a >> b;
    if (a <= b)
    {
        int temp = b;
        b = a;
        a = temp;
    }
    while (b <= a)
    {
        std::cout << b << " ";
        b++;
    }
    std::cout << std::endl;
    return 0;
}

练习1.12:

for循环使得i从-100增加到100,同时每次循环里,会执行 ~sum+=i~代码
易知,最终sum=0。

练习1.13:

#include<iostream>
int main()
{
    //练习9
    int sum1 = 0;
    for (int val = 50; val <= 100; val++)
        sum1 += val;
    std::cout << "The sum is: " << sum1 << std::endl;
    //练习10
    for (int i = 10; i >= 0; i--)
        std::cout << i << " ";
    std::cout << std::endl;
    //练习11
    std::cout << "please input two numbers: " << std::endl;
    int a = 0, b = 0;
    std::cin >> a >> b;
    if (a <= b)
    {
        int temp = b;
        b = a;
        a = temp;
    }
    for (; b <= a; b++)
        std::cout << b << " ";
    std::cout << std::endl;
    return 0;
}

练习1.14:

比较for循环和while循环的优缺点:
1.在for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。
2.在while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。
3.两种形式各有优点,但它们在功能上是等价的,可以相互转换。

练习1.15:

#include<iostream>
int main()
{
    //语法错误syntax error:例如
    /*
    1,单行命令结尾忘记写分号
    2,字符串输出忘记加双引号
    3,main的参数列表忘记了
    4,大括号,破折号,引号等没有对等好
    */

    //类型错误type error:
    /*
    例如,定义的是int型变量,却传入了一个字符型数据
    */

    //声明错误declaration error
    /*
    应用未声明的变量: 如用cin忘记添加std::或者用变量i却没有定义
    */
}

练习1.16:

#include<iostream>
int main()
{
    //从cin读取一组数,求和
    std::cout << "请输入一组数: " << std::endl;
    int value, sum=0;
    while (std::cin >> value)//windows系统中文件结束符是Ctrl+Z,然后回车键。
        sum += value;
    std::cout << "The sum is: " << sum << std::endl;
    return 0;
}

此例中while循环结束的标志是:
1,遇到文件结束符
2,遇到一个无效的输入,比如非整数。

练习1.17:
如果输入值都相等,结果只输出一句语句来显示该值出现了多少次。
如果输入值都不相等,则每个值结束输入都会打印出该值出现了一次。

练习1.18:
输入相等的值:

输入不等的值:

练习1.19:

上面写的原程序已经做过两次输入数的大小判断处理。

练习1.20:

#include<iostream>
#include"Sales_item.h"

int main()
{
    Sales_item book;
    std::cin >> book;
    std::cout << "The record: " << book << std::endl;
    return 0;
}

练习1.21:

#include<iostream>
#include"Sales_item.h"

int main()
{
    Sales_item item1,item2;
    std::cin >>item1>>item2;
    if(item1.isbn() == item2.isbn())
    {
        std::cout << "The record: " << item1 + item2 << std::endl;
        return 0;
    }
    else
    {
        std::cout << "Error:different ISBN" << std::endl;
        return -1;
    }
}

练习1.22:

#include<iostream>
#include"Sales_item.h"

int main()
{
    Sales_item item,result;
    if (std::cin >> result)
    {
        while (std::cin >> item)
        {
            if (result.isbn() == item.isbn())
                result += item;
            else
            {
                std::cout << "Error:different ISBN" << std::endl;
                return -1;
            }
        }
        std::cout << "The final record: " << result << std::endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/cosefy/p/12162832.html

时间: 2024-07-30 23:53:47

C++Primer第五版习题解答---第一章的相关文章

曼昆《经济学原理》(第五版)习题解答 第一章 导 言 经济学十大原理

复习题1 .列举三个你在生活中面临的重要权衡取舍的例子.答: 1大学毕业后,面临着是否继续深造的选择,选择继续上学攻读研究生学位,就意味着在今后三年中放弃参加工作.赚工资和积累社会经验的机会; 2在学习内容上也面临着很重要的权衡取舍,如果学习<经济学>就要减少学习英语或其他专业课的时间; 3对于不多的生活费的分配同样面临权衡取舍,要多买书,就要减少在吃饭.买衣服等其他方面的开支. 随便举例子就好2 .看一场电影的机会成本是什么?答:看一场电影的机会成本是在看电影的时间里做其他事情所能获得的最大

曼昆《经济学原理》(第五版)习题解答 第二章 像经济学家一样思考

复习题1 .经济学如何像一门科学?答:经济学家努力以科学家的客观态度来探讨经济问题.用科学的方法提出理论.收集资料,并分析这些资料以努力证明或否定他们提出的理论来研究社会.经济学家研究经济的过程和方法与自然科学的科学家研究自然是一样的.所以说经济学也是一门科学. 2 .为什么经济学家要做出假设?答:假设可以使解释这个世界更为容易.对不同的问题作出不同的假设,略去对问题的答案没有实质影响的因素,突出实质性的内容,使我们可以集中进行思考. 3 .经济模型应该准确地描述现实吗?答:经济模型不需要准确地

c++ Primer 第五版习题答案第二章

练习2.1 Q: 类型int.long.long long和short的区别是什么,无符号和带符号类型的区别是什么?float和double的区别是什么? A:int. long. long long和short尺寸不同,表示的数据范围不同.无符号只能表示0和正数,无符号还可以表示负数.float为单精度浮点数,double为双精度,一般来说,float占4字节,double占8字节. 练习2.2 Q: 计算按揭贷款时,对于利率.本金和付款分别应选择何种数据类型?说明你的理由. A: 利率应该用

C++ Primer 第五版:第1 章

*****C++ Primer 第五版第1章学习笔记***** *****实验代码在Red Hat 6.6或VS 2013中调试***** *****文章内容依据当前知识撰写,存在认识的局限性***** 1.1 编写一个简单的C++程序 函数:依据我个人理解,C/C++的函数是一个能够完成一个功能的模块. 完整函数的组成: ①返回类型:不一定有返回值,故不一定有返回类型 ②函数名:根据名字标识完成特定功能的模块,必须存在 ③形参列表:可能没有参数传入,不一定存在 ④函数体:一个完整的函数应该是有

C++ Primer 第五版:第2章

*****C++ Primer 第五版第2章学习笔记***** *****实验代码在Red Hat 6.6或VS 2013中调试***** *****文章内容依据当前知识撰写,存在认识的局限性***** 今天学习C++ Primer 的第2章,还没有看完,先写一点看书的心得和笔记. 对象类型决定对象包含的数据和能参与的运算操作,同时还决定了存储空间大小.算术表达式中不要使用char,因为不同机器实现不一样,导致结果不同.单精度计算不一定比双精度快. C++类型不匹配时,是自动进行类型的转换. C

C++Primer第五版——习题答案详解

开始刷<C++Primer>这本书,会在博客上更新课后习题. 水平有限,如有有误之处,希望大家不吝指教! 不断学习中,欢迎交流! 第一二章课后题 练习1.3 #include<iostream> int main(){ std::cout<<"Hello world"<<std::endl; return 0; } 练习1.4 #include<iostream> int main(){ std::cout <<

C++Primer第五版——习题答案详解(五)

习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using namespace std; int fact(int x) { if (x == 1) return x; else return x * fact(x - 1); } int main() { int x; cout << "Please input a number:\n"

C++Primer第五版——习题答案目录

目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS2017,答案用markdown写的. 第1章 开始&&第2章 变量和基本类型 ? 第3章 字符串.向量和数组 ? 第4章 表达式 ? 第5章 语句 ? 第6章 函数 ? 第7章 类 ? 第8章 IO库 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不断学习中,欢迎交流! 原文地址:

c++ Primer 第五版习题答案第三章

3.2 编写程序,从标准输入中一次读入一整行,然后修改该程序使其一次读入一个词. void readByLine () {    string line; ?    while (getline (cin, line)) {        cout << line << endl;   }   } void readByWord () {    string word; ?    while (cin >> word) {        cout << wo