每日十问7c++-函数c++的编程模块

每日十问7c+±函数c++的编程模块

1.使用函数的3个步骤是什么?

解析:
函数为程序设计中的编程模块,可以通过对函数的调用实现函数的代码重用功能。通常系统预定义函数可以在添加对应预编译指令的头文件后直接调用。用户自定义的函数需要首先声明函数原型、定义函数并实现函数的功能性代码,然后才能调用函数。

2.请创建与下面的描述匹配的函数原型。

a.igor()没有参数,且没有返回值。
b.tofu()接受一个 int 参数,并返回一个 float 值。
c.mpg()接受两个 double 参数,并返回一个 double 值。
d.summation()以long 数组名和数组长度作为参数,并返回一个long值。
e.doctor()接受一个字符串参数(不能修改该字符串),并返回一个 double值。 f.ofcourse()以 boss 结构作为参数,不返回值。
g.plot()以map 结构体的指针作为参数,并返回一个字符串。

解析:
函数的原型声明主要标识一个函数的基本信息,从而提高编译器的工作效率。函数原型需要提供函数名、返回值类型、参数数量以及参数类型,其中无返回值可以标识为 void,无参数可以使参数列表空白,或者标注为 void。
a. void igor();或者void igor(void);
b. float tofu(int n);或者float tofu(int)
c.double mpg(double d1, double d2) ;或者 double mpg(double double d. long summation(long arr[], int size); e. double doctor(const charstr); f. void ofcourse(boss bs); g.charplot(map*pm );

3.编写一个接受3个参数的函数,3个参数分别为int数组名、数组长度和一个int值并将数组的所有元素设置为该int值。

解析:
当以数组作为函数的参数时,需要将数组的类型和数组的元素个数作为两个参数分别表示,通常数组类型在前,数组长度参数在后并且使用整型变量。此外,本题函数不需要
返回值,因此代码如下。
void set value(int arr[l, int size, int value){
for(inti=0;i<size;i++)
arr[i]=value;
}

4.编写一个接受3个参数的函数,3个参数分别为指向数组区间中第1个元素的指针、指向数组区间中最后一个元素后面的指针以及一个 int 值,并将数组中的每个元素都设置为该 int 值。
解析:
在处理数组数据时,函数可以直接使用数组作为参数,也可以使用指针作为参数来表示相关数据。为了使用指针来表示数组区间,需要使用数组的头指针和数组的尾指针两个参数,这样才能在函数体内正确查找和表示数组的元素。此外,函数不需要返回值,因此本题的代码如下。
void set value(intbegin; intend; int value){
for(intp= begin; p!=end;p++)

p = value;

}

5.编写以 double 类型的数组名和数组长度作为参数并返回该数组中最大值的函数。该函数不应修改数组的内容。
解析:
将本题和复习题3对比,可以发现本题的数组元素在函数体内不需要修改,而复习题3需要对数组进行赋值操作,因此对于本题中的参数需要添加 const 关键字,这样才能更好地维护函数代码的功能和运行效率,此外,函数返回值应当为 double 类型。完整代码如下。
double max(const double arr[], int size){
int max_value = arr[0];
for(int i=0; i<size;i++){
if(max value<arr[i])

max value = arr[i]
}

}

6.为什么不对类型为基本类型的函数参数使用 const 限定符?

解析:
C++语言中的参数传递是以值传递的形式实现的,即函数的实参表示以值的副本的形式传递给函数的形参,因此,在实参传递过程中主调函数的实参并不会被修改。但是以指针形式传递或者其他复合数据类型,则可以通过地址的指向间接访问和存取主调函数中的数据,因此需要使用 const 关键字进行数据的保护。

7.C++程序可使用哪3种C风格字符串?

解析:
C++程序中使用的C风格字符串主要有3种形式,其中最常用的是字符数组的形式,其次是以双引号标识的字符串常量形式,最后也可以使用指向字符串首字符的指针的形式来表示。其中使用字符数组形式表示和使用指针形式表示的字符串在程序中类似,使用双引号表示的是常量形式的字符串,程序中不能修改字符串的数据。

8.编写一个函数,其原型如下。
int replace(charstr, char cl, char c2);
该函数将字符串中所有的 cl 都替换为 c2,并返回替换次数。

解析:
本题的函数有3个参数,分别是字符串的指针以及表示查找和替换的两个字符数据。题目要求将字符串内的数据进行替换,基本算法就是从头开始遍历整个字符串,进行字符比对。其中循环代码的判断条件为是否到了字符串的末尾,因此使用 while(*str)或者 while(*str != "10’)表示均可。完整代码如下。
int replace(char*str, char cl,char c2){ int count; while(*str){
if(*str== c1){
*str = c2

count++;

}

str++;
}
return count;

}

9、表达式"pizza"的含义是什么?“taco” [2]呢?*
解析:
C++语言中使用双引号标识字符串常量,字符串常量使用其第1个元素的地址进行表示,C++中通过这个首元素的地址实现了字符串常量的存储位置的查询,因此通过运算符,"pizza"能够直接找到字符’p’。同理,“taco”[2]则表示通过字符串中首字符的地址查找到该字符串的第3个元素’c’。

10.C++允许按值传递结构体,也允许传递结构体的地址。如果glitz是一个结构体变量,如何按值传递它?如何传递它的地址?这两种方法有何利弊?
解析:
和其他基本数据类型类似,C++中的值传递只需要将变量直接传递给函数即可,若使用地址传递,对于变量需要使用&取地址,因此按值传递使用结构体名 glitz 即可。传递地地使用地址运算符,传递形式为&glitz。按值传递通过数据副本形式保护原始数据,但效率低下:按地址传递可节省时间和内存,但不能保护原始数据,除非对函数参数使用了const限定符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五百五。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值