C++ Primer 前三章部分习题代码
2.6.2 节练习 - 练习 2.41
//涵盖了1.5.1节要求的几种方式
#include <iostream>
#include <string>
using namespace std;
struct Sales_data{
string ISBN;
int mun = 0;
double price = 0.0;
double allprice = 0.0;
};
int main()
{
Sales_data item1, item2;
if(cin >> item1.ISBN >> item1.mun >> item1.price){
item1.allprice = item1.mun * item1.price;
int cut =1;
while (cin >> item2.ISBN >> item2.mun >> item2.price) {
item2.allprice = item2.mun * item2.price;
if(item1.ISBN == item2.ISBN){
item1.mun = item1.mun + item2.mun;
item1.allprice = item1.allprice + item2.allprice;
++cut;
}else{
cout << item1.ISBN << " " << item1.mun << " " << item1.allprice << " "
<< item1.allprice/item1.mun << " Time " << cut << endl;
item1.ISBN = item2.ISBN;
item1.mun = item2.mun;
item1.price = item2.price;
item1.allprice = item2.allprice;
cut = 1;
}
}
cout << item1.ISBN << " " << item1.mun << " " << item1.allprice << " "
<< item1.allprice/item1.mun << " Time " << cut << endl;
}
return 0;
}
2.6.3 节练习 - 练习 2.42
代码与上一段相同,只不过是把Sales_data放在了名为Sales_data.h的头文件中
//这是头文件,从.cpp中把此段内容剔除即可
#ifndef Sales_data_h
#define Sales_data_h
#include <string>
using namespace std;
struct Sales_data{
string ISBN;
int mun = 0;
double price = 0.0;
double allprice = 0.0;
};
#endif /* Sales_data_h */
在.cpp文件中的调用如下
#include <iostream>
#include "Sales_data.h"
using namespace std;
int main()
{
Sales_data item1, item2;
if(cin >> item1.ISBN >> item1.mun >> item1.price){
item1.allprice = item1.mun * item1.price;
int cut =1;
while (cin >> item2.ISBN >> item2.mun >> item2.price) {
item2.allprice = item2.mun * item2.price;
if(item1.ISBN == item2.ISBN){
item1.mun = item1.mun + item2.mun;
item1.allprice = item1.allprice + item2.allprice;
++cut;
}else{
cout << item1.ISBN << " " << item1.mun << " " << item1.allprice << " "
<< item1.allprice/item1.mun << " Time " << cut << endl;
item1.ISBN = item2.ISBN;
item1.mun = item2.mun;
item1.price = item2.price;
item1.allprice = item2.allprice;
cut = 1;
}
}
cout << item1.ISBN << " " << item1.mun << " " << item1.allprice << " "
<< item1.allprice/item1.mun << " Time " << cut << endl;
}
return 0;
}
3.3.3 节练习 - 练习 3.17
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> v;
string s;
while(cin >> s)
v.push_back(s); //向v尾压入循环每次输入的字符串
for(auto &i : v) //先读取字符串
for(auto &j : i) //再读取字符
j = toupper(j); //变换大小写
for(auto a : v) //打印v中内容
cout << a << endl;
return 0;
}
3.3.3 节练习 - 练习 3.20
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a = 0;
vector<int> v;
while(cin >> a)
v.push_back(a);
decltype(v.size()) i; // i 的作用域包括for和if
for(i = 0; i != v.size()/2; i++)
cout << v[i]+v[v.size()-1-i] << endl;
if(v.size()%2) //输出奇数余留值
cout << v[i] << endl;
return 0;
}
3.4.2 节练习 - 练习 3.24
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
int a = 0;
while(cin >> a)
v.push_back(a);
if(v.size() % 2 != 0){
for(auto b = v.begin(),e = v.end(); b != e - 1; b++)
cout << *b + *(--e) << endl;
cout << v[v.size() / 2] << endl;
}else{
for(auto b = v.begin(),e = v.end(); b != e; b++)
cout << *b + *(--e) << endl;
}
return 0;
}
3.4.2 节练习 - 练习 3.25
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v(11, 0);
auto t = v.begin();
int c;
while (cin >> c) {
if(c <= 100)
*(t+c/10)+=1;
}
for(auto o = v.begin(); o != v.end(); o++){
cout << *o << endl;
}
return 0;
}