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

C++ Primer Plus(第六版)第四章编程练习答案 1. 编写一个C++程序,如下述输出示例所示的那样请求并显示信息: What is your first name? Beety Sue What is your last name? Yewe What letter grade do you deserve? B What is your age? 22 Name: Yewe, Betty Sue Grade: C ... 阅读详情

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

1. 输出所示请求并显示

编写一个C++程序,如下述输出示例所示的那样请求并显示信息:

What is your first name? Betty Sue
What is your last name? Yewe
What letter grade do you deserve? B
What is your age? 22
Name: Yewe, Betty Sue
Grade: C
Age: 22

注意,该程序应该接受的名字包含多个单词。另外,程序将向下调整成绩,即向上调一个字母。假设用户请求A、B或C,所以不必担心D和F之间的空档。

代码:

#include <iostream>
using namespace std;
int main()
{
    char firstName[20];
    char lastName[20];
    char grade;
    int age;

    cout << "What is your first name? ";
    cin.getline(firstName, 20);
    cout << "What is your last name? ";
    cin.getline(lastName, 20);
    cout << "What letter grade do you deserve? ";
    grade = getchar();
    cout << "What is your age? ";
    cin >> age;

    cout << "Name: " << lastName << ", " << firstName << endl;
    cout << "Grade: " << char(grade + 1) << endl;
    cout << "Age: " << age << endl;

    system("pause");
    return 0;
}

2. 修改程序清单4.4,使用C++ string类而不是char数组。

修改程序清单4.4,使用C++ string类而不是char数组。

代码:

#include <iostream>
#include <string>
int main()
{
    using namespace std;
    string name;
    string dessert;

    cout << "Enter your name:\n";
    getline(cin, name);
    cout << "Enter you favorite dessert:\n";
    getline(cin, dessert);
    cout << "I have some delicious " << dessert;
    cout << " for you, " << name << ".\n";

    system("pause");
    return 0;
}

3. 使用char数组显示名字

编写一个程序,它要求用户首先输入其名,然后输入其姓;然后程序使用一个逗号和空格将姓和名组合起来,并存储和显式组合结果。请使用char数组和头文件cstring中的函数。下面是该程序运行时的情形:

Enter your first name: Flip
Enter your last name: Fleming
Here’s the information in a single string: Fleming, Flip

代码:

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    char firstName[20];
    char lastName[20];
    char information[50];
    cout << "Enter your first name: ";
    cin.getline(firstName, 20);
    cout << "Enter your last name: ";
    cin.getline(lastName, 20);

    strcpy(information, lastName);
    strcat(information, ", ");
    strcat(information, firstName);

    cout << "Here's the information in a single string: " << information << endl;

    system("pause");
    return 0;
}

4. 使用string类显示名字

编写一个程序,它要求用户首先输入其名,然后输入其姓;然后程序使用一个逗号和空格将姓和名组合起来,并存储和显式组合结果。请使用string对象和头文件string中的函数。

下面是该程序运行时的情形:

Enter your first name: Flip
Enter your last name: Fleming
Here’s the information in a single string: Fleming, Flip

代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string firstName, lastName;
    string information;

    cout << "Enter your first name: ";
    getline(cin, firstName);
    cout << "Enter your last name: ";
    getline(cin, lastName);
    
    information = firstName+", "+lastName;
    cout << "Here's the information in a single string: " << information << endl;

    system("pause");
    return 0;
}

5. 结构CandyBar

结构CandyBar包含3个成员。第一个成员存储了糖块的品牌;第二个成员存储糖块的重量(可以有小数);第三个成员存储了糖块的卡路里含量(整数)。请编写一个程序,声明这个结构,创建一个名为snack的CandyBar变量,并将其成员分别初始化为“Mocha Munch”、2.3和350。初始化应在声明snack时进行。最后,程序显示snack变量的内容。

代码:

#include <iostream>
using namespace std;

struct CandyBar
{
    char brand[20];
    double weight;
    int calorie;
};

