4.cpp

#include 
#include 
using std::string;
using std::cin;
using std::cout;
using std::endl;
struct Sales_data
{
	string Bookno;
	unsigned int sold={0};
	double revenue{0.0};
};
int main()
{
	Sales_data temp;
	double price=0.0;
	while(cin>>temp.Bookno)
	{
		cin>>temp.sold>>price;
		temp.revenue=temp.sold*price;
		cout<

5.cpp

#include 
#include 
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::cerr;
struct Sales_data
{
	string Bookno;
	unsigned int sold={0};
	double revenue{0.0};
};
int main()
{
	Sales_data temp1,temp2;
	double price=0;
	cin>>temp1.Bookno>>temp1.sold>>price;
	temp1.revenue=temp1.sold*price;
	price=0;
	cin>>temp2.Bookno>>temp2.sold>>price;
	temp2.revenue=temp2.sold*price;
	if(temp1.Bookno==temp2.Bookno)
		cout<

6.cpp

#include 
#include 
using std::string;
using std::cin;
using std::cout;
using std::cerr;
using std::endl;
struct Sales_data
{
	std::string Bookno;
	unsigned int sold={0};
	double revenue{0.0};
};
int main()
{
	Sales_data temp1,temp2;
	double price=0.0;
	if(std::cin>>temp1.Bookno)
	{
		std::cin>>temp1.sold>>price;
		temp1.revenue=temp1.sold*price;
		price=0;
		while(std::cin>>temp2.Bookno)
		{
			std::cin>>temp2.sold>>price;
			temp2.revenue=temp2.sold*price;
			price=0;
			if(temp1.Bookno==temp2.Bookno)
			{
				temp1.sold+=temp2.sold;
				temp1.revenue+=temp2.revenue;
			}
			else
			{
				std::cerr<<"not the same isbn"<

7.cpp

#include 
#include 
using std::string;
using std::cin;
using std::cout;
using std::cerr;
using std::endl;
struct Sales_data
{
	std::string Bookno;
	unsigned int sold={0};
	double revenue{0.0};
};
int main()
{
	Sales_data total,temp;
	double price=0.0;
	if(std::cin>>total.Bookno)
	{
		std::cin>>total.sold>>price;
		total.revenue=total.sold*price;
		while(std::cin>>temp.Bookno)
		{
			std::cin>>temp.sold>>price;
			temp.revenue=temp.sold*price;
			price=0;
			if(total.Bookno==temp.Bookno)
			{
				total.sold+=temp.sold;
				total.revenue+=temp.revenue;
			}
			else
			{
				std::cout<

3.2

3-2-1.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string line;
	while(getline(cin,line))
		cout<

3-2-2.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string line;
	while(cin>>line)
		cout<

3.3

  string类的输入运算符会忽略空白,getline函数会存储空白。

3.4

3-4-1.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string st1,st2;
	while(cin>>st1>>st2)
	{
		if(st1>st2)
			cout<

3-4-2.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string st1,st2;
	while(cin>>st1>>st2)
	{
		if(st1.size()>st2.size())
			cout<

3.5

3-5-1.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string st1,st2,st3;
	cin>>st1>>st2>>st3;
	cout<

3-5-2.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string st1,st2,st3;
	cin>>st1>>st2>>st3;
	cout<

3.6

#include 
#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string s("Hello World!!!");
	for(auto &c:s)
		c='X';
	cout<

3.7

一样的

#include 
#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string s("Hello World!!!");
	for(char &c:s)
		c='X';
	cout<

3.8

3-8-1.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(void)
{
	string str="Hello World!!!";
	decltype(str.size()) index=0;
	for(;index!=str.size();index++)
		str[index]='X';
	cout<

3-8-2.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(void)
{
	string str="Hello World!!!";
	decltype(str.size()) index=0;
	while(index!=str.size())
	{
		str[index++]='X';
	}
	cout<

3.9

  不合法,使用下标访问空string的行为未定义。

3.10

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(void)
{
	string trans,result;
	while(cin>>trans)
	{
		for(auto c:trans)
		{
			if(!ispunct(c))
				result+=c;
		}
		cout<

3.11

合法,c的类型是const char &

3.12

  1. 正确,vector包含的元素是vector
  2. 不正确,vector的元素类型不同。
  3. 正确,vector中含有10个null字符串。

3.13

  1. 10个0
  2. 10个42
  3. 1个10
  4. 10、42
  5. 10个空的string
  6. 10个hi字符串

3.14

#include 
#include 
using std::vector;
using std::cin;
using std::cout;
using std::endl;
int main()
{
	vector ivec;
	int temp;
	while(cin>>temp)
	{
		ivec.push_back(temp);
	}
	return 0;
}

3.15

#include 
#include 
#include 
using std::string;
using std::vector;
using std::cin;
using std::cout;
using std::endl;
int main()
{
	vector svec;
	string temp;
	while(cin>>temp)
	{
		svec.push_back(temp);
	}
	return 0;
}

3.16

#include 
#include 
#include 
using std::string;
using std::vector;
using std::cin;
using std::cout;
using std::endl;
int main()
{
	vector v1;
	vector v2(10);
	vector v3(10,42);
	vector v4{10};
	vector v5{10,42};
	vector v6{10};
	vector v7{10,"hi"};
	
	cout<<"v1";
	if(v1.empty())
		cout<<" is empty."<

3.17

#include 
#include 
#include 
#include 
using std::string;
using std::vector;
using std::cin;
using std::cout;
using std::endl;
int main()
{
	vector svec;
	string tmp;
	while(cin>>tmp)
		svec.push_back(tmp);
	for(auto &a:svec)
	{
		for(auto &b:a)
			b=toupper(b);
	}
	for(auto c:svec)
		cout<

3.18

不合法

vector ivec;
ivec.push_back(42);

3.19

vector ivec(10,42);
vector ivec{42,42,42,42,42,42,42,42,42,42};
vector ivec={42,42,42,42,42,42,42,42,42,42};

3.20

3-20-1.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
	vector ivec;
	int tmp;
	while(cin>>tmp)
		ivec.push_back(tmp);
	for(decltype(ivec.size())index=0;index

3-20-2.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
	vector ivec;
	int tmp;
	while(cin>>tmp)
		ivec.push_back(tmp);
	for(decltype(ivec.size())head=0,tail=ivec.size()-1;head

3.21

#include 
#include 
#include 
using std::string;
using std::vector;
using std::cin;
using std::cout;
using std::endl;
int main()
{
	vector v1;
	vector v2(10);
	vector v3(10,42);
	vector v4{10};
	vector v5{10,42};
	vector v6{10};
	vector v7{10,"hi"};
	
	cout<<"v1";
	if(v1.empty())
		cout<<" is empty."<

3.22

for(auto it=text.begin();it!=text.end()&&!it->empty();it++)
{
	for(auto pts=it->begin();pts!=it->end();pts++)
		*pts=toupper(*pts);
	cout<<*it<

3.23

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main(void)
{
	vector ivec(10,21);
	for(auto it=ivec.begin();it!=ivec.end();it++)
	{
		(*it)*=2;
		cout<<*it<<" ";
	}
	cout<

3.24

3-24-1.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
	vector ivec;
	int tmp;
	while(cin>>tmp)
		ivec.push_back(tmp);
	for(auto it=ivec.begin();it

3-24-2.cpp

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
	vector ivec;
	int tmp;
	while(cin>>tmp)
		ivec.push_back(tmp);
	for(auto beg=ivec.begin(),end=ivec.end()-1;beg

3.25

#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
	vector scores(11,0);
	unsigned grade;
	auto beg=scores.begin();
	while(cin>>grade)
	{
		if(grade<=100)
			(*(beg+grade/10))++;
	}
	for(decltype(scores.size())index=0;index!=scores.size();index++)
	{
		if(index

3.26

  不能将两个迭代器相加。

3.27

  1. 不合法,数组的维度必须是常量表达式。
  2. 合法
  3. 不合法,数组的维度必须是常量表达式。
  4. 不合法,字符数组长度不够。

3.28

string sa[10];//10个空字符串
int ia[10];//10个0
int main(){
    string sa2[10];//10个空字符串
    int ia2[10];//10个未初始化的值
}

3.29

  数组vector相似之处是都能存放类型相同的对象,且这些对象本身没有名字,需要通过其所在位置访问。
  数组vector的最大不同是,数组的大小固定不变,不能随意向数组中增加额外的元素,虽然在某些情境下运行时性能较好,但是与vector相比损失了灵活性
  具体来说,数组的维度在定义时已经确定,如果我们想更改数组的长度,只能创建一个更大的新数组,然后把原数组的所有元素复制到新数组中去。数组也无法像vector那样使用size函数直接获取数组的维度。如果是字符数组,可以调用 strlen 函数得到字符串的长度;如果是其他数组,只能使用sizeof(array) / sizeof(array[0])的方式计算数组的维度。

3.30

  遍历维度为10的数组,下标应该是从0到9.

3.31

#include 
#include 
using std::cout;
using std::endl;
int main()
{
	int arr[10];
	for(size_t index=0;index<10;index++)
		arr[index]=index;
	for(auto value:arr)
		cout<

3.32

3-32-1.cpp

#include 
#include 
using std::cout;
using std::endl;
int main()
{
	int arr_1[10];
	int arr_2[10];
	for(size_t index=0;index<10;index++)
	{
		arr_1[index]=index;
		arr_2[index]=arr_1[index];
	}
	for(auto value:arr_2)
		cout<

3-32-2.cpp

#include 
#include 
using std::cout;
using std::endl;
using std::vector;
int main()
{
	vector ivec1(10,0);
	for(decltype(ivec1.size())index=0;index!=ivec1.size();index++)
		ivec1[index]=index;
	vector ivec2=ivec1;
	for(auto value:ivec2)
		cout<

3.33

  因为数组定义在函数内部,且数组元素是内置类型,所以数组内元素此时都是未定义的值

3.34

  指针p1前进到p2所在的位置,指向同一个元素。p1、p2两个指针类型不同时,该程序非法。

3.35

#include 
#include 
using std::cout;
using std::endl;
using std::begin;
using std::end;
int main()
{
	int arr[10];
	for(int *pbeg=begin(arr),*pend=end(arr);pbeg!=pend;pbeg++)
		*pbeg=0;
	for(auto value:arr)
		cout<

3.36

#include 
#include 
#include 
using std::cout;
using std::endl;
using std::vector;
using std::begin;
using std::end;
int main()
{
	int arr1[]={1,2,3,4,5};
	int arr2[]={0,0,0,0,0};
	vector ivec1{0,0,0,0,0};
	vector ivec2(5,0);
	for(size_t index=0;index<5;index++)
	{
		if(arr1[index]!=arr2[index])
			goto wrong;
	}
	cout<<"Two array are equality."<

3.37

  程序希望逐个输出hello,但是字符数组ca并没有以'\0'结尾,所以while循环无法结束。

3.38

  指针本身的值是一个内存地址值,表示指针所指对象在内存中的存储地址。如果我们把两个指针加在一起,就是试图把内存中两个对象的存储地址加在一起,这显然是没有任何意义的。

3.39

#include 
#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string str1{"Hello World"},str2("Hello World");
	if(str1==str2)
		cout<<"Two strings are equality."<0)
		cout<<"str3 > str4"<

3.40

#include 
#include 
#include 
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	char str1[]="Hello";
	char str2[]="World";
	char str3[12]="";
	strcpy(str3,str1);
	strcat(str3," ");
	strcat(str3,str2);
	cout<

3.41

#include 
#include 
#include 
#include 
using namespace std;
int main()
{
	int arr[10];
	default_random_engine rad;
	for(size_t index=0;index<10;index++)
		arr[index]=rad()%20;
	vector ivec(begin(arr),end(arr));
	for(auto value:ivec)
		cout<

3.42

#include 
#include 
#include 
using namespace std;
int main()
{
	default_random_engine rad;
	uniform_int_distribution u(-10,10);
	size_t index;
	vector ivec;
	int arr[10];
	for(index=0;index<10;index++)
		ivec.push_back(u(rad));
	cout<<"there are the vector: ";
	for(auto value:ivec)
		cout<

3.43

3-43-1.cpp

#include 
using namespace std;
int main()
{
	int ia[3][4]=
	{
		{0,1,2,3},
		{4,5,6,7},
		{8,9,10,11}
	};
	for(int (&a)[4]:ia)
		for(int b:a)
			cout<

3-43-2.cpp

#include 
using namespace std;
int main()
{
	int ia[3][4]=
	{
		{0,1,2,3},
		{4,5,6,7},
		{8,9,10,11}
	};
	size_t x,y;
	for(x=0;x<3;x++)
		for(y=0;y<4;y++)
			cout<

3-43-3.cpp

#include 
using namespace std;
int main()
{
	int ia[3][4]=
	{
		{0,1,2,3},
		{4,5,6,7},
		{8,9,10,11}
	};
	int (*p) [4],*q;
	for(p=ia;p

3.44

#include 
using namespace std;
typedef int int_array[4];
int main()
{
	int ia[3][4]=
	{
		{0,1,2,3},
		{4,5,6,7},
		{8,9,10,11}
	};
	int_array *p;
	int *q;
	for(p=ia;p

3.45

#include 
using namespace std;
int main()
{
	int ia[3][4]=
	{
		{0,1,2,3},
		{4,5,6,7},
		{8,9,10,11}
	};
	for(auto &a:ia)
		for(auto b:a)
			cout<
  • 相关阅读:
    linux gpio喂狗驱动
    三面“有赞”Java岗斩获offer:Spring+JVM+并发锁+分布式+算法
    scss的高级用法——循环
    8.8 opencv
    搭建游戏要选什么样的服务器?
    某市住房公积金管理中心领导莅临创邻科技考察指导
    2022世界VR产业大会圆满收官,酷雷曼惊艳亮相!
    十种排序方法
    DTD和XSD的区别
    【送书活动】大模型赛道如何实现华丽的弯道超车
  • 原文地址:https://blog.csdn.net/fuluoyide312/article/details/136373537