C++PrimerPlus第六版_复习题-第七章

2022/4/20 17:12:44

本文主要是介绍C++PrimerPlus第六版_复习题-第七章,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

7.12

  1 7.12 复习题
  2 1. 使用函数的3个步骤是什么?
  3     函数原型 函数定义 函数调用。
  4     
  5 2. 请创建与下面的描述匹配的函数原型。
  6 a. igor( )没有参数, 且没有返回值。
  7     void igor(void);
  8 b. tofu( )接受一个int参数, 并返回一个float。
  9     float tofu(int value);
 10 c. mpg( )接受两个double参数, 并返回一个double。
 11     double mpg(double value1,double value2);
 12 d. summation( )将long数组名和数组长度作为参数, 并返回一个long值。
 13     long summation(long arr[],int size);
 14 e. doctor( )接受一个字符串参数(不能修改该字符串) , 并返回一个double值。
 15     double doctor(const char *str];
 16 f. ofcourse( )将boss结构作为参数, 不返回值。
 17     void ofcourse(boss mpg);
 18 g. plot( )将map结构的指针作为参数, 并返回一个字符串。
 19     char * plot(map * mpg);
 20 
 21 3. 编写一个接受3个参数的函数:int数组名、数组长度和一个int值,
 22 并将数组的所有元素都设置为该int值。
 23     void fun(int arr[],int size, int value)
 24     {
 25         for(int i=0;i<size;++i)
 26             arr[i]=value;
 27     }
 28 
 29 4. 编写一个接受3个参数的函数: 指向数组区间中第一个元素的指
 30 针、 指向数组区间最后一个元素后面的指针以及一个int值, 并将数组中
 31 的每个元素都设置为该int值。
 32     void fun(int * begin,int * end,int value);
 33         for(int a=begin;a!=end;++a)
 34             *a = value // 与答案不一致
 35 5. 编写将double数组名和数组长度作为参数, 并返回该数组中最大值的函数。该函数不应修改数组的内容。    
 36     double fun(const double arr[], int size)
 37     {
 38         double = max;
 39         max = arr[0];
 40         for(int i=1;i<size;++i)
 41             (arr[i]>max)?(max = arr[i]):;
 42     }
 43 6. 为什么不对类型为基本类型的函数参数使用const限定符?
 44     将const限定符用于指针,以防止指向的原始数据被修改。 程序传递基本类型(如int或double)时,它将按值传递, 以便函数使用副本。 这样, 原始数据将得到保护。
 45 
 46 7. C++程序可使用哪3种C-风格字符串格式?
 47     char * str ; char str[] ; "somestrs" ;string str;  
 48 8. 编写一个函数, 其原型如下:
 49     int replace(char *str, char c1, char c2);
 50 该函数将字符串中所有的c1都替换为c2, 并返回替换次数。
 51     int replace(char *str, char c1, char c2)
 52     {
 53         int count=0;
 54         char ch;
 55         while(*str)
 56         {
 57         if(*str == C1){            
 58             *str = c2;
 59             ++count;}
 60         ++str;
 61         }
 62         return count;
 63     }
 64     
 65 9. 表达式*"pizza"的含义是什么? "taco" [2]呢?
 66     由于C++将“pizza”解释为其第一个元素的地址, 因此使用*运算
 67 符将得到第一个元素的值, 即字符p。 由于C++将“taco”解释为第一个元
 68 素的地址, 因此它将“taco”[2]解释为第二个元素的值, 即字符c。 换句话
 69 来说, 字符串常量的行为与数组名相同。
 70     
 71 10. C++允许按值传递结构, 也允许传递结构的地址。 如果glitz是
 72 一个结构变量, 如何按值传递它? 如何传递它的地址? 这两种方法有何
 73 利弊?
 74     fun(glitz);  void fun(glitz gmp);  //按值传递它, 只要传递结构名glitz即可
 75     fun(&glitz);  void fun(glitz * gmp);
 76     
 77 11. 函数judge( )的返回类型为int, 它将这样一个函数的地址作为参
 78 数: 将const char指针作为参数, 并返回一个int值。 请编写judge( )函数
 79 的原型。
 80     int fun(const char* ); //int *pf(const char* )
 81     答: int judge(int *pf(const char* ));
 82     
 83 12. 假设有如下结构声明:
 84     struct applicant{
 85         char name[30];
 86         int credit_ratings[3];
 87     };
 88 a. 编写一个函数, 它将application结构作为参数, 并显示该结构的
 89 内容。
 90     void fun(applicant mpg)
 91     {
 92         cout<<mpg.name<<endl;
 93         for(int i=0;i<3;++i)
 94             cout<<mpg.credit_ratings[i];
 95         cout<<endl;
 96     }
 97     
 98 b. 编写一个函数, 它将application结构的地址作为参数, 并显示该
 99 参数指向的结构的内容。
100     void fun(applicant *mpg)
101     {
102         cout<<mpg->name<<endl;
103         for(int i;i<3;++i)
104             cout<<mpg->credit_ratings[i];
105         cout<<endl;
106     }
107 
108 13. 假设函数f1()和f2()的原型如下:
109     void f1(applicant *a);
110     const char *f2(const applicant *a1, const applicant *a2);
111 请将p1和p2分别声明为指向f1和f2的指针; 将ap声明为一个数组,
112 它包含5个类型与p1相同的指针; 将pa声明为一个指针, 它指向的数组
113 包含10个类型与p2相同的指针。 使用typedef来帮助完成这项工作。
114     typedef void (*p_f1)(applicant *a);
115     p_f1 p1 = f1;
116     typedef const char *(*p_f2)(const applicant * , const applicant * );
117     p_f2 p2 = f2;
118     
119     p_f1 ap[5];  //包含指针的数组
120     p_f2 (*pa)[10];  // 包含10个类型与p2相同的指针
121     
122     
123     
124    

 



这篇关于C++PrimerPlus第六版_复习题-第七章的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程