C++ Primer Pluse_6_课后题
#include <iostream>
#include <cctype>
#include <array>
#include <string>
#include <cstring>
#include <fstream>
#include <cstdlib> using namespace std; int t6_1()
{ char ch; cout << "Enter text for analysis, and type # to terminate input.\n";
cin.get(ch);
while (ch != '@')
{
if (isdigit(ch))
{
cin.get(ch);
continue;
}
else if (isupper(ch))
{
ch = tolower(ch);
}
else if (islower(ch))
{
ch = toupper(ch);
}
cout << ch; cin.get(ch);
}
cout << endl;
system("pause");
return 0;
} const int MaxSize = 10;
int t6_2()
{
array<double, MaxSize>donations = { 0 }; cout << "input the donations:\n"; cout << "donation#1:";
int i = 0;
while (i <MaxSize && cin >> donations[i])
{
if (++i <MaxSize)
{
cout << "donation#" << i + 1<<":";
}
} double total = 0;
double average = 0; for (int j = 0; j < i; j++)
{
total += donations[j];
}
if (i==0)
{
cout << "No donations.\n";
}
else
{
average = total / i;
cout << "Average is " << average << endl;
cout << "Bigger than average: ";
for (int j = 0; j < i; j++)
{ if (donations[j] > average)
{
cout << donations[j] << " ";
}
}
} system("pause");
return 0;
} int t6_3()
{
char ch; cout << "Please enter aone of the following choices:\n";
cout << "c) carnivore\t\t\t p) pianist\n";
cout << "t) tree\t\t\t\t g) game\n";
cin.get(ch).get(); while (true)
{
switch (ch)
{
case 'c': cout << "A map is a carnivore.\n"; break;
case 'p': cout << "A map is a pianist.\n"; break;
case 't': cout << "A map is a tree.\n"; break;
case 'g': cout << "A map is a game.\n"; break;
default:
cout << "Please enter a c, p, t, g:";
break;
}
cin.get(ch).get();
} system("pause");
return 0;
}
const int strsize = 20;
typedef struct Bop{
char fullname[strsize];
char title[strsize];
char bopname[strsize];
int preference;
}bop;
int t6_4()
{
bop b1 = { "bopp1", "title1", "bop1", 1 };
bop b2 = { "bopp2", "title2", "bop2", 0 };
bop b3 = { "bopp3", "title3", "bop3", 2 }; cout << "BOP report.\n";
cout << "a.display by name.\t\t\t b.display by title.\n";
cout << "c.display by bopname.\t\t d.display by preference.\n";
cout << "q.quit.\n";
cout << "Enter your choice:";
char ch;
cin.get(ch).get();
while (ch != 'q')
{
switch (ch)
{
case 'a':
cout << b1.fullname << endl;
cout << b2.fullname << endl;
cout << b3.fullname << endl;
break;
case 'b':
cout << b1.title << endl;
cout << b2.title << endl;
cout << b3.title << endl;
break;
case 'c':
cout << b1.bopname << endl;
cout << b2.bopname << endl;
cout << b3.bopname << endl;
break;
case 'd':
if (b1.preference== 0)
{
cout << b1.fullname << endl;
}
else if (b1.preference ==1)
{
cout << b1.title << endl;
}
else
{
cout << b1.bopname << endl;
} if (b2.preference == 0)
{
cout << b2.fullname << endl;
}
else if (b2.preference == 1)
{
cout << b2.title << endl;
}
else
{
cout << b2.bopname << endl;
} if (b3.preference == 0)
{
cout << b3.fullname << endl;
}
else if (b3.preference == 1)
{
cout << b3.title << endl;
}
else
{
cout << b3.bopname << endl;
}
break; default:
cout << "Please input a a, b, c, d ,q:";
}
cin.get(ch).get();
}
cout << "Bye!"; system("pause");
return 0;
} int t6_5()
{
double wage = 0;
double tax = 0; while (cin>>wage && wage >=0)
{
if (wage <= 5000)
{
tax = 0;
}
else if (wage > 5000 && wage <= 1500)
{
tax = 5000 * 0 + (wage - 5000)*0.1;
}
else if (wage > 1500 && wage <= 3500)
{
tax = 5000 * 0 + 10000 * 0.1 + (wage - 15000)*0.15;
}
else
{
tax = 5000 * 0 + 10000 * 0.1 + 20000 * 0.15 + (wage - 35000)*0.2;
} cout << "tax = " << tax << endl;
} system("pause");
return 0;
} typedef struct Donor
{
string name;
double money;
}donor;
int t6_6()
{
int donors = 0; cout << "Enter the number of donors.\n";
cin >> donors;
cin.get();
donor *donorSet = new donor[donors]; for (int i = 0; i < donors; i++)
{
cout << "Enter donor#" << i + 1 << ":\n";
getline(cin, donorSet[i].name);
cin >> donorSet[i].money;
cin.get();
} cout << "\nGrand Patrons:\n";
int flag = 0;
for (int i = 0; i < donors; i++)
{
if (donorSet[i].money > 10000)
{
cout << donorSet[i].name << endl;
flag = 1;
}
}
if (flag == 0)
{
cout << "None.\n";
} cout << "Patrons:\n";
flag = 0;
for (int i = 0; i < donors; i++)
{
if (donorSet[i].money <= 10000)
{
cout << donorSet[i].name << endl;
flag = 1;
}
}
if (flag == 0)
{
cout << "None.\n";
} system("pause");
return 0;
} int t6_7()
{
int vowelCount = 0;
int consonantsCount = 0;
char ch; cout << "Enter words (q to quit):\n";
cin.get(ch);
while (ch != 'q')
{
if (isalpha(ch))
{
if (tolower(ch) == 'a' || tolower(ch) == 'e' || tolower(ch) == 'i' || tolower(ch) == 'o' || tolower(ch) == 'u')
{
vowelCount++;
}
else
consonantsCount++; cin.get(ch);
while (ch != ' '&& ch != '\n')
{
cin.get(ch);
}
}
else
cin.get(ch);
} cout << vowelCount << " words beginning with vowels.\n";
cout << consonantsCount << " words beginning with consonants.\n";
//system("pause");
return 0;
} const int SIZE = 60;
int test6_8()
{
char filename[SIZE];
ifstream inFile;
cout << "Enter the name of the data file:";
cin.getline(filename,SIZE);
inFile.open(filename); if (!inFile.is_open())//failed to open file
{
cout << "Could not open the file.\n";
cout << "Program terminating.\n";
exit(EXIT_FAILURE);
} char ch;
int count = 0; inFile >> ch;
while (inFile.good())
{
count++;
inFile >> ch;
cout << ch;
} if (inFile.eof())
{
cout << "End of the file.\n";
}
else if (inFile.fail())
{
cout << "Input terminated by data mismatch.\n";
}
else
cout << "Input terminated for unknown reason.\n"; inFile.close(); cout << "file has " << count << "characters.\n"; return 0;
} int test6_9()
{
char filename[SIZE];
ifstream inFile;
cout << "Enter the file name: ";
cin.getline(filename, SIZE); inFile.open(filename);
if (!inFile.is_open())
{
cout << "File cannot be opened.\n";
cout << "Program terminating.\n";
exit(EXIT_FAILURE);
} int donors = 0; cout << "Enter the number of donors.\n";
inFile >> donors;
inFile.get();
donor *donorSet = new donor[donors]; for (int i = 0; i < donors; i++)
{
cout << "Enter donor#" << i + 1 << ":\n";
getline(inFile, donorSet[i].name);
inFile >> donorSet[i].money;
inFile.get();
} if (inFile.eof())
{
cout << "file end.\n";
}
else if (inFile.fail())
{
cout << "Input file terminated by mismatch.\n";
}
else
cout << "Input file terminated by unknown reasons.\n"; inFile.close(); cout << "\nGrand Patrons:\n";
int flag = 0;
for (int i = 0; i < donors; i++)
{
if (donorSet[i].money > 10000)
{
cout << donorSet[i].name << endl;
flag = 1;
}
}
if (flag == 0)
{
cout << "None.\n";
} cout << "Patrons:\n";
flag = 0;
for (int i = 0; i < donors; i++)
{
if (donorSet[i].money <= 10000)
{
cout << donorSet[i].name << endl;
flag = 1;
}
}
if (flag == 0)
{
cout << "None.\n";
} return 0;
} int main()
{
test6_9();
system("pause");
return 0;
}
C++ Primer Pluse_6_课后题的更多相关文章
- C++ Primer Pluse_8_课后题
#include <iostream> #include <string> #include<cstring> using namespace std; void ...
- C++ Primer Pluse_7_课后题
#include <iostream> using namespace std; double Sum2(double x, double y) { double sum = 0; if ...
- 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...
- 算法(JAVA)----两道小小课后题
LZ最近翻了翻JAVA版的数据结构与算法,无聊之下将书中的课后题一一给做了一遍,在此给出书中课后题的答案(非标准答案,是LZ的答案,猿友们可以贡献出自己更快的算法). 1.编写一个程序解决选择问题.令 ...
- 课后题2.87&2.86
课后题2.86&2.87 单纯就是想加点分第十章的题目都被做过了就做下第二章的,正好复习一下前面学的知识,第二章给我剩下的题目也不多了,我就挑了这个题目. 2.86 考虑一个基于IEEE浮点格 ...
- c++面向对象程序设计 课后题 答案 谭浩强 第四章
c++面向对象程序设计课后题答案 谭浩强 第四章 1: #include <iostream> using namespace std; class Complex {public: Co ...
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- Java程序设计(2021春)——第一章课后题(选择题+编程题)答案与详解
Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 第一章选择题 1.1 Java与面向对象程 ...
随机推荐
- HDU 3966(树链剖分+点修改+点查询)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3966 题目大意:营地的分布成树型.每个营地都有一些人,每次修改修改一条链上的所有营地的人数,每次查询单 ...
- [Algorithms(Princeton)] Week1 - Percolation
public class Percolation { private boolean[] openSites; private int gridN; private WeightedQuickUnio ...
- 解决ibus图标为红圈(图标丢失)
修正IBUS图标丢失gconftool –type boolean -s /desktop/ibus/panel/show_icon_on_systray truegconftool –type bo ...
- 【POJ】A New Stone Game(博弈论)
http://poj.org/problem?id=1740 题目大意就是,对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分 ...
- 【转载】Erlang 中 link 和 monitor 的区别
Link and Monitor differences 原文地址 Introduction link/1 and monitor/2 are 2 different ways of notifyin ...
- dos界面下执行java文件将错误输出到一个文本小技巧
如果dos下执行java出现错误,把错误记录到一个文档 正确时如图,输出结果为hello,我把String的s改为小写,出现错误,用2>命令输出到error.txt在当前目录就出现了error. ...
- 涉及 C#的 foreach问题
当时是用foreach实现遍历,但是函数传入参数是Object类型的,由于Objectl类型没有实现相关接口,所以foreach并不能执行. 那么下面我们来看看,想要使用foreach需要具备什么条件 ...
- POJ 1088 滑雪(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92384 Accepted: 34948 Description ...
- Educational Codeforces Round 15 C. Cellular Network(二分)
C. Cellular Network time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- php preg_match_all 和 str_replace 替换图片链接
需求:在 a 网站的后台添加一片文章,需要同步到 b 网站(两个网站数据库在同一台服务器). 思路是添加文章时,除了往 b 网站的数据库中添加数据外,再往 a 网站的数据库中添加数据. a 添加文章的 ...