C++ Primer 中文版(第 5 版)-第二单元

第二单元

练习 2.1

通过读下面程序,写出程序运行结果。

#include <iostream>int main()
{unsigned u = 10, u2 = 42;std::cout << u2 - u << std::endl;std::cout << u - u2 << std::endl;int i = 10, i2 = 42;std::cout << i2 - i << std::endl;std::cout << i - i2 << std::endl;std::cout << i - u << std::endl;std::cout << u - i << std::endl;return 0;
}

unsigned 表示无符号整数类型,当从无符号数中减去一个值时,不管这个值是不是无符号数,我们都必须确保结果不能是一个负值。
例如:unsigned u1 = 42,u2=10;
cout<< u1 - u2<< endl;//正确:输出32
cout<< u2 - u1<< endl;//正确:不过,结果是取模后的值
结果u2-u1 = (10-42)+2^32 = 4294967264

32
4294967264
32
-32
0
0
Program ended with exit code: 0
练习 2.2

请利用转义序列编写一段程序,要求先输出 2M,然后转到新一行。修改程序使其先输出 2,然后输出制表符,再输出 M,最后转到新一行。

#include <iostream>int main()
{std::cout << 2 << "\115\012";std::cout << 2 << "\t\115\012";return 0;
}
练习 2.3
const int buf;      // 不合法, const 对象必须初始化
int cnt = 0;        // 合法
const int sz = cnt; // 合法
++cnt; ++sz;        // 不合法, const 对象不能被改变int i = -1, &r = 0;         // 不合法, r 必须引用一个对象
int *const p2 = &i2;        // 合法,常量指针
const int i = -1, &r = 0;   // 合法
const int *const p3 = &i2;  // 合法
const int *p1 = &i2;        // 合法
const int &const r2;        // 不合法, r2 是引用, 引用自带顶层 const, 第二个const写法多余但合法, 但引用需要初始化.
const int i2 = i, &r = i;   // 合法int i, *const cp;       // 不合法, const 指针必须初始化
int *p1, *const p2;     // 不合法, const 指针必须初始化
const int ic, &r = ic;  // 不合法, const int 必须初始化
const int *const p3;    // 不合法, const 指针必须初始化
const int *p;           // 合法. 一个指针,指向 const int
练习 2.4

使用你自己的Sale_data类重写1.5.1节(第20页)、1.5.2节(第21页)和1.6节(第22页)的练习。眼下先把Sales_data类的定义和main函数放在一个文件里。

#include <iostream>
#include <string>struct Sale_data
{std::string bookNo;unsigned units_sold = 0;double revenue = 0.0;
};int main()
{Sale_data book;double price;std::cin >> book.bookNo >> book.units_sold >> price;book.revenue = book.units_sold * price;std::cout << book.bookNo << " " << book.units_sold << " " << book.revenue << " " << price<<std::endl;return 0;
}
// 1.5.2#include <iostream>
#include <string>struct Sale_data
{std::string bookNo;unsigned units_sold = 0;double revenue = 0.0;
};int main()
{Sale_data book1, book2;double price1, price2;std::cin >> book1.bookNo >> book1.units_sold >> price1;std::cin >> book2.bookNo >> book2.units_sold >> price2;book1.revenue = book1.units_sold * price1;book2.revenue = book2.units_sold * price2;if (book1.bookNo == book2.bookNo){unsigned totalCnt = book1.units_sold + book2.units_sold;double totalRevenue = book1.revenue + book2.revenue;std::cout << book1.bookNo << " " << totalCnt << " " << totalRevenue << " ";if (totalCnt != 0)std::cout << totalRevenue / totalCnt << std::endl;elsestd::cout << "(no sales)" << std::endl;return 0;}else{std::cerr << "Data must refer to same ISBN" << std::endl;return -1;  // indicate failure}
}
// 1.6#include <iostream>
#include <string>struct Sale_data
{std::string bookNo;unsigned units_sold = 0;double revenue = 0.0;
};int main()
{Sale_data total;double totalPrice;if (std::cin >> total.bookNo >> total.units_sold >> totalPrice){total.revenue = total.units_sold * totalPrice;Sale_data trans;double transPrice;while (std::cin >> trans.bookNo >> trans.units_sold >> transPrice){trans.revenue = trans.units_sold * transPrice;if (total.bookNo == trans.bookNo){total.units_sold += trans.units_sold;total.revenue += trans.revenue;}else{std::cout << total.bookNo << " " << total.units_sold << " " << total.revenue << " ";if (total.units_sold != 0)std::cout << total.revenue / total.units_sold << std::endl;elsestd::cout << "(no sales)" << std::endl;total.bookNo = trans.bookNo;total.units_sold = trans.units_sold;total.revenue = trans.revenue;}}std::cout << total.bookNo << " " << total.units_sold << " " << total.revenue << " ";if (total.units_sold != 0)std::cout << total.revenue / total.units_sold << std::endl;elsestd::cout << "(no sales)" << std::endl;return 0;}else{std::cerr << "No data?!" << std::endl;return -1;  // indicate failure}
}
练习 2.5

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

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

相关文章

论文阅读_使用有向无环图实现流程工程_AgentKit

英文名称: AgentKit: Flow Engineering with Graphs, not Coding 中文名称: AgentKit&#xff1a;使用图而非编码进行流程工程 链接: https://arxiv.org/pdf/2404.11483.pdf 代码: https://github.com/holmeswww/AgentKit 作者: Yue Wu, Yewen Fan, So Yeon Min, Shrimai Prabh…

Julia 语言环境安装与使用

1、Julia 语言环境安装 安装教程&#xff1a;https://www.runoob.com/julia/julia-environment.html Julia 安装包下载地址为&#xff1a;https://julialang.org/downloads/。 安装步骤&#xff1a;注意&#xff08;勾选 Add Julia To PATH 自动将 Julia 添加到环境变量&…

ollama + autogen排雷

语法&#xff1a;<abc>代表参数&#xff0c;实际输入为具体的名字&#xff0c;不需要输入<> 注意&#xff1a;当前雷可能随着版本迭代更新掉 1、litellm -model ollama/<model> 启动后的url为&#xff1a;http://0.0.0.0:<port>&#xff0c;实际调用…

实用 Linux 操作指令

实用 Linux 操作指令 Linux 命令行提供了强大的功能&#xff0c;可以通过一系列指令轻松管理系统、文件和网络。以下是一些常用的 Linux 操作指令&#xff0c;涵盖文件管理、系统监控、网络配置等方面。 一、文件管理 显示当前目录&#xff1a; pwd列出目录内容&#xff1a; …

薪酬激励策略:留住企业核心人才的关键

在竞争激烈的商业环境中&#xff0c;企业为了保持竞争力和市场地位&#xff0c;必须高度重视人才的管理和发展。企业的核心人才是推动企业发展的关键因素&#xff0c;因此&#xff0c;如何有效地激励和留住这些核心人才&#xff0c;成为企业持续发展的关键之一。薪酬激励策略作…

C语言 函数的嵌套与递归 调用

本文 我们来说函数的嵌套调用和递归调用 在很多大型项目中 我们肯定不可能将所有逻辑都写在一个函数中 肯定要按功能拆解成多个特定的功能函数 函数并不允许嵌套调用&#xff0c;但是 允许在逻辑代码中嵌套调用 所谓函数嵌套调用 就是在一个函数中调用另一个函数&#xff0c;而…

【计算机毕业设计】基于SSM++jsp的菜匣子优选系统【源码+lw+部署文档+讲解】

目录 第一章 绪 论 第二章 关键技术的研究 2.1 JSP技术介绍 2.2 JAVA简介 2.3 ECLIPSE 开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第三章 系统分析 3.1 系统设计目标 3.2 系统可行性分析 3.3 系统功能分析和描述 3.4系统UML用例分析 3.4.1管理员用例 3.4.2用户用例 3.5系统流…

C语言 计数控制循环

今天 我们来说 计数控制的循环 对于循环次数 我们已知的循环 我们称之为 计数控制的循环 这种情况 我们一般选择 for来实现 更为方便 先看一个案例 求 1 到 N 的累加合 我们代码可以这样写 #define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告 #pragma warning(disable:6031…

python中flask使用简要记录

文档层级概要 一、flask简要说明 二、uwsgi配置说明 三、启动 四、结果验证 之前有做过接口&#xff0c;后来写了许多算法和数据处理&#xff0c;对于接口大多时候是通过fastapi或调别人的接口。自己写的接口倒是没有多少。在这里使用uwsgi和flask及nginx进行配置&#xf…

[链表专题]力扣LCR077, 83

1. LCR077 : 排序链表 题 : 给定链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。示例 1&#xff1a;输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a;输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,…

信创基础硬件之芯片

信创基础硬件之芯片 文章目录 信创基础硬件之芯片服务器服务器的定义服务器的功能服务器的构成服务器的性能 处理器&#xff08;CPU&#xff09;CPUGPUDPU CPU的分类按CPU指令集架构分类按CPU体系架构分类 CPU产业链六大国产CPU公司详解海光飞腾鲲鹏兆芯龙芯申威 国产CPU对比从…

Linux网络编程:TCP编程实现

目录 1、前言 2、函数介绍 2.1 socket函数 与 通信域 2.2 bind函数 与 通信结构体 2.2.1 domain通信地址族 与 通信结构体 2.2.2 IPv4地址族结构体 2.2.3 通用地址族结构体 2.2.4 示例&#xff1a;为套接字fd绑定通信结构体addr 2.3 listen函数 与 accept函数 …

了解外汇询价和锁价,全球交易中的关键概念

外汇市场是全球交易量最大的金融市场之一&#xff0c;每天都有大量的货币买卖活动。在外汇交易中&#xff0c;询价和锁价是两个关键概念&#xff0c;它们不仅影响交易者的决策&#xff0c;还关系到交易的成本和风险控制。为了帮助交易者更好地理解和应用这两个概念&#xff0c;…

Java中ArrayList、LinkedList和Vector的底层原理

ArrayList Java中的ArrayList底层原理主要涉及其数据结构、扩容机制、线程安全性以及元素存储和访问方式。以下是对ArrayList底层原理的总结&#xff1a; 数据结构 ArrayList的底层数据结构是一个动态数组。这意味着ArrayList可以根据需要自动增长其容量&#xff0c;从而存储…

Linux课程机房虚拟机

Linux课程机房虚拟机 机房虚拟机&#xff08;默认不能联网的&#xff09;&#xff1a; 百度网盘&#xff1a;https://pan.baidu.com/s/1WqSvqB3Y7b_D4690CDBlJA?pwdaugc 123网盘&#xff1a;https://www.123pan.com/s/tQ0UVv-LiolA.html提取码:F4xm ‍ 联网使用说明&…

小trick

https://codeforces.com/gym/105104/problem/C const int N 1e6 10;int T, n, x; ull v[N];int main() {mt19937_64 rng(random_device{}()); // 注意这种生成随机数的方法&#xff01;&#xff01;&#xff01;F(i, 0, N - 10)v[i] rng();for (R(T); T --; ) {R(n);map &…

设计模式——观察者模式(Observer)

观察者模式&#xff08;Observer Pattern&#xff09;是软件设计模式的一种&#xff0c;也被称为模型-视图模式、源-收听者模式或从属者模式。它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。当主题对象状态发生变化时&#xff0c;它的所有…

笔记2:cifar10数据集获取及pytorch批量处理

&#xff08;1&#xff09;cifar10数据集预处理 CIFAR-10是一个广泛使用的图像数据集&#xff0c;它由10个类别的共60000张32x32彩色图像组成&#xff0c;每个类别有6000张图像。 CIFAR-10官网 以下为CIFAR-10数据集data_batch_*表示训练集数据&#xff0c;test_batch表示测试…

分成互质组

题目描述: 给定 n 个正整数&#xff0c;将它们分组&#xff0c;使得每组中任意两个数互质。 至少要分成多少个组&#xff1f; 输入格式 第一行是一个正整数 n。 第二行是 n 个不大于10000的正整数。 输出格式 一个正整数&#xff0c;即最少需要的组数。 #include<iostream…

DDR5和LPDDR4/5 命令解析

关键名称介绍 DDR5 SDRAM和LPDDR4/5都采用了高级的命令集来支持更高效的内存管理和操作,其中“Multi-purpose command (MPC)”、“Mode Register Read (MRR)”、“Mode Register Write (MRW)”,以及“Write Pattern Command”是几种关键的命令类型,它们在内存初始化、配置和…