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. oracle merge into 新增或者修改

    merge into sn_balance b1 using(select 'admin' as userid,1 as type1 from dual) b2 on(b1.userid=b2.use ...

  2. linux下C调用lua的第一个程序

    linux下C调用lua的第一个程序 linux的环境是Fedora 18,运行在VM workstation中,以开发模式安装,自带了lua 5.1.4,可以在命令行上直接用lua命令进入到lua环 ...

  3. HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法

    HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...

  4. Python--day30--基于tcp协议的套接字socket

    socket 一开始被设计用在一台主机上多个应用程序之间通信. 是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口. 是一个模块,是ip+port,门面模式是一种设计模式. socket通 ...

  5. [转][Linux/Ubuntu] vi/vim 使用方法讲解

    vi/vim 基本使用方法 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的 ...

  6. element-ui tree 根据不同叶子节点设置是否显示复选框

    公司业务要求不同根节点配置显示与否复选框,官方文档没有这样的配置,所以想到了修改element-ui源码. 1.这里将“node_modules\element-ui\packages”下的tree文 ...

  7. 深入理解Jvm--Java静态分配和动态分配完全解析

    jvm中分配Dispatch的概念 分派是针对方法而言的,指的是方法确定的过程,通常发生在方法调用的过程中.分派根据方法选择的发生时机可以分为静态分派和动态分派,其中对于动态分派,根据宗量种数又可以分 ...

  8. Makefile记录

    需要把sum.c编译汇编成可执行程序zzj zzj:sum.o gcc -o zzj sum.osum.o:sum.c gcc -c -o sum.o sum.cclean: rm -rf *.o z ...

  9. Boring Class HDU - 5324 (CDQ分治)

    Mr. Zstu and Mr. Hdu are taking a boring class , Mr. Zstu comes up with a problem to kill time, Mr. ...

  10. Vijos 1206 CoVH之再破难关 [BFS] [位运算]

    1.题意:一个由01组成的4*4的矩阵,可以实现相邻元素交换位置的操作,给出初试状态和目标状态,试求最少操作数的方案: 2.输入输出:输入给出初试矩阵和目标矩阵:要求输出最小操作的次数: 3.分析:输 ...