int main()
{
    CandyBar snack = {"Mocha Munch", 2.3, 350};

    cout << "The name of this CandyBar is: " << snack.brand << endl;
    cout << "The weight of this CandyBar is: " << snack.weight << endl;
    cout << "The calories of this CandyBar is: " << snack.calorie << endl;

    system("pause");
    return 0;
}

6. CandyBar结构数组

结构CandyBar包含3个成员,如编写练习5所示。请编写一个程序,创建一个包含3个元素的CandyBar数组,并将它们初始化为所选择的值,然后显示每个结构的内容。

代码:

#include <iostream>
using namespace std;

struct CandyBar
{
    char brand[20];
    double weight;
    int calorie;
};

int main()
{
    CandyBar snack[3] = {
        {"Mocha Munch", 2.3, 350},
        {"Month Date", 3.6, 400},
        {"XuFuJi", 5.2, 300},
    };
    
    for (int i = 0; i < 3; i++)
    {
        cout << snack[i].brand << "'s weight is " << snack[i].weight << ", and it includes " << snack[i].calorie << " calories.\n";
    }

    system("pause");
    return 0;
}

7. pissa结构体

William Wingate从事比萨饼分析服务。对于每个披萨饼,他都需要记录下列信息:

  • 披萨饼公司的名称,可以有多个单词组成。
  • 披萨饼的直径。
  • 披萨饼的重量。

请设计一个能够存储这些信息的结构,并编写一个使用这种结构变量的程序。程序将请求用户输入上述信息,然后显示这些信息。请使用cin(或它的方法)和cout。

代码:

#include <iostream>
using namespace std;

struct Pizza
{
    char company[20];
    double diameter;
    double weight;
};

int main()
{
    Pizza pizza;
    
    cout << "Enter the company name of this pizza: ";
    cin.getline(pizza.company, 20);
    cout << "Enter the diameter of this pizza: ";
    cin >> pizza.diameter;
    cout << "Enter the weight of this pizza: ";
    cin >> pizza.weight;

    cout << "The company name of this pizza: " << pizza.company << endl;
    cout << "The diameter of this pizza: " << pizza.diameter << endl;
    cout << "The weight of this pizza: " << pizza.weight << endl;

    system("pause");
    return 0;
}

8. 对第七题的pissa结构体使用new

完成编程练习7,但使用new来为结构分配内存,而不是声明一个结构变量。另外,让程序在请求输入披萨饼公司名称之前输入披萨饼的直径。

代码:

#include <iostream>
using namespace std;

struct Pizza
{
    char company[20];
    double diameter;
    double weight;
};

int main()
{
    Pizza *pizza = new Pizza;

    cout << "Enter the diameter of this pizza: ";
    // cin >> (*pizza).diameter;
    cin >> pizza->diameter;
    // 使用不带任何参数的cin.get()调用可读取下一个字符
    cin.get();
    cout << "Enter the company name of this pizza: ";
    // cin.getline((*pizza).company, 20);
    cin.getline(pizza->company, 20);
    cout << "Enter the weight of this pizza: ";
    // cin >> (*pizza).weight;
    cin >> pizza->weight;

    cout << "The company name of this pizza: " << (*pizza).company << endl;
    cout << "The diameter of this pizza: " << (*pizza).diameter << endl;
    cout << "The weight of this pizza: " << (*pizza).weight << endl;

	delete pizza;	

    system("pause");
    return 0;
}

9. 对第六题使用new

完成编程练习6,但使用new来动态分配数组,而不是声明一个包含3个元素的CandyBar数组。

代码:

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

struct CandyBar
{
    string brand;
    double weight;
    int calorie;
};

int main()
{
    CandyBar *snack = new CandyBar[3];
    snack[0] = {"Mocha Munch1", 2.3, 350};
    snack[1] = {"Mocha Munch2", 2.5, 360};
    snack[2] = {"Mocha Munch3", 2.7, 390};

    for (int i = 0; i < 3; i++)
    {
        cout << snack[i].brand << "'s weight is " << snack[i].weight << ", and it includes " << snack[i].calorie << " calories.\n";
    }

    delete[] snack;

    system("pause");
    return 0;
}

问题:结构体CandyBar中,若string brand换成char brand[20],则程序报错。

