c++ primer第五版(中文)习题答案 第一章-开始
来源:互联网 发布:网龙网络 编辑:程序博客网 时间:2024/05/17 00:53
本博客知识记录自己学习中的笔记或者记录,如果有错误欢迎大家纠正。
写完第十章习题,开始从头开始,把前面的习题全部完成,书也顺序看下去。
习题解答
1.1 查阅你使用的编译器的文档,确定它所使用的文件命名约定,编译并运行main程序。
我使用的编译器为visio studio2013 读者使用其他的编译器也是可以的只要能支持 c++11即可。
int main(){ return 0;}
比较简单,就不显示结果
1.2改写程序,让它返回-1,返回-1通常被当作程序错误的标识。重新编译运行你的程序,观察你的系统如何处理main返回的错误标识。
返回-1 和返回0 ,在单个函数中没看出有什么区别,系统也不会做什么处理。
1.3 编写程序,在标准输出上打印 hello,World。
#include<iostream>int main(){ std::cout<<"hello,World"<<std::endl; return 0;}
1.4:我们程序使用加法运算符+来讲两个数相加,编写程序使用乘法运算*,来打印两个数的积。
#include<iostream>int main(){ int v1 = 0; int v2 = 0; 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; int v2 = 0; 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; <<"and"<<v2; <<"is"<<v1*v2<<std::endl;
如果程序合法,它输出什么,如果不合法,原因何在。
不合法 ,因为没有输出流
改正如下
std::cout<<"the sum of"<<v1; std::cout<<"and"<<v2; std::cout<<"is"<<v1*v2<<std::endl;
1.7编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。
int main(){ /* /* */ */ return 0;}
输出结果编译错误 :在注释外找到“*/”
1.8指出下列输出语句那些是合法的(如果有的话)
std::cout<<"/*";std::cout<<"*/";std::cout<</*"*/"*/;std::cout<</*"*"/*"*/"*/;
//预测编译这些语句会产生什么样的结果,实际编译这些语句来验证你的答案(编写一个小程序,每次将一条语句作为其主体)改正每个编译错误。
第一二个能正确编译并运行输出结果。
第三四个不能通过编译,可以改正为如下
std::cout <
int main(){ int i = 50; int sum = 0; while (i<=100) { sum = sum + (i++); } //for版本 int sum1 =0; for(int i = 50 ;i<=100;i++) { sum1 +=i; } std::cout << sum << std::endl; system("pause"); return 0;}
输出结果 为3825
1.10除了++运算符将运算对象的值加1之外,还有一个递减运算符–实现将值减一,编写程序,使用递减运算符在循环中按递减顺序打印出10到0的整数。
#include <iostream>int main(){ int i = 10; //设定初始值 while (i>=0) { std::cout << i << std::endl; i--; } //for版本 for (inti=10;i>=0;i--) { std::cout << i << std::endl; i--; } //暂停程序运行 system("pause"); return 0;}
1.11 编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数。
#include <iostream>int main(){ int num1=0,num2=0; std::cout << "input two numbers " << std::endl; //从输入流中得到输人的两个数并分别赋值给num1和num2 std::cin >> num1 >> num2; //使用三目运算符 从num1和num2中得到最小数 int minnum = num1 < num2 ? num1 : num2; int n = minnum; //保存最小数 //num1 + num2 - n 得到最大数 不用再比较一次 while (minnum <= num1 + num2 - n) { std::cout << minnum << std::endl; minnum++; } //for版本 for(int k = minum;minnum<=num1 + num2 - n;minnum++) { std::cout << minnum << std::endl; } system("pause"); return 0;}
1.12下面for循环完成了什么功能,sum的终值是多少?
int sum= 0;for(int i=-100;i<=100;i++) sum + =i;
循环完成,从[-100,100]之间的数和相加 ,sum的值为0.
1.13使用for循环重做1.1.4节的所有练习。
在上面
1.14 对比for循环和while循环,两者的优缺点各式什么;
for:循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。
while:循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)
1.15编写程序,包含第14页“再探编译”中讨论的常见错误。熟悉编译器错误信息
这个自己调试就好了,不贴结果。
1.16 编写程序从cin读取一组数,输出其和。
#include <iostream>int main(){ int n=0,sum=0; while (std::cin>>n) { sum = sum + n; } std::cout << "the numbers sum is:"<<sum << std::endl; system("pause"); return 0;}
输出结果为:
1.17 如果输入的所有值都是相等的,本节程序输出什么,如果没哟重复的输出什么?
如果所有值相等输出的 为输入元素的个数
如果所有值不重复输出为每个元素个数为一
1.18编译并运行本节程序,给他输入全部相等的值,再次运行程序,输入没有重复的值。
执行编译运行,这里不贴结果。
1.19 修改你为1.4.1节练习1.10所编写的程序,打印一个范围内的数,使其能处理用户输入的第一个数比第二个数小的情况。
1.20在网站http://www.informit.com/title/0321714113上,第一章的代码目录中包含了头文件Sales_item.h,将他拷贝到你自己的工作目录中,用它编写一个程序,读取一组书籍记录,将每条记录打印在标准输出上。
#include <iostream>#include "Sales_item.h"int main(){ Sales_item item; while (std::cin>>item) std::cout << item; system("pause"); return 0;}
输出如下
1.21,编写程序,读取两个isbn相同的sales_item对象,输出他们的和
#include <iostream>#include "Sales_item.h"int main(){ Sales_item item1,item2; //这里并没有判断isbn是否相等 while (std::cin>>item1>>item2) std::cout << item1+item2; system("pause"); return 0;}
输出结果如下
1.22 编写程序,读取具有多个相同isbn的销售记录,输出所有记录之和
#include <iostream>#include "Sales_item.h"int main(){ Sales_item itemSum,item; //先保存第一个 不然会出错 std::cin >> itemSum; //然后输入 while (std::cin >> item) itemSum += item; //并没有判断是否相同isbn std::cout << itemSum; system("pause"); return 0;}
输出如下:
1.23编写程序,读取多条销售记录,并统计每个isbn有几条销售记录。
#include <iostream>#include "Sales_item.h"int main(){ Sales_item currItem,nextItem; int number = 1; std::cin >> currItem; while (std::cin >> nextItem) if (currItem.isbn() == nextItem.isbn()) { number++; currItem = nextItem; } else { std::cout << currItem.isbn() << " has sold note " << number << std::endl; number = 1; currItem = nextItem; } //输出最后一条std::cout << currItem.isbn() << " has sold note " << number << std::endl; system("pause"); return 0;}
输出如下:
1.24:输入表示多个isbn的多条销售记录来测试上一个程序,每个isbn的记录应该聚在一起。
在不使用数组或容器的情况下 ,不太理解怎么做到,能把每个isbn合并。
1.25 借助网上的Sales_item.h头文件,编译并运行本节给出的书店程序
读者自行编译运行。
在编写上面的程序中,尽量只用到本章节及前面章节所学到的知识,而不是使用 后面学到的如容器 数组等等其他编写,处理数据。
- c++ primer第五版(中文)习题答案 第一章-开始
- C++ c++ primer第五版(中文)习题答案 第一章
- C++Primer第五版 第一章习题答案(部分)
- C++Primer中文(第五版)习题答案(英文)
- C++Primer(第五版) 习题答案
- C++Primer 第五版 (课本习题答案)
- C++Primer第五版(习题答案详解)
- c++primer第五版课后练习答案(第一章)
- C++Primer 中文版 第五版 第五章课后习题答案
- c++ primer(第五版)学习笔记及习题答案代码版(第一章)
- C++Primer第五版 第五章习题答案(1~10)
- C++Primer第五版 第五章习题答案(11~20)
- C++Primer第五版 第五章习题答案(21~25)
- C++Primer 中文版 第五版 第二章课后习题答案
- C++Primer 中文版 第五版 第三章课后习题答案
- C++Primer 中文版 第五版 第四章课后习题答案
- C++Primer 中文版 第五版 第六章课后习题答案
- C++Primer 中文版 第五版 第七章课后习题答案
- Android基础入门教程——8.3.4 Paint API之—— Xfermode与PorterDuff详解(一)
- ios深度解析之Swift(基本数据类型)
- HVM的缓存与内存控制
- Handler的原理-----源码剖析
- 下载ABIDE,GITHUB
- c++ primer第五版(中文)习题答案 第一章-开始
- Cocos2d-JS中的常见元素
- C# 从需要登录的网站上抓取数据
- thinkphp——前台关键字搜索页面实现
- Unity之线性渲染器
- HDOJ--1203--I NEED A OFFER!
- 黑马程序员——Java 基础:this 关键字的使用
- 用cryptico.js实现RSA加密(应对cryptico不支持PEM)
- 如何判断一个公司的好坏