《C++ Primer Plus》(第6版)第5章编程练习

news2025/1/17 13:53:39

《C++ Primer Plus》(第6版)第5章编程练习

  • 《C++ Primer Plus》(第6版)第5章编程练习
    • 1. 计算闭区间内的整数和
    • 2. 重新编写程序清单5.4
    • 3. 累加
    • 4. 投资价值
    • 5. 销售情况
    • 6. 销售情况2
    • 7. 汽车
    • 8. 统计单词数量
    • 9. 统计单词数量2
    • 10. 嵌套循环

《C++ Primer Plus》(第6版)第5章编程练习

1. 计算闭区间内的整数和

编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间(包括这两个整数)所有整数的和。这里假设先输入较小的整数。例如,如果用户输入的是2和9,则程序将指出2~9之间所有整数的和为44。

代码:

#include <iostream>
using namespace std;
int main()
{
    int a, b, sum = 0;

    cout << "Please give me two numbers a and b(a<b),\n";
    cout << " and I will calculate the sum of the integers in the interval [a,b].\n";
    cout << "a: ";
    cin >> a;
    cout << "b: ";
    cin >> b;
    for (int i = a; i <= b; i++)
        sum += i;
    cout << "result:" << sum << endl;

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

2. 重新编写程序清单5.4

使用 array对象(而不是数组)和 long double(而不是long long)重新编写程序清单5.4,并计算100!的值。

代码:

#include <iostream>
#include <array>
using namespace std;
const int ArrSize = 101;

int main()
{
    
    array<long double, ArrSize> factorials;

    factorials[0] = factorials[1] = 1;
    for (int i = 2; i < ArrSize; i++)
        factorials[i] = i * factorials[i - 1];
    cout << "100!=" << factorials[100] << endl;

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

3. 累加

编写一个要求用户输入数字的程序。每次输入后,程序都将报告到目前为止,所有输入的累计和。当用户输入0时,程序结束。

代码:

#include <iostream>
using namespace std;

int main()
{
    int num, sum = 0;

    cout << "Please enter the number,\n";
    cout << "and I will calculate the cumulative sum of the input.\n";
    cout << "(enter 0 to end the program)" << endl;
    while (cin >> num && num != 0)
    {
        sum += num;
        cout << "total:" << sum << endl;
    }
    cout << "Done!\n";

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

4. 投资价值

Daphne 以10%的单利投资了100美元。也就是说,每一年的利润都是投资额的10%,即每年10美元:
利息=0.10×原始存款
而Cleo以5%的复利投资了100美元。也就是说,利息是当前存款(包括获得的利息的5%,:
利息=0.05×当前存款
Cleo在第一年投资100美元的盈利是5%——得到了105美元。下一年的盈利是105美元的5%—–即5.25美元,依此类推。请编写一个程序,计算多少年后,Cleo 的投资价值才能超过Daphne的投资价值,并显示此时两个人的投资价值。

代码:

#include <iostream>
using namespace std;
#define SIMPLE_RATE 0.10
#define COMPOUND_RATE 0.05
int main()
{
    double Daphne = 100, Cleo = 100;
    double principal = 100;
    unsigned year = 0;

    while (Cleo <= Daphne)
    {
        Daphne += SIMPLE_RATE * principal;
        Cleo += COMPOUND_RATE * Cleo;
        year++;
        // cout << "year " << year << ":\n";
        // cout << "Daphne:" << Daphne << endl;
        // cout << "Cleo:" << Cleo << endl;
    }
    cout << year << " years later,";
    cout << " the investment value of Cleo exceeds the investment value of Daphne.\n";

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

5. 销售情况

假设要销售《C++ For Fools》一书。请编写一个程序,输入全年中每个月的销售量(图书数量,而不是销售额)。程序通过循环,使用初始化为月份字符串的char*数组(或string对象数组逐月进行提示,并将输入的数据储存在一个int数组中。然后,程序计算数组中各元素的总数,并报告这一年的销售情况。

代码:

#include <iostream>
using namespace std;
#define MONTHS 12
const string months[12] = {
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"};

int main()
{
    int sales[MONTHS];
    int sum = 0;

    for (int i = 0; i < MONTHS; i++)
    {
        cout << "Please enter the sales volume for " << months[i] << ":";
        cin >> sales[i];
    }
    for (int i = 0; i < MONTHS; i++)
    {
        cout << months[i] << " sales:" << sales[i] << endl;
        sum += sales[i];
    }
    cout << "Annual sales:" << sum << endl;

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

6. 销售情况2

完成编程练习5,但这一次使用一个二维数组来存储输入——3年中每个月的销售量。程序将报告每年销售量以及三年的总销售量。

代码:

#include <iostream>
using namespace std;
#define YEAR 3
#define MONTH 12
const string months[12] = {
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"};

int main()
{
    int sales[YEAR][MONTH] = {0};
    int annualSales[YEAR] = {0};
    int sum = 0;

    for (int i = 0; i < YEAR; i++)
    {
        for (int j = 0; j < MONTH; j++)
        {
            cout << "Please enter the sales volume for year " << i + 1 << " month " << months[j] << ":";
            cin >> sales[i][j];
        }
    }
    for (int i = 0; i < YEAR; i++)
    {
        for (int j = 0; j < MONTH; j++)
        {
            cout << "year " << i + 1 << " month " << months[i] << " sales:" << sales[i][j] << endl;
            annualSales[i] += sales[i][j];
        }
    }
    cout << "Annual sales:\n";
    for (int i = 0; i < YEAR; i++)
    {
        cout << "year " << i + 1 << ":" << annualSales[i] << endl;
        sum += annualSales[i];
    }
    cout << "Total sales:" << sum << endl;

    system("pause");
    return 0;
}

7. 汽车

设计一个名为car的结构,用它存储下述有关汽车的信息:生产商(存储在字符数组或string对象中的字符串)、生产年份(整数)。编写一个程序,向用户询问有多少辆汽车。随后,程序使用new来创建一个由相应数量的car结构组成的动态数组。接下来,程序提示用户输入每辆车的生产商(可能由多个单词组成)和年份信息。请注意,这需要特别小心,因为它将交替读取数值和字符串(参见第4章)。最后,程序将显示每个结构的内容。该程序的运行情况如下:

How many cars do you wish to catalog? 2

car #1:
Please enter the make: Hudson  Hornet

Please enter the year made: 1952
car #2:
please  efter themake: Kaiser

please enter  the year made:1951

Here is your colrection :
1952 Hudson Hornet
1951 Kaiser

代码:

#include <iostream>
#include <string>
using namespace std;
struct Car
{
    string producer;
    int madeYear;
};
int main()
{
    int num = 0;

    cout << "How many cars do you wish to catalog? ";
    cin >> num;
    cin.get();

    Car *cars = new Car[num];

    for (int i = 0; i < num; i++)
    {
        cout << "car #" << i + 1 << ":\n";
        cout << "Please enter the make: ";
        getline(cin, cars[i].producer);

        cout << "Please enter the year made: ";
        cin >> cars[i].madeYear;
        cin.get();
    }
    cout << "Here is your collection:\n";
    for (int i = 0; i < num; i++)
        cout << cars[i].madeYear << " " << cars[i].producer << endl;

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

8. 统计单词数量

编写个程序,它使用一个char数组和循环来每次读取一个单词,直到用户输入done为止。随后,该程序指出用户输入了多少个单词(不包括done在内)。下面是该程序的运行情况:

Enter words (to stop, type the word done):
anteater birthday category  dumpster
envy finagle geometry done for sure
You  entered a total of 7 words.

您应在程序中包含头文件cstring,并使用函数strcmp()来进行比较测试。

代码:

#include <iostream>
#include <cstring>
#define ArrSize 30
using namespace std;

int main()
{
    char word[ArrSize];
    int count = 0;

    cout << "Enter words (to stop, type the word done):\n";
    while (cin >> word && strcmp("done", word))
        count++;
    cout << "You  entered a total of " << count << " words.\n";

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

在这里插入图片描述

9. 统计单词数量2

编写一个满足前一个练习中描述的程序,但使用string对象而不是字符数组。请在程序中包含头文件string并使用关系运算符来进行比较测试。

代码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string word;
    int count = 0;

    cout << "Enter words (to stop, type the word done):\n";
    while (cin >> word && word != "done")
        count++;
    cout << "You  entered a total of " << count << " words.\n";

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

10. 嵌套循环

编写一个使用嵌套循环的程序,要求用户输入一个值,指出要显示多少行。然后,程序将显示相应行数的星号,其中第一行包括一个星号,第二行包括两个星号,依此类推。每一行包含的字符数等于用户指定的行数,在星号不够的情况下,在星号前面加上句点。该程序的运行情况如下:

Enter number of rows: 5
....*
...**
..***
.****
*****

代码:

#include <iostream>
using namespace std;

int main()
{
    int num = 0;

    cout << "Enter number of rows: ";
    cin >> num;
    for (int i = 1; i <= num; i++)
    {
        for (int j = 0; j < num - i; j++)
            cout << ".";
        for (int j = 0; j < i; j++)
            cout << "*";
        cout << endl;
    }

    system("pause");
    return 0;
}

运行结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/378744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(五十)大白话深入研究索引之前,先来看看磁盘数据页的存储结构

前面我们已经给大家把MySQL数据库的部分内核原理&#xff0c;更新语句的执行原理&#xff0c;事务原理以及锁原理&#xff0c;都初步的讲给大家听了&#xff0c;同时还穿插了一些相关的数据库性能优化的案例&#xff0c;相信现在大家已经对数据库执行增删改语句的原理有了较为深…

小程序容器与微服务架构:提高应用程序开发效率和部署速度的利器

随着移动互联网的发展&#xff0c;小程序已经成为了一种非常流行的应用方式&#xff0c;它可以在不安装任何应用的情况下&#xff0c;直接在移动终端设备&#xff08;如&#xff1a;App&#xff0c;iPad等&#xff09;中运行。微服务架构则是一种的分布式系统架构&#xff0c;可…

三维数据可视化软件,可视化地图是用什么做的?

可视化地图是用什么做的&#xff1f;数据可视化地图是一种利用空间数据来表现地理信息的方式&#xff0c;能够为人们提供关于地理信息的准确、直观的可视化图形&#xff0c;以便更好地理解相关信息。数据地图可以最直观的表达出数据之间的空间关系&#xff0c;因此在很多数据分…

【组织架构】中国铁路兰州局集团有限公司

1 公司简介 中国铁路兰州局集团有限公司&#xff0c;是中国国家铁路集团有限公司管理的18个铁路局集团有限公司之一&#xff0c;简称“兰局”。经过59年的发展&#xff0c;现已成为西北地区最大的交通运输企业之一&#xff0c;形成了以兰州为枢纽&#xff0c;由陇海铁路、包兰铁…

前端Cookie基础知识

一、简介 ​ Cookie&#xff08;也称为HTTP Cookie、Web Cookie、浏览器 Cookie等等&#xff09;是服务器发送到用户浏览器并保存在本地的一小块数据&#xff0c;该数据通常是用户账号相关的信息&#xff0c;不同浏览器对Cookie的数量和大小限制不同&#xff0c;但一般来说&am…

centos8安装

本文由个人总结&#xff0c;如需转载使用请标明原著及原文地址 1.下载镜像 1.1阿里镜像 可以在阿里云的镜像库里下载&#xff0c;阿里centos8只保留了8.5.2111如果需要别的版本看1.2 http://mirrors.aliyun.com/centos/8/isos/x86_64 1.2其他版本的镜像 下好镜像的可以跳过…

2023年1月京东“白酒”品类销售数据出炉,五粮液表现较好

鲸参谋电商数据监测的2023年1月份京东“白酒”品类销售数据出炉&#xff01; 根据鲸参谋电商数据显示&#xff0c;2023年1月&#xff0c;京东平台上白酒的销量共计980万&#xff0c;环比增长约180%&#xff0c;同比去年增长约13%&#xff1b;销售额将近69亿&#xff0c;环比增长…

2021年全国职业院校技能大赛(中职组)网络安全竞赛试题A(1)

2021年全国职业院校技能大赛&#xff08;中职组&#xff09; 网络安全竞赛试题 &#xff08;1&#xff09; 这里是21的试题就以刷题为主&#xff0c;方法可能就不那么详细&#xff0c;如果是新题会详细过程&#xff0c;其他的详细过程可以看22的试题 目录 2021年全国职业院校…

【LeetCode】Day210-二叉搜索树的后序遍历序列

题目 剑指 Offer 33. 二叉搜索树的后序遍历序列【中等】 题解 二叉搜索树性质&#xff1a;左<根&#xff0c;右>根 后序遍历序&#xff1a;左右根 递归分治 利用递归求解&#xff0c;[ i,j ]区间中找到第一个比根节点大的元素&#xff0c;下标为m&#xff0c;则[i,m…

10月17日|实验报告|paddle paddle|概念辨析

目录 一、安装paddle paddle 第一章 零基础入门深度学习 机器学习和深度学习综述 1.人工智能、机器学习、深度学习的关系 1.1人工智能(Artificial Intelligence,AI) 1.2机器学习 1.2.1机器学习的实现 1.2.2机器学习方法论 1.3深度学习​​​​​​​ 一、安装paddle…

Transformer的位置编码笔记(positional encoding)

一、为什么Transformer需要对输入进行位置编码因为Transformer的输入并没有内涵位置信息&#xff0c;同样的词在不同位置&#xff0c;或者同一个序列以不同顺序输入&#xff0c;对应的词间都会得到相同的注意力权重和输出&#xff0c;但是在NLP领域&#xff0c;词的顺序会极大地…

P20 PyTorch 反向传播算法

前言&#xff1a;反向传播是深度学习的基础核心&#xff0c;如果掌握了这个&#xff0c;其它的模型会很容易理解。这里面结合前面的多层感知机&#xff0c;深入了解一下权重数是如何更新的目录&#xff1a;1: 多层感知机节点间的权重系数更新2&#xff1a; 反向传播的基本思路3…

基于VS Code的插件开发(基础篇)

一、基础介绍 VSCode 采用了 Electron&#xff0c;在语言上&#xff0c;VSCode 使用了自家的 TypeScript 语言开发。Electron是基于 Chromium 和 Node.js&#xff0c;使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用&#xff0c;它兼容 Mac、Windows 和 Linux&#xff0c;…

认识DOM和架构

DOM 代表文档对象模型&#xff0c;是 HTML 和 XML 文档的接口(API)。当浏览器第一次读取(解析)HTML文档时&#xff0c;它会创建一个大对象&#xff0c;一个基于 HTM L文档的非常大的对象&#xff0c;这就是DOM。它是一个从 HTML 文档中建模的树状结构。DOM 用于交互和修改DOM结…

SpreadJS 16.0 中文版在线电子表设计预览EXCEL-Crack

SpreadJS 纯前端表格控件 - V16.0 新特性--内容摘自互联网 新文件结构是 SpreadJS 近几个版本中最为重要的架构级更新。这种新文件结构可以大大提高导入大型 Excel 文件的性能&#xff0c;同时在保存时创建更小、优化更好的文件。 在 V15.0 及更早的版本中&#xff0c;Spread…

android事件分发机制源码分析

没什么用的前言责任链设计模式流程图源码分析 没什么用的前言 事件分发机制是面试中一道必问的题目&#xff0c;而我的应对方式则是&#xff0c;在网络上找一些博客看看&#xff0c;然后做一些笔记&#xff0c;最后在面试时将我自己记住的内容说出来。这种方式本身没有太大的…

Editor工具开发实用篇:EditorGUI/EditorGUILayout的区别和EditorGUILayout的方法介绍

目录 一&#xff1a;EditorGUI和EditorGUILayout区别 二&#xff1a;EditorGUILayout 1.EditorGUILayout.BeginFadeGroup(float value); 2.EditorGUILayout.BeginHorizontal EditorGUILayout.BeginVertical 3.EditorGUILayout.BeginScrollView 4.EditorGUILayout.BeginT…

携手中国联通丨美格智能成为中国联通物联网产业联盟苏州分联盟副理事长单位

2月24日&#xff0c;联通数科物联网2023年巡展活动首场——中国联通物联网生态合作伙伴大会暨中国联通物联网产业联盟苏州分联盟成立仪式在苏州成功举办。本次活动由联通数字科技有限公司、中国联通物联网产业联盟联合主办&#xff0c;江苏省物联网服务协会指导&#xff0c;中国…

MySQL运维篇之日志

01、日志 1.1、错误日志 错误日志是MySQL中最重要的日志之一&#xff0c;它记录了当mysqld启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 该日志是默认开启的&…

微服务之Nacos注册与配置

&#x1f3e0;个人主页&#xff1a;阿杰的博客 &#x1f4aa;个人简介&#xff1a;大家好&#xff0c;我是阿杰&#xff0c;一个正在努力让自己变得更好的男人&#x1f468; 目前状况&#x1f389;&#xff1a;24届毕业生&#xff0c;奋斗在找实习的路上&#x1f31f; &#x1…