在这里插入图片描述

错误信息:

no match for 'operator=' (operand types are 'CandyBar' and

如果你知道原因的话,欢迎在评论里解答!

10. 40米跑分数

编写一个程序,让用户输入三次40码跑的成绩(如果您愿意,也可让用户输入40米跑的成绩),并显示次数和平均成绩。请使用一个array对象来存储数据(如果编译器不支持array类,请使用数组)。

代码:

#include <iostream>
#include <array>
using namespace std;
int main()
{
    const int time = 3;
    array<double, time> grade;
    double average = 0.0;

    cout << "Enter your grade for " << time << " times: ";
    for (int i = 0; i < 3; i++)
    {
        cin >> grade[i];
        average += grade[i] / time;
    }

    cout << "The average grade of " << time << " times is " << average << endl;

    system("pause");
    return 0;
}
C++编程最基础练习题(1-10) 小白入门必刷 50道C++编程练习题 小白记录学习C++的过程~ 阅读详情

相关推荐

【C语言】编程题专项练习+答案

这种方法应该注意的是当我们拿到一个大于等于10的数时候,我们应该转化成A~F,在上面的代码中我们是要把数字字符转化成字符A~F,因此应该判断当前数字字符是否大于字符10,但是判断条件不能写>='10'而应该写成>'9',这是因为在C语言中'10'会被认为是一个多字符常量,他的ASCII码值并不是‘9’的ASCII码值+1,我们可以通过写一个代码打印他们两个的ASCII码来观察。这个函数定义在头文件 中。检查字符串str2是否为str1的子串,如果是,返回子串在str1中的位置,如果不是,返回NULL。

2301_76771985的博客 5022

编程 100个训练题目

38.已知二维数组 a 为{ 23,11,34,12, 3,9,15,80, 1,3,5,7, 12,8,6,95},求矩阵中的最小值。21.有一数列:2/1, 4/3, 6/7, 8/13, 10/21 ,12/31,…33.已知数组 a 为{3,7,12,26,30,38,51,60,79,101},现要求编程完成如下功能:从键盘输入一个数,,设计一个程序,输入 x,通过累加所有绝对值。润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可。

laocooon的博客 9980

C++ Primer Plus 第6版 第9章 编程练习答案

1. 编写三个文件 注意:记得运用C风格字符串函数:strcpy()、strcmp(),以及如何比较字符串和空字符串。 // golf.h -- for pe9-1.cpp const int Len = 40; struct golf { char fullname[Len]; int handicap; }; // 重载形式1:输入并设置结构golf中的参数,无返回值,非交互形式 void setgolf(golf& g, const char* name, int hc); /

Anna_L的博客 438

C语言基础编程练习(精选例题+题解)

目录 1.求最大公约数和最小公倍数 2.打印图形 3.质数因子 4.数字排序 5.十进制数转换为八进制数(进制转换) 6.寻找完数 1.求最大公约数和最小公倍数 题目描述:输入两个正整数m和n,求其最大公约数和最小公倍数。 输入:输入为一行,包括两个数字,以空格隔开。 输出:输入应为两行,第一行为最大公约数,第二行为最小公倍数。 样例输入: 2 3 样例输出: 1 6 解题思路: 1.求最大公约数时,先找出输入的两个数中小的那一个,从该数开始,依次-1,判断..

qq_58284486的博客 3万+

C++ Primer Plus(第六版)编程练习答案 第14章 C++中的代码重用

本章所有编程练习的工程源码可在此处下载(点击此链接下载),供大家参考交流! 1. Wine类有一个string类对象成员(参见第4章)和一个Pair对象(参见本章);其中前者用于存储葡萄酒的名称,而后者有2个valarray&lt;int&gt;对象(参见本章),这两个valarray&lt;int&gt;对象分别保存了葡萄酒的酿造年份和该年生产的瓶数。例如,Pair的第1个valarray&l...

清水河C罗——Leonardo-Liu 3768

C++ Primer Plus(第六版)编程练习答案 所有章节汇总

本博客汇总了本人历时一年学完《C++ Primer Plus (第6版)》所做的所有编程练习的答案,供大家学习参考和交流。 以下附上各章节的答案详解博客地址,以及源码工程下载地址。 PS:源码下载大部分都是需要积分的,当时设置的时候好像有点乱,有的是1积分,有的是3积分,最难的第12章和第13章我设置的是不要积分,大家都可以下载下来自己运行一下看看结果。 第 2 章 开始学习C++: ...

清水河C罗——Leonardo-Liu 4万+

C++ Primer Plus 第6版 中文版 第4章编程练习

1、#include using namespace std; int main() { char firstName[30]; char lastName[30]; char grade; int age; cout << "What is your first name? "; cin.getline(firstName, 30);

PeterPan_hai的专栏 555

C++ Primer Plus(第六版)编程练习答案 第3章 处理数据

本章所有编程练习的工程源码可在此处下载(点击打开下载链接),供大家参考交流!   1. 编写一个小程序,要求用户使用一个整数指出自己的身高(单位为英寸),然后将身高转换为英尺和英寸,该程序使用下划线字符来指示输入位置。另外,使用一个const符号常量来表示转换因子。 本题要求将输入数据转换为不同的表达方式,使用不同的单位。而从单位为英寸,转换为英单位是尺和英寸,就是将原值除以转换比例之间,得...

清水河C罗——Leonardo-Liu 7498

C++ Primer Plus 第6版 第4章 编程练习答案

1. 编写一个程序,如下述输出示例形式请求并显示信息: 程序将向下调整成绩,即向上条一个字母。假设用户请求A、B或C,所以不用担心D和F之间的空挡。 What is your first name? Betty Sue What is your last name? Yewe What letter grade do you deserve? What is your age? 22 Name: Yewe, Betty Sue Grade: C Age: 22 // 4-1 #...

Anna_L的博客 339

C++ Primer Plus(第六版)编程练习答案 第8章 函数探幽

本章所有编程练习的工程源码可在此处下载(点击打开下载链接),供大家参考交流!   1. 编写通常接受一个参数(字符串的地址),并打印该字符串的函数。然而,如果提供了第二个参数(int类型),且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数(注意,字符串的打印次数不等于第二个参数的值,而等于函数被调用的次数)。是的,这是一个非常可笑的函数,但它让您能够使用本章介绍的一些技术。在一个...

清水河C罗——Leonardo-Liu 5710

C++ Primer Plus(第6版)编程练习答案——第4-9章

程序集中在一起,每次切换main函数中的test即可。PS:自学C++,如有疑问欢迎一起讨论。

life_007的博客 545

编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习4

#include <iostream> using namespace std; const int strsize=30; const int BOPSIZE=5; void showmenu() { cout<<"Benevolent Order of Programmers Report\n" "a. display by name ...

weixin_30371469的博客 121

别再死记硬背HJB方程了!用Python数值求解一个简单最优控制问题(附完整代码)

本文通过Python数值求解Hamilton-Jacobi-Bellman(HJB)方程,帮助读者从工程实践角度理解最优控制问题。教程涵盖从建立简单车辆控制模型到离散化HJB方程、实现值迭代算法及可视化结果的完整流程,适合具备Python基础的开发者学习。

weixin_42520796的博客 371

C++Primer Plus (第6版)中文版 第2章 2.7 编程练习 第4题

#include &lt;iostream&gt; using namespace std; // 编写一个程序,让用户输入其年龄,然后显示该年龄包含多少个月,如下所示:Enter your age:29 int ageToMonth(int); //声明调用函数原型 int main(){ int age,months; cout&lt;&lt;"Enter your age...

qq_38428822的博客 230

DJI O2协议物理层逆向工程解析:揭开无人机通信的神秘面纱

DJI的O2协议是其OcuSync传输技术的最新演进,应用于Mini 2、Mavic Air 2、Mavic Air 2s和Mavic 3等无人机模型。这种协议结合了多种先进无线通信技术,能够在远距离提供稳定可靠的低延迟连接。O2协议物理层(PHY)是OSI模型的最底层,负责在物理媒介上传输原始数据比特流。它定义了电气特性、调制方式、编码方案、数据传输速率和同步机制等。DJI O2协议的物理层逆向工程是一个复杂但极具价值的领域。

QQ_778132974的博客 2385

硬件测试实战笔记:SI/PI 到底测什么,怎么测?一文讲清

点选错了,数据越精确越误导。

qq_52293640的博客 244

c++ primer plus 第六版第十八章编程练习

18.1 //main.cpp #include&lt;iostream&gt; #include&lt;initializer_list&gt; using namespace std; template&lt;typename T&gt; double average_list(initializer_list&lt;T&gt;i1) { int count = 0; double s...

Schlangemm的博客 388

MetaGPT核心模块:Data Interpreter 上手实战 - 数据分析和可视化(附运行过程详解)

上篇文章我们详细解读了 DataInterpreter 的实现原理(论文),本文将开始上手实操,开始写代码用上 DataInterpreter。从最简单的例子开始,先给大家看下其运行过程,看下DataInterpreter是如何自动拆解任务,完成任务的,帮助大家构建直观认识。

同学小张的博客 371

C++ primer plus 第六版 第四章 编程练习答案

第四章 编程练习答案 1. #include&amp;lt;iostream&amp;gt; int main() { using namespace std; cout &amp;lt;&amp;lt; &quot;What is your first name? &quot;; char firstname[20]; cin.getline(firstname, 20);//输入字符串 c...

菜鸡harry的博客 927

3.7 改造模型:为GPT添加一个分类头(Classification Head)

本文介绍如何改造GPT模型用于文本分类任务。主要内容包括: 分类头设计思路:GPT作为语言模型需要添加分类头才能适应分类任务,类似于为语言大师添加裁判功能。 序列表示选择策略: 分析三种常见方法(CLS标记、平均池化、最后词元表示) 推荐使用最后词元表示,因其最能反映GPT的单向信息流特性 代码实现: 构建GPT2ForSequenceClassification类 包含预训练GPT主体和线性分类头 使用attention_mask智能定位句子结尾 通过高级索引提取最后词元特征 该方法通过简单改造使GPT模

yonggeit的博客 2966

AI智能体丨使用Coze一键生成道教国学智慧语录视频,涨粉快好变现!(附保姆级教程)

该教程详解如何通过自动化流程批量制作道家国学视频,将晦涩哲理转化为轻量化内容,适配短视频平台需求。

李同学Lino的博客 3498

关于“C++primer plus第六版课后编程题答案”18章的说明

由于编译器dui

roaylchen的博客 1675

诊断测试工具CANoe.DiVa从入门到精通系列——开门见山

### 工具主要用于测试ECU的诊断功能。关于自动化诊断测试可以分为如下内容: ### -> 1、根据诊断需求规范进行cdd文件的编辑(现阶段主要是诊断问卷调查表); ### -> 2、新建Diva工程,导入对应的诊断数据库文件生成测试用例; ### -> 3、新建CANoe工程,导入CANoe.DiVa生成的Diva工程; ### -> 4、根据测试报告进行错误处理。

Soly_kun的博客 3544

C++Primer Plus第6版&C Primer Plus第6版 中文版免费分享啦

最近在学习C++,用的资料是师兄分享的经典书籍《C++Primer Plus第6版中文版》的PDF,自带书签,使用很方便。但师兄说这个是他在网上花了积分才下载下来的,这让我很是吃惊,因为作为一本经久不衰的经典书籍,这样的资料不应该有很多网友免费分享出来方便大家学习嘛。 本着知识分享学习的思想,我特意找了对应的C语言版,两本资料一起分享给有需要的朋友。 1.C++Primer Plus第6版简介 ...

qq_41590635的博客 4万+

华为面试手撕真题【求1-n的最小公倍数】

求1-n的最小公倍数

MISAYAONE的博客 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++ Primer Plus 第六版 所有章节课后编程练习答案

C++ Primer Plus 第六版 所有章节课后编程练习答案

xiaojimmychen的专栏 9万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: C++的4种管理数据内存的方式
下一篇: 《工程伦理与学术道德》之《工程活动中的环境伦理》
UestcXiye
博客等级 码龄8年 9027粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值