第20练 6.3 数组作为函数参数 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)

2026-06-25
| 2份
| 10页
| 2人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 作业-同步练
知识点 函数
使用场景 同步教学
学年 2026-2027
地区(省份) 湖南省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 107 KB
发布时间 2026-06-25
更新时间 2026-06-25
作者 xkw_068401954
品牌系列 上好课·一课一练
审核时间 2026-06-25
下载链接 https://m.zxxk.com/soft/58487505.html
价格 1.00储值(1储值=1元)
来源 学科网

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第20练,内容是6.3 数组作为函数参数。 《编程语言基础——C语言》(第5版)一课一练 第20练 6.3 数组作为函数参数 一、单选题 1. 在C语言中,将数组元素作为函数实参传递给形参时,传递的方式是( ) A. 值传递——将数组元素的值复制给形参 B. 地址传递——形参直接访问原数组元素 C. 引用传递 D. 根据数组元素类型不同而不同 2. 在C语言中,用数组名作为函数参数时,实际传递的是( ) A. 数组中所有元素的值 B. 数组的首地址 C. 数组的第一个元素的值 D. 数组的长度 3. 设有 void func(int b[]) { b[0] = 100; },在main()中定义 int a[5]={1,2,3,4,5}; 调用 func(a); 后,a[0]的值是( ) A. 1 B. 不确定 C. 100 D. 编译错误 4. 以下函数定义中,合法的一维数组形参声明是( ) A. void func(int b[5]) { ... } B. void func(int b[]) { ... } C. void func(int *b) { ... } D. 选项A、B、C都是合法的 5. 定义函数 void display(int b[][4], int n) 时,关于形参的说法正确的是( ) A. 二维数组形参可省略第一维大小,第二维大小不可省略 B. 二维数组形参可省略第二维大小,第一维大小不可省略 C. 第一维和第二维的大小都可以省略 D. 第一维和第二维的大小都不可省略 6. 以下二维数组形参的声明中,合法的是( ) A. void func(int a[3][]) { ... } B. void func(int a[][4]) { ... } C. void func(int a[][]) { ... } D. void func(int a[3][4], int a[][4]) 中第一种写法和第二种同时合法 7. 数组名作为函数参数时,通常会在函数中额外添加一个形参表示( ) A. 数组的类型 B. 数组元素的数据类型 C. 数组的长度(元素个数) D. 数组的最大值 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> void change(int b[]) { int i; for (i = 0; i < 3; i++) b[i] = b[i] * 2; } main() { int a[3] = {1, 2, 3}, i; change(a); for (i = 0; i < 3; i++) printf("%d ", a[i]); } 三、程序填空题 9. 以下程序的功能是:定义函数sumArr计算一个整型数组所有元素的和。请填空。 #include <stdio.h> int sumArr(int a[], int n) { int i, s = 0; for (i = 0; i < n; i++) s = 【1】; return s; } main() { int arr[5] = {10, 20, 30, 40, 50}; printf("sum=%d ", sumArr(arr, 5)); } 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是定义printArr函数输出一个3x3矩阵。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 void printArr(int a[][], int n) L3 { L4 int i, j; L5 for (i = 0; i < n; i++) L6 { L7 for (j = 0; j < n; j++) L8 printf("%4d", a[i][j]); L9 printf(" "); L10 } L11 } L12 main() L13 { L14 int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; L15 printArr(arr, 3); L16 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第20练,内容是6.3 数组作为函数参数。 《编程语言基础——C语言》(第5版)一课一练 第20练 6.3 数组作为函数参数 一、单选题 1. 在C语言中,将数组元素作为函数实参传递给形参时,传递的方式是( ) A. 值传递——将数组元素的值复制给形参 B. 地址传递——形参直接访问原数组元素 C. 引用传递 D. 根据数组元素类型不同而不同 【答案】A 【解析】数组元素是普通的变量,作为函数实参时采用值传递方式,即将数组元素的值复制一份传递给形参,形参的改变不影响原数组元素的值。这与普通变量作实参一致。 2. 在C语言中,用数组名作为函数参数时,实际传递的是( ) A. 数组中所有元素的值 B. 数组的首地址 C. 数组的第一个元素的值 D. 数组的长度 【答案】B 【解析】数组名作为函数参数时,传递的不是数组中所有元素的值,而是数组在内存中的首地址。因此形参数组和实参数组共享同一段内存单元。 3. 设有 void func(int b[]) { b[0] = 100; },在main()中定义 int a[5]={1,2,3,4,5}; 调用 func(a); 后,a[0]的值是( ) A. 1 B. 不确定 C. 100 D. 编译错误 【答案】C 【解析】数组名传递的是数组首地址,形参数组b和实参数组a指向同一段内存。在func中修改b[0]实际修改的是a[0]所在的内存单元,因此a[0]变为100。 4. 以下函数定义中,合法的一维数组形参声明是( ) A. void func(int b[5]) { ... } B. void func(int b[]) { ... } C. void func(int *b) { ... } D. 选项A、B、C都是合法的 【答案】D 【解析】C语言中一维数组作形参有三种等价的写法:int b[5](指定长度但编译器忽略)、int b[](不指定长度)、int *b(指针形式)。三种写法在函数中都是合法的。 5. 定义函数 void display(int b[][4], int n) 时,关于形参的说法正确的是( ) A. 二维数组形参可省略第一维大小,第二维大小不可省略 B. 二维数组形参可省略第二维大小,第一维大小不可省略 C. 第一维和第二维的大小都可以省略 D. 第一维和第二维的大小都不可省略 【答案】A 【解析】二维数组作形参时,可以省略第一维的大小,编译器不检查第一维大小;但第二维的大小不可省略,否则函数无法确定数组的排列方式(每行多少列)。 6. 以下二维数组形参的声明中,合法的是( ) A. void func(int a[3][]) { ... } B. void func(int a[][4]) { ... } C. void func(int a[][]) { ... } D. void func(int a[3][4], int a[][4]) 中第一种写法和第二种同时合法 【答案】B 【解析】二维数组形参不能省略第二维大小,选项中int a[][4]符合要求。int a[3][]省略了第二维,int a[][]两维都省略,均不合法。形参中指定第一维大小不受限,但第二维大小必须给出。 7. 数组名作为函数参数时,通常会在函数中额外添加一个形参表示( ) A. 数组的类型 B. 数组元素的数据类型 C. 数组的长度(元素个数) D. 数组的最大值 【答案】C 【解析】数组名传递的是首地址,编译器不关心数组长度。为使函数明确实参数组的长度,通常添加一个int型形参来传递数组的元素个数。如void func(int a[], int n)中的n就表示数组长度。 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> void change(int b[]) { int i; for (i = 0; i < 3; i++) b[i] = b[i] * 2; } main() { int a[3] = {1, 2, 3}, i; change(a); for (i = 0; i < 3; i++) printf("%d ", a[i]); } 【答案】2 4 6 【解析】数组名a传递的是数组首地址,形参b和实参a指向同一段内存。change()中将每个元素乘以2:b[0]=2, b[1]=4, b[2]=6,同时a数组的元素也被修改。输出2 4 6。 三、程序填空题 9. 以下程序的功能是:定义函数sumArr计算一个整型数组所有元素的和。请填空。 #include <stdio.h> int sumArr(int a[], int n) { int i, s = 0; for (i = 0; i < n; i++) s = 【1】; return s; } main() { int arr[5] = {10, 20, 30, 40, 50}; printf("sum=%d ", sumArr(arr, 5)); } 【答案】【1】s + a[i] 【解析】函数sumArr通过循环遍历数组,每次将a[i]累加到s中,因此填s + a[i]。参数n传递了数组长度,使函数知道处理的元素个数。最终输出sum=150(10+20+30+40+50)。 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是定义printArr函数输出一个3x3矩阵。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 void printArr(int a[][], int n) L3 { L4 int i, j; L5 for (i = 0; i < n; i++) L6 { L7 for (j = 0; j < n; j++) L8 printf("%4d", a[i][j]); L9 printf(" "); L10 } L11 } L12 main() L13 { L14 int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; L15 printArr(arr, 3); L16 } 【答案】【1】L2: void printArr(int a[][], int n) → 修改为 void printArr(int a[][3], int n)(二维数组形参不能省略第二维大小,须指定列数) 【解析】二维数组作形参时,第一维大小可以省略,但第二维大小不可省略。int a[][]省略了第二维,编译器无法确定每行的列数,从而导致无法正确访问数组元素。修改为int a[][3]即可。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第20练 6.3 数组作为函数参数 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
1
第20练 6.3 数组作为函数参数 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。