首页 > 代码库 > C++ Primer Pluse_6_课后题
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_课后题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。