具体源码请见:C++primer习题上半部分资源-****文库
目录
第一章 开始
练习1.1 编写程序,在标准输出上打印Hello.world
练习1.2 我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。
练习1.4 编译一个包含不正确的嵌套解释的程序,观察编译器返回的错误信息。
练习1.5 指出下列哪些输出语句是合法的(如果有的话)
练习1.6 编写程序,使用while循环将50到100的整数相加
练习1.7 编写程序,使用递减运算符在循环中按递减序打印出10到0之间的整数
练习1.8 编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数
练习1.9 下面的for循环完成了什么功能?sum的终值是多少?
练习1.10 对比for循环和while循环,两种形式的优缺点是什么?
练习1.11 编写程序,从cin读取一组数,输出其和
练习1.12 如果输入的所有值都是相等的,本书的程序会输出什么?如果没有重复值,输出又是怎样的?
练习1.13 将头文件拷贝到自己的工作目录中,用它编写一个程序,读取一组书籍销售记录,将每条记录打印到标准输出上
练习1.14
练习1.15
第一章 开始
本章介绍了C++程序的基本结构,如何认定变量,如何进行输入输出,以及如何编写简单语句。
练习1.1 编写程序,在标准输出上打印Hello.world
解答:
#include<iostream>
int main()
{
std::cout<<"Hello world"<<std::endl;
return 0;
}
练习1.2 我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。
解答:
#include<iostream>
int main()
{
std::cout << "请输入两个数" << std::endl;
int v1, v2;
std::cin >> v1 >> v2;
std::cout << v1 << "和" << v2 << "的积为:"
<< v1 * v2 << std::endl;
return 0;
}
解答:
练习1.4 编译一个包含不正确的嵌套解释的程序,观察编译器返回的错误信息。
在编译器中编译下面的程序:
#include<iostream>
/*
* 注释对/* */ 不能嵌套
*“不能嵌套”几个字会被认为是源码
* 像剩余程序一样处理
*/
int main()
{
return 0;
}
编译器会报告下列错误
练习1.5 指出下列哪些输出语句是合法的(如果有的话)
解答:
练习1.6 编写程序,使用while循环将50到100的整数相加
解答:
#include<iostream>
int main()
{
int sum = 0;
int i = 50;
while (i <= 100) {
sum += i;
i++;
}
std::cout << "50到100之间的整数之和为"
<< sum << std::endl;
return 0;
}
练习1.7 编写程序,使用递减运算符在循环中按递减序打印出10到0之间的整数
除了++运算符将运算对象的值增加1以外,还有一个递减运算符(--)实现将值减少1。
解答:
#include<iostream>
int main()
{
int i = 10;
while (i >= 0) {
std::cout << i << " ";
i--;
}
std::cout<<std::endl;
return 0;
}
练习1.8 编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数
解答:
#include<iostream>
int main()
{
std::cout << "请输入两个数:";
std::cout << std::endl;
int v1, v2;
std::cin >> v1 >> v2;
if(v1>v2) //由大至小打印
while (v1 >= v2) {
std::cout << v1 << " ";
v1--;
}
else //由小至大打印
while (v1 <= v2) {
std::cout << v1 << " ";
v1++;
}
std::cout << std::endl;
return 0;
}
练习1.9 下面的for循环完成了什么功能?sum的终值是多少?
练习1.10 对比for循环和while循环,两种形式的优缺点是什么?
练习1.11 编写程序,从cin读取一组数,输出其和
解答:
#include<iostream>
int main()
{
int sum = 0, value = 0;
std::cout << "请输入一些数:"
<< std::endl;
for (; std::cin >> value;)
sum += value;
std::cout << "读入的数之和为"<<sum<<std::endl;
return 0;
}
练习1.12 如果输入的所有值都是相等的,本书的程序会输出什么?如果没有重复值,输出又是怎样的?
解答:
练习1.13 将头文件拷贝到自己的工作目录中,用它编写一个程序,读取一组书籍销售记录,将每条记录打印到标准输出上
解答:
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item book;
std::cout << "请输入销售记录:" << std::endl;
while (std::cin >> book) {
std::cout << "ISBN、售出本书、销售额和平均售价为"
<<book<< std::endl;
}
return 0;
}
2-01 2 20
2-01 2 40 20
练习1.14
编写程序,读取两个 ISBN 相同的 Sales_item 对象,输出他们的和。
解答:
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item item1,item2;
std::cin >> item1 >> item2;
std::cout << item1 + item2 <<std::endl;
return 0;
}
1-01 2 100
1-01 3 100
1-01 5 500 100
练习1.15
编写程序,读取多个具有相同 ISBN 的销售记录,输出所有记录的和。
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item item,sum_item;
std::cin >> sum_item;
while(std::cin >> item)
{
sum_item += item;
}
std::cout << sum_item << std::endl;
return 0;
}
1-01 2 100
1-01 2 100
1-01 3 100
1-01 7 700 100