c++ primer plus 习题答案(2)

p221.8

 1 #include<iostream>

 2 #include<cstdlib>

 3 #include<cstring>

 4 using namespace std;

 5 const int SLEN = 30;

 6 struct student{

 7     char fullname[SLEN];

 8     char hobby[SLEN];

 9     int ooplevel;

10 };

11 int getinfo(student pa[], int n);

12 void display1(student st);

13 void display2(const student *ps);

14 void display3(const student pa[], int n);

15 

16 int main(){

17     cout << "enter class size:";

18     int class_size;

19     cin >> class_size;

20     while (cin.get() != '\n')

21         continue;

22     student *ptr_stu = new student[class_size];

23     int entered = getinfo(ptr_stu, class_size);

24     for (int i = 0; i < entered; i++){

25         display1(ptr_stu[i]);

26         display2(&ptr_stu[i]);

27     }

28     display3(ptr_stu, entered);

29     delete[]ptr_stu;

30     cout << "done\n";

31     system("pause");

32     return 0;

33 }

34 

35 int getinfo(student pa[], int n){

36     int i = 0, count = 0;

37     while (i < n && *pa[i].fullname != '\0'){

38         cin.getline(pa[i].fullname, SLEN);

39         cin.getline(pa[i].hobby, SLEN);

40         cin >> pa[i].ooplevel;

41         cin.get();

42         count++;

43         i++;

44     }

45     return count;

46 }

47 

48 void display1(student st){

49     cout << "st.fullname" << st.fullname <<

50         endl << "st.hobby" << st.hobby <<

51         endl << "st.ooplevel" << st.ooplevel <<

52         endl;

53 }

54 

55 void display2(const student *ps){

56     cout << "ps->fullname" << ps->fullname <<

57         endl << "ps->hobby" << ps->hobby <<

58         endl << "ps->ooplevel" << ps->ooplevel <<

59         endl;

60 }

61 

62 void display3(const student pa[], int n){

63     for (int i = 0; i < n; i++){

64         cout << "pa[i].fullname" << pa[i].fullname

65             << endl << "pa[i].hobby" << pa[i].hobby

66             << endl << "pa[i].ooplevel" << pa[i].ooplevel

67             << endl;

68     }

69 }

p259.2

 1 #include<iostream>

 2 #include<cstdlib>

 3 #include<cstring>

 4 using namespace std;

 5 struct candybar {

 6     char brand[81];

 7     float weight;

 8     int calory;

 9 };

10 void assign(candybar &, char br[81]="millennium munch", float w=2.85, int c=350);

11 void show_menu(candybar&);

12 

13 int main(){

14     candybar tasty;

15     assign(tasty);

16     show_menu(tasty);

17     system("pause");

18     return 0;

19 }

20 

21 void assign(candybar &delicious, char br[81], float w , int c){

22     strcpy(delicious.brand, br);

23     delicious.weight = w;

24     delicious.calory = c;

25 }

26 

27 void show_menu(candybar&delicious){

28     cout << delicious.brand << endl;

29     cout << delicious.weight << endl;

30     cout << delicious.calory << endl;

31 }

p259.4

 1 #include<iostream>

 2 #include<cstdlib>

 3 #include<cctype>

 4 using namespace std;

 5 struct stringy{

 6     char* str;

 7     int ct;

 8 };

 9 void set(stringy &, const char*);

10 void show(const stringy &, int times = 1);

11 void show(const char*, int times = 1);

12 

13 int main(){

14     stringy beany;

15     char testing[] = "reality isn't what it used to be.";

16     set(beany, testing);

17     show(beany);

18     show(beany, 2);

19     delete beany.str;

20     testing[0] = 'D';

21     testing[1] = 'u';

22     show(testing);

23     show(testing, 3);

24     show("Done!");

25     system("pause");

26     return 0;

27 }

28 

29 void set(stringy &beany, const char* testing){

30     int num = strlen(testing);

31     beany.str = new char[num + 1];

32     strcpy(beany.str, testing);

33     beany.ct = num;

34 }

35 

36 void show(const stringy &beany, int times){

37     for (int i = 0; i < times; i++)

38         cout << beany.str << endl

39             << beany.ct << endl;

40 }

41 

42 void show(const char* testing, int times){

43     for (int i = 0; i < times; i++)

44         cout << testing << endl;

45 }

p260.6

 1 #include<iostream>

 2 #include<cstdlib>

 3 #include<cstring>

 4 using namespace std;

 5 template<class T>

 6 T maxn(T ar[], int num);

 7 template<> char *maxn(char *pt[], int num);

 8 

 9 int main(){

10     int num1[6];

11     double num2[4];

12     cout << "enter the member of two array\n";

13     for (int i = 0; i < 6; i++)

14         cin >> num1[i];

15     for (int i = 0; i < 4; i++)

16         cin >> num2[i];

17     int imax = maxn(num1, 6);

18     double dmax = maxn(num2, 4);

19     cout << "imax is" << imax << endl

20         << "dmax is" << dmax << endl;

21     char *str[5];

22     str[0] = "his eyes came round";

23     str[1] = "it all seems very unchanged";

24     str[2] = "which contain of old the pipes";

25     str[3] = "yes, billy, i know";

26     str[4] = "will you be please to dine";

27     char *address = maxn(str, 5);

28     cout << (int*)address << " " <<

29         address << endl;

30     system("pause");

31     return 0;

32 }

33 

34 template<class T>

35 T maxn(T ar[], int num){

36     T max=ar[0];

37     for (int i = 1; i < num; i++)

38         if (max < ar[i])

39             max = ar[i];

40     return max;

41 }

42 

43 template<> char *maxn(char *pt[], int num){

44     int length[5], i;

45     for (i = 0; i < 5; i++)

46         length[i] = strlen(pt[i]);

47     int max = length[0];

48     for (i = 0; i < 5; i++)

49         if (max < length[i])

50             max = length[i];

51     for (i = 0; i < 5; i++)

52         if (max == length[i])

53             break;

54     return pt[i];            

55 }

你可能感兴趣的:(C++ Primer Plus)