C++ Primer习题集----题目+答案版

时间:2024-11-21 12:42:28

具体源码请见: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