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;
}

《C++Primer》第五版习题答案--第一章【学习笔记】的更多相关文章

  1. C++PRIMER第五版练习题答案第一章

    C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...

  2. 《C++Primer》第五版习题答案--第二章【学习笔记】

    C++Primer第五版习题解答---第二章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/9 第二章:变量和基本类型 练习2.1: 类 ...

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

    目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS ...

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

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第1章 开始&&第2章 变量和基本类型 练习1.3 #include&l ...

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

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...

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

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第11章 关联容器 练习11.3 #include<iostream> #i ...

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

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...

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

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...

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

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第5章 语句 练习5.9 #include<iostream> #inclu ...

随机推荐

  1. phpStudy本地环境测试,打开网页很慢的解决办法!

    很多人应该都遇到了在使用phpStudy本地环境测试软件时候打开很慢的问题,甚至动辄达到了1000ms以上,开篇直接给出解决办法: 下面给大家介绍phpstudy访问速度慢的解决办法. 1.修改mys ...

  2. Pytorch | BERT模型实现,提供转换脚本【横扫NLP】

    <谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读>,上周推送的这篇文章,全面解读基于TensorFlow实现的BERT代码.现在,PyTorch用户的福利来了:一个名为Huggi ...

  3. TCP/IP模型的层次结构

  4. [转]JavaWeb工程 目录结构

    今天为此事纠结了一段时间. 以下是mavaen推荐的项目目录. ├── pom.xml └── src     ├── main     │   ├── java     │   │   └── my ...

  5. vue-lazyload: 想弃坑,但没有找到合适的替代品

    vue-lazyload,相信在vue项目中大家都有用到过它,同时也遇到过大大小小的坑.笔者也遇到过这样一个bug,在一个图片列表页面中,总有一定的概率图片的状态为load,导致图片一直加载中...这 ...

  6. P1061 最长连号

    题目描述 输入n个正整数,(1<=n<=10000),要求输出最长的连号的长度.(连号指从小到大连续自然数) 输入格式 第一行,一个数n; 第二行,n个正整数,之间用空格隔开. 输出格式 ...

  7. P1037 最小公倍数

    题目描述 给你两个正整数A和B,求它们的最小公倍数. 输入格式 两个正整数 \(A,B(1 \le A,B \le 10^9)\) . 输出格式 一个整数,表示A和B的最小公倍数. 样例输入 6 8 ...

  8. Linux下tomcat启动成功但是Windows打不开tomcat网址

    前提条件: 1.Linux和Windows都可以相互ping通. 2.Linux下tomcat可以启动,并且在Linux下可以访问8080 出现的问题: 当我在Windows下访问时,无法连接或者出现 ...

  9. @RequestBody、@ResponseBody注解是如何将输入输出转换成json的

    @RequestBody.@ResponseBody注解,可以直接将输入解析成Json.将输出解析成Json,但HTTP 请求和响应是基于文本的,意味着浏览器和服务器通过交换原始文本进行通信,而这里其 ...

  10. 2018.11.16 浪在ACM 集训队第五次测试赛

    2018.11.16 浪在ACM 集训队第五次测试赛 整理人:李继朋 Problem A : 参考博客:[1]朱远迪 Problem B : 参考博客: Problem C : 参考博客:[1]马鸿儒 ...