首页 C++_Primer_Plus(第五版)编程习题解答

C++_Primer_Plus(第五版)编程习题解答

举报
开通vip

C++_Primer_Plus(第五版)编程习题解答Solutions for Programming Exercises in C++ Primer Plus, 5th Edition Chapter 2 // pe2-2.cpp #include int main(void) { using namespace std; cout > furlongs; double feet; feet = 220 * furlongs; cout using namespace std; void mic...

C++_Primer_Plus(第五版)编程习题解答
Solutions for Programming Exercises in C++ Primer Plus, 5th Edition Chapter 2 // pe2-2.cpp #include int main(void) { using namespace std; cout << "Enter a distance in furlongs: "; double furlongs; cin >> furlongs; double feet; feet = 220 * furlongs; cout << furlongs << " furlongs = " << feet << " feet\n"; return 0; } // pe2-3.cpp #include using namespace std; void mice(); void run(); int main() { mice(); mice(); run(); run(); return 0; } void mice() { cout << "Three blind mice\n"; } void run() { cout << "See how they run\n"; } // pe2-4.cpp #include double C_to_F(double); int main() { using namespace std; cout << "Enter a temperature in Celsius: "; double C; cin >> C; double F; F = C_to_F(C); cout << C << " degrees Celsius = " << F << " degrees Fahrenheit\n"; return 0; } double C_to_F(double temp) { return 1.8 * temp + 32.0; } Chapter 3 // pe3-1.cpp #include const int Inch_Per_Foot = 12; int main(void) { using namespace std; // Note: some environments don't support the backspace character cout << "Please enter your height in inches: ___/b/b/b "; int ht_inch; cin >> ht_inch; int ht_feet = ht_inch / Inch_Per_Foot; int rm_inch = ht_inch % Inch_Per_Foot; cout << "Your height is " << ht_feet << " feet, "; cout << rm_inch << " inch(es).\n"; return 0; } // pe3-3.cpp #include const double MINS_PER_DEG = 60.0; const double SECS_PER_MIN = 60.0; int main() { using namespace std; int degrees; int minutes; int seconds; double latitude; cout << "Enter a latitude in degrees, minutes, and seconds:\n"; cout << "First, enter the degrees: "; cin >> degrees; cout << "Next, enter the minutes of arc: "; cin >> minutes; cout << "Finally, enter the seconds of arc: "; cin >> seconds; latitude = degrees + (minutes + seconds / SECS_PER_MIN)/MINS_PER_DEG; cout << degrees << " degrees, " << minutes << " minutes, " << seconds << " seconds = " << latitude << " degrees\n"; return 0; } // pe3-5.cpp #include int main(void) { using namespace std; cout << "How many miles have you driven your car? "; float miles; cin >> miles; cout << "How many gallons of gasoline did the car use? "; float gallons; cin >> gallons; cout << "Your car got " << miles / gallons; cout << " miles per gallon.\n"; return 0; } // pe3-6.cpp #include const double KM100_TO_MILES = 62.14; const double LITERS_PER_GALLON = 3.875; int main ( void ) { using namespace std; double euro_rating; double us_rating; cout << "Enter fuel consumption in liters per 100 km: "; cin >> euro_rating; // divide by LITER_PER_GALLON to get gallons per 100-km // divide by KM100_TO_MILES to get gallons per mile // invert result to get miles per gallon us_rating = (LITERS_PER_GALLON * KM100_TO_MILES) / euro_rating; cout << euro_rating << " liters per 100 km is "; cout << us_rating << " miles per gallon.\n"; return 0; } Chapter 4 // pe4-2.cpp -- storing strings in string objects #include #include int main() { using namespace std; string name; string dessert; cout << "Enter your name:\n"; getline(cin, name); // reads through newline cout << "Enter your favorite dessert:\n"; getline(cin, dessert); cout << "I have some delicious " << dessert; cout << " for you, " << name << ".\n"; return 0; } // pe4-3.cpp -- storing strings in char arrays #include #include const int SIZE = 20; int main() { using namespace std; char firstName[SIZE]; char lastName[SIZE]; char fullName[2*SIZE + 1]; cout << "Enter your first name: "; cin >> firstName; cout << "Enter your last name: "; cin >> lastName; strncpy(fullName,lastName,SIZE); strcat(fullName, ", "); strncat(fullName, firstName, SIZE); fullName[SIZE - 1] = '\0'; cout << "Here's the information in a single string: " << fullName << endl; return 0; } // pe4-5.cpp // a candybar structure struct CandyBar { char brand[40]; double weight; int calories; }; #include int main() { using namespace std; //introduces namespace std CandyBar snack = { "Mocha Munch", 2.3, 350 }; cout << "Brand name: " << snack.brand << endl; cout << "Weight: " << snack.weight << endl; cout << "Calories: " << snack.calories << endl; return 0; } // pe4-7.ccp #include const int Slen = 70; struct pizza { char name[Slen]; float diameter; float weight; }; int main(void) { using namespace std; pizza pie; cout << "What is the name of the pizza company? "; cin.getline(pie.name, Slen); cout << "What is the diameter of the pizza in inches? "; cin >> pie.diameter; cout << "How much does the pizza weigh in ounces? "; cin >> pie.weight; cout << "Company: " << pie.name << "\n"; cout << "Diameter: " << pie.diameter << " inches\n"; cout << "Weight: " << pie.weight << " ounces\n"; return 0; } Chapter 5 // pe5-2.cpp #include int main(void) { using namespace std; double sum = 0.0; double in; cout << "Enter a number (0 to terminate) : "; cin >> in; while (in != 0) { sum += in; cout << "Running total = " << sum << "\n"; cout << "Enter next number (0 to terminate) : "; cin >> in; } cout << "Bye!\n"; return 0; } // pe5-4.cpp // book sales #include const int MONTHS = 12; const char * months[MONTHS] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; int main() { using namespace std; //introduces namespace std int sales[MONTHS]; int month; cout << "Enter the monthly sales for \"C++ for Fools\":\n"; for (month = 0; month < MONTHS; month++) { cout << "Sales for " << months[month] << ": "; cin >> sales[month]; } double total = 0.0; for (month = 0; month < MONTHS; month++) total += sales[month]; cout << "Total sales: " << total << endl; return 0; } // pe5-6.cpp #include struct car { char name[20]; int year;}; int main(void) { using namespace std; int n; cout << "How many cars do you wish to catalog?: "; cin >> n; while(cin.get() != '\n') // get rid of rest of line ; car * pc = new car [n]; int i; for (i = 0; i < n; i++) { cout << "Car #" << (i + 1) << ":\n"; cout << "Please enter the make: "; cin.getline(pc[i].name,20); cout << "Please enter the year made: "; cin >> pc[i].year; while(cin.get() != '\n') // get rid of rest of line ; } cout << "Here is your collection:\n"; for (i = 0; i < n; i++) cout << pc[i].year << " " << pc[i].name << "\n"; delete [] pc; return 0; } // pe5-7.cpp -- count words using C-style string #include #include // prototype for strcmp() const int STR_LIM = 50; int main() { using namespace std; char word[STR_LIM]; int count = 0; cout << "Enter words (to stop, type the word done):\n"; while (cin >> word && strcmp("done", word)) ++count; cout << "You entered a total of " << count << " words.\n"; return 0; } // pe5-9.cpp //nested loops #include int main() { using namespace std; //introduces namespace std int rows; int row; int col; int periods; cout << "Enter number of rows: "; cin >> rows; for (row = 1; row <= rows; row++) { periods = rows - row; for (col = 1; col <= periods; col++) cout << '.'; // col already has correct value for next loop for ( ; col <= rows; col++) cout << '*'; cout << endl; } return 0; } Chapter 6 // pe6-1.cpp #include #include int main( ) { using namespace std; //introduces namespace std char ch; cin.get(ch); while(ch != '@') { if (!isdigit(ch)) { if (isupper(ch)) ch = tolower(ch); else if (islower(ch)) ch = toupper(ch); cout << ch; } cin.get(ch); } return 0; } // pe6-3.cpp #include int main(void) { using namespace std; cout << "Please enter one of the following choices:\n"; cout << "c) carnivore p) pianist\n" << "t) tree g) game\n"; char ch; cin >> ch; while (ch != 'c' && ch != 'p' && ch != 't' && ch != 'g') { cout << "Please enter a c, p, t, or g: "; cin >> ch; } switch (ch) { case 'c' : cout << "A cat is a carnivore.\n"; break; case 'p' : cout << "Radu Lupu is a pianist.\n"; break; case 't' : cout << "A maple is a tree.\n"; break; case 'g' : cout << "Golf is a game.\n"; break; default : cout << "The program shouldn't get here!\n"; } return 0; } // pe6-5.cpp // Neutronia taxation #include const double LEV1 = 5000; const double LEV2 = 15000; const double LEV3 = 35000; const double RATE1 = 0.10; const double RATE2 = 0.15; const double RATE3 = 0.20; int main( ) { using namespace std; double income; double tax; cout << "Enter your annual income in tvarps: "; cin >> income; if (income <= LEV1) tax = 0; else if (income <= LEV2) tax = (income - LEV1) * RATE1; else if (income <= LEV3) tax = RATE1 * (LEV2 - LEV1) + RATE2 * (income - LEV2); else tax = RATE1 * (LEV2 - LEV1) + RATE2 * (LEV3 - LEV2) + RATE3 * (income - LEV3); cout << "You owe Neutronia " << tax << " tvarps in taxes.\n"; return 0; } // pe6-7.cpp #include #include int main() { using namespace std; string word; char ch; int vowel = 0; int consonant = 0; int other = 0; cout << "Enter words (q to quit):\n"; cin >> word; while ( word != "q") { ch = tolower(word[0]); if (isalpha(ch)) { if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') vowel++; else consonant++; } else other++; cin >> word; } cout << vowel <<" words beginning with vowels\n"; cout << consonant << " words beginning with consonants\n"; cout << other << " others\n"; return 0; } // pe6-8.cpp -- counting characters #include #include // file I/O suppport #include // support for exit() const int SIZE = 60; int main() { using namespace std; char filename[SIZE]; char ch; ifstream inFile; // object for handling file input cout << "Enter name of data file: "; cin.getline(filename, SIZE); inFile.open(filename); // associate inFile with a file if (!inFile.is_open()) // failed to open file { cout << "Could not open the file " << filename << endl; cout << "Program terminating.\n"; exit(EXIT_FAILURE); } int count = 0; // number of items read inFile >> ch; // get first value while (inFile.good()) // while input good and not at EOF { count++; // one more item read inFile >> ch; // get next value } cout << count << " characters in " << filename << endl; inFile.close(); // finished with the file return 0; } Chapter 7 //pe7-1.cpp -- harmonic mean #include double h_mean(double x, double y); int main(void) { using namespace std; double x,y; cout << "Enter two numbers (a 0 terminates): "; while (cin >> x >> y && x * y != 0) cout << "harmonic mean of " << x << " and " << y << " = " << h_mean(x,y) << "\n"; /* or do the reading and testing in two parts: while (cin >> x && x != 0) { cin >> y; if (y == 0) break; ... */ cout << "Bye\n"; return 0; } double h_mean(double x, double y) { return 2.0 * x * y / (x + y); } // pe7-3.cpp #include struct box { char maker[40]; float height; float width; float length; float volume; }; void showbox(box b); void setbox(box * pb); int main(void) { box carton = {"Bingo Boxer", 2, 3, 5}; // no volume provided setbox(&carton); showbox(carton); return 0; } void showbox(box b) { using namespace std; cout << "Box maker: " << b.maker << "\nheight: " << b.height << "\nlwidth: " << b.width << "\nlength: " << b.length << "\nvolume: " << b.volume << "\n"; } void setbox(box * pb) { pb->volume = pb->height * pb->width * pb->length; } // pe7-4.cpp -- probability of winning #include long double probability(unsigned numbers, unsigned picks); int main() { using namespace std; double total, choices; double mtotal; double probability1, probability2; cout << "Enter total number of game card choices and\n" "number of picks allowed for the field:\n"; while ((cin >> total >> choices) && choices <= total) { cout << "Enter total number of game card choices " "for the mega number:\n"; if (!(cin >> mtotal)) break; cout << "The chances of getting all " << choices << " picks is one in " << (probability1 = probability(total, choices) ) << ".\n"; cout << "The chances of getting the megaspot is one in " << (probability2 = probability(mtotal, 1) ) << ".\n"; cout << "You have one chance in "; cout << probability1 * probability2; // compute the probability cout << " of winning.\n"; cout << "Next set of numbers (q to quit): "; } cout << "bye\n"; return 0; } // the following function calculates the probability of picking picks // numbers correctly from numbers choices long double probability(unsigned numbers, unsigned picks) { long double result = 1.0; // here come some local variables long double n; unsigned p; for (n = numbers, p = picks; p > 0; n--, p--) result = result * n / p ; return result; } // pe7-6.cpp #include int Fill_array(double ar[], int size); void Show_array(const double ar[], int size); void Reverse_array(double ar[], int size); const int LIMIT = 10; int main( ) { using namespace std; double values[LIMIT]; int entries = Fill_array(values, LIMIT); cout << "Array values:\n"; Show_array(values, entries); cout << "Array reversed:\n"; Reverse_array(values, entries); Show_array(values, entries); cout << "All but end values reversed:\n"; Reverse_array(values + 1, entries - 2); Show_array(values, entries); return 0; } int Fill_array(double ar[], int size) { using namespace std; int n; cout << "Enter up to " << size << " values (q to quit):\n"; for (n = 0; n < size; n++) { cin >> ar[n]; if (!cin) break; } return n; } void Show_array(const double ar[], int size) { using namespace std; int n; for (n = 0; n < size; n++) { cout << ar[n]; if (n % 8 == 7) cout << endl; else cout << ' '; } if (n % 8 != 0) cout << endl; } void Reverse_array(double ar[], int size) { int i, j; double temp; for (i = 0, j = size - 1; i < j; i++, j--) { temp = ar[i]; ar[i] = ar[j]; ar[j] = temp; } } //pe7-9.cpp #include double calculate(double x, double y, double (*pf)(double, double)); double add(double x, double y); double sub(double x, double y); double mean(double x, double y); int main(void) { using namespace std; double (*pf[3])(double,double) = {add, sub, mean}; char * op[3] = {"sum", "difference", "mean"}; double a, b; cout << "Enter pairs of numbers (q to quit): "; int i; while (cin >> a >> b) { // using function names cout << calculate(a, b, add) << " = sum\n"; cout << calculate(a, b, mean) << " = mean\n"; // using pointers for (i = 0; i < 3; i++) cout << calculate(a, b, pf[i]) << " = " << op[i] << "\n"; } cout << "Done!\n"; return 0; } double calculate(double x, double y, double (*pf)(double, double)) { return (*pf)(x, y); } double add(double x, double y) { return x + y; } double sub(double x, double y) { return x - y; } double mean(double x, double y) { return (x + y) / 2.0; } Chapter 8 // pe8-1.cpp #include void silly(const char * s, int n = 0); int main(void) { using namespace std; char * p1 = "Why me?\n"; silly(p1); for (int i = 0; i < 3; i++) { cout << i << " = i\n"; silly(p1, i); } cout << "Done\n"; return 0; } void silly(const char * s, int n) { using namespace std; static int uses = 0; int lim = ++uses; if (n == 0) lim = 1; for (int i = 0; i < lim; i++) cout << s; } // pe8-4.cpp #include #include // for strlen(), strcpy() using namespace std; struct stringy { char * str; // points to a string int ct; // length of string (not counting '\0') }; void show(const char *str, int cnt = 1); void show(const stringy & bny, int cnt = 1); void set(stringy & bny, const char * str); int main(void) { stringy beany; char testing[] = "Reality isn't what it used to be."; set(beany, testing); // first argument is a reference, // allocates space to hold copy of testing, // sets str member of beany to point to the // new block, copies testing to new block, // and sets ct member of beany show(beany); // prints member string once show(beany, 2); // prints member string twice testing[0] = 'D'; testing[1] = 'u'; show(testing); // prints testing string once show(testing, 3); // prints testing string thrice show("Done!"); return 0; } void show(const char *str, int cnt) { while(cnt-- > 0) { cout << str << endl; } } void show(const stringy & bny, int cnt) { while(cnt-- > 0) { cout << bny.str << endl; } } void set(stringy & bny, const char * str) { bny.ct = strlen(str); bny.str = new char[bny.ct+1]; strcpy(bny.str, str); } // pe8-5.cpp #include template T max5(T ar[]) { int n; T max = ar[0]; for (n = 1; n < 5; n++) if (ar[n] > max) max = ar[n]; return max; } const int LIMIT = 5; int main( ) { using namespace std; double ard[LIMIT] = { -3.4, 8.1, -76.4, 34.4, 2.4}; int ari[LIMIT] = {2, 3, 8, 1, 9};
本文档为【C++_Primer_Plus(第五版)编程习题解答】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_472467
暂无简介~
格式:doc
大小:333KB
软件:Word
页数:74
分类:互联网
上传时间:2013-03-20
浏览量:6