c++ primer plus 第七章 课后题答案
#include <iostream> using namespace std; double HAR_AVG(double, double); void TEST(bool); int main() { double x, y; cout << "Please enter two values(encountered zero end):\n"; cin >> x; TEST(cin.fail()); cin >> y; TEST(cin.fail()); while (x*y != 0) { cout << "The harmonic mean of the two values is " << HAR_AVG(x, y) << ".\n"; cout << "Please enter two values(encountered zero end):\n"; cin >> x; TEST(cin.fail()); cin >> y; TEST(cin.fail()); } system("pause"); } double HAR_AVG(double x, double y) { return 2.0*x*y / (x + y); } void TEST(bool a) { if (a == true) cout << "Not value!\n"; }
#include <iostream> using namespace std; const int Max_Num = 10; int In_put(double *, int); double Pro_data(double *, int); void Display(const double *, int, double); int main() { double grade[Max_Num]; int count; double avg_grade; count=In_put(grade, Max_Num); avg_grade=Pro_data(grade, count); Display(grade, count, avg_grade); system("pause"); } int In_put(double *grade,int a) { cout << "Please enter ten golf scores (press any non-numeric button to end): \n"; int count=0; for (int i = 0; i < a; i++) { cin >> grade[i]; if (cin.fail()) { cout << "End!\n"; return count; } count++; } return count; } double Pro_data(double *grade, int count) { double sum=0; for (int i = 0; i < count; i++) { sum += grade[i]; } return sum / count; } void Display(const double *grade, int count, double a) { cout << "The grades you entered are:"; for (int i = 0; i < count; i++) { cout << grade[i] << " "; } cout << "\nThe average score is " << a << ".\n"; }
#include<iostream> using namespace std; const int Max_num = 10; struct box { char maker[40]; float height; float width; float length; float volume; }; bool In_put(box *,int); void Display(box,int); void Setting(box *,int); int main() { box *abc = new box[Max_num]; int count=0; for (int i = 0; i < Max_num; i++) { if (In_put(abc, i)) break; count++; } cout << "You have entered " << count << " boxes.\n"; for (int j = 0; j < count; j++) { Display(abc[j], j); } system("pause"); } bool In_put(box *abc, int i) { cout << "Please enter the maker of the box, as well as the length, width, and height:\n"; cin >> abc[i].maker; if (cin.fail()) { cout << "The maker of the input box has an error.\n"; return cin.fail(); } cin >> abc[i].length; if (cin.fail()) { cout << "The maker of the input length has an error.\n"; return cin.fail(); } cin >> abc[i].width; if (cin.fail()) { cout << "The maker of the input width has an error.\n"; return cin.fail(); } cin >> abc[i].height; if (cin.fail()) { cout << "The maker of the input height has an error.\n"; return cin.fail(); } Setting(abc,i); return false; } void Setting(box *abc, int i) { abc[i].volume = abc[i].length*abc[i].width*abc[i].height; } void Display(box abc,int j) { cout << "The " << j+1 << "th box has the following information:\n"; cout << "maker:" << abc.maker << endl; cout << "length:" << abc.length << endl; cout << "width:" << abc.width << endl; cout << "height:" << abc.height << endl; cout << "volume:" << abc.volume << endl; }
#include <iostream> long double probability(unsigned, unsigned, unsigned, unsigned); int main() { using namespace std; double total1, choices1; double total2, choices2; cout << "Enter the total number of Domain choices on the game card and\n" "the number of picks allowed:\n"; cin >> total1 >> choices1; cout << "Enter the total number of Special choices on the game card and\n" "the number of picks allowed:\n"; cin >> total2 >> choices2; while (!(cin.fail()) && choices1 <= total1 && choices2 <= total2) { cout << "You have one chance in "; cout << probability(total1, choices1, total2, choices2); cout << " of winning.\n"; cout << "Next four numbers (Non-numeric to quit): "; cin >> total1 >> choices1; cin >> total2 >> choices2; } cout << "bye\n"; system("pause"); return 0; } long double probability(unsigned numbers1, unsigned picks1, unsigned numbers2, unsigned picks2) { long double result = 1.0; // here come some local variables long double n; unsigned p; for (n = numbers1, p = picks1; p > 0; n--, p--) result = result * n / p; for (n = numbers2, p = picks2; p > 0; n--, p--) result = result * n / p; return result; }
#include <iostream> using namespace std; unsigned long factorial(unsigned int); int main() { unsigned int pp; unsigned long qq; cout << "Please enter a non-negative number:"; if (cin >> pp) { qq = factorial(pp); cout << "The factorial of this value is:" << qq << endl; } system("pause"); } unsigned long factorial(unsigned int pp) { unsigned long qq; if (pp > 0) qq = pp * factorial(pp - 1); else return 1; return qq; }
#include <iostream> using namespace std; const int Max_num = 10; int Fill_array(double *, int); void Show_array(const double *, int); void Reverse_array(double *, int); int main() { double abc[Max_num]; int num_rel; num_rel=Fill_array(abc, Max_num); Show_array(abc, num_rel); Reverse_array(abc, num_rel); Show_array(abc, num_rel); Reverse_array(abc+1, num_rel-2); Show_array(abc, num_rel); system("pause"); } int Fill_array(double *abc, int t) { int count_num = 0; cout << "Please enter no more than" << t << "digits (experiencing non-numeric exits):\n"; for (int i = 0; i < t; i++) { if (!(cin >> abc[i])) break; count_num++; } cout << "Input completed.\n"; return count_num; } void Show_array(const double *abc, int t) { for (int i = 0; i < t; i++) { cout << abc[i] << endl; } } void Reverse_array(double *abc, int t) { cout << "Reverse!" << endl; int i = 0, j = t - 1; double qqq; while (j > i) { qqq = abc[i]; abc[i] = abc[j]; abc[j] = qqq; i++; j--; } }
#include <iostream> const int Max = 5; double * fill_array(double *, double *); void show_array(const double *, const double *); void revalue(double, double *, double *); int main() { using namespace std; double properties[Max]; double *end = fill_array(properties, properties+Max); show_array(properties, end); if (end > properties) { cout << "Enter revaluation factor: "; double factor; while (!(cin >> factor)) { cin.clear(); while (cin.get() != '\n') continue; cout << "Bad input; Please enter a number: "; } revalue(factor,properties, end); show_array(properties, end); } cout << "Done.\n"; system("pause"); } double * fill_array(double * ar, double * br) { using namespace std; double temp; double *i; int j = 0; for (i = ar; i<br; i++,j++) { cout << "Enter value #" << (j + 1) << ": "; cin >> temp; if (!cin) { cin.clear(); while (cin.get() != '\n') continue; cout << "Bad input; input process terminated.\n"; break; } else if (temp < 0) break; *i = temp; } return i; } void show_array(const double *ar, const double *br) { using namespace std; const double *i; int j = 0; for (i = ar; i < br; i++,j++) { cout << "Property #" << (j + 1) << ": $"; cout << *i << endl; } } void revalue(double r,double *ar,double *br) { double *i; for (i = ar; i < br; i++) (*i)*= r; }
#include <iostream> #include <string> const int Seasons = 4; const char * Snames[Seasons] = { "Spring", "Summer", "Fall", "Winter" }; int main() { double expenses[Seasons]; fill(expenses); show(expenses); system("pause"); } void fill(double * pa) { for (int i = 0; i < Seasons; i++) { std::cout << "Enter " << Snames[i] << " expenses: "; std::cin >> pa[i]; } } void show(double * da) { double total = 0.0; std::cout << "\nEXPENSES\n"; for (int i = 0; i < Seasons; i++) { std::cout << Snames[i] << ": $" << da[i] << '\n'; total += da[i]; } std::cout << "Total: $" << total << '\n'; }
#include <iostream> #include <string> const int Seasons = 4; const char * Snames[Seasons] = { "Spring", "Summer", "Fall", "Winter" }; struct expenses { double expenses; }; void fill(expenses *); void show(expenses *); int main() { expenses *cost = new expenses[Seasons]; fill(cost); show(cost); system("pause"); } void fill(expenses * pa) { for (int i = 0; i < Seasons; i++) { std::cout << "Enter " << Snames[i] << " expenses: "; std::cin >> pa[i].expenses; } } void show(expenses * da) { double total = 0.0; std::cout << "\nEXPENSES\n"; for (int i = 0; i < Seasons; i++) { std::cout << Snames[i] << ": $" << da[i].expenses << '\n'; total += da[i].expenses; } std::cout << "Total: $" << total << '\n'; }
#include <iostream> using namespace std; const int SLEN = 30; struct student { char fullname[SLEN]; char hobby[SLEN]; int ooplevel; }; int getinfo(student [], int); void display1(student); void display2(const student *); void display3(const student *, int); int main() { cout << "Enter class size:"; int class_size; while (!(cin >> class_size)) { cin.clear(); cin.ignore(); cout << "Please enter class size:"; }; student * ptr_stu = new student[class_size]; int entered = getinfo(ptr_stu, class_size); for (int i = 0; i < entered; i++) { display1(ptr_stu[i]); display2(&ptr_stu[i]); } display3(ptr_stu, entered); delete[] ptr_stu; cout << "Done\n"; system("pause"); } int getinfo(student pa[], int n) { int count = 0; for (int i = 0; i < n; i++) { cin.ignore(); cout << "Please enter the fullname:"; cin.getline(pa[i].fullname, SLEN); cout << "Please enter the hobby:"; cin.getline(pa[i].hobby, SLEN); cout << "Please enter the ooplevel:"; cin >> pa[i].ooplevel; count++; } cout << "\nEnter end!"; return count; } void display1(student pa) { cout << "\ndisplay1:\nFullName:" << pa.fullname << "\nhobby:" << pa.hobby << "\nooplevel:" << pa.ooplevel << endl; } void display2(const student * pa) { cout << "\ndisplay2:\nFullName:" << pa->fullname << "\nhobby:" << pa->hobby << "\nooplevel:" << pa->ooplevel << endl; } void display3(const student * pa, int n) { cout << "\ndispaly3:\n" << endl; for (int i = 0; i < n; i++) cout << i+1 << "::FullName:" << pa[i].fullname << "\nhobby:" << pa[i].hobby << "\nooplevel:" << pa[i].ooplevel << endl; }
#include <iostream> using namespace std; double add(double, double); double sub(double, double); double calculate(double, double, double (double, double)); int main() { double a, b, c, d; cout << "Please enter two values:\n"; while ((cin >> a) && (cin >> b)) { c=calculate(a, b, add); d=calculate(a, b, sub); cout << "The sum and subtraction of the values are:" << c << "," << d << endl; cout << "Please continue to enter:\n"; } system("pause"); } double add(double a, double b) { double c; c = a + b; return c; } double sub(double a, double b) { double d; d = a - b; return d; } double calculate(double a, double b, double cal(double, double)) { double e; e = cal(a, b); return e; }