内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第19练,内容是6.1 函数的定义、6.2 函数的调用。
《编程语言基础——C语言》(第5版)一课一练 第19练
6.1 函数的定义、6.2 函数的调用
一、单选题
1. 以下关于C语言函数定义的描述中,正确的是( )
A. 函数定义时形参列表必须为空
B. 多个形参类型相同时可简写为 int max(int x, y)
C. 函数类型说明符决定了函数的返回值类型
D. 函数体可以省略
2. 关于C语言中函数的值传递,以下说法正确的是( )
A. 形参的值改变会影响实参
B. 将实参的值复制给形参,形参的改变不影响实参
C. 形参和实参共用同一内存单元
D. 实参必须是变量
3. 设有函数 int max(int x, int y) { return x>y?x:y; },以下调用方式中合法的是( )
A. c = max(a, b); 和 c = 2 * max(a, b) + 5; 以及 d = max(max(a,b), c);
B. 函数调用限定为语句形式: c = max(a, b);
C. 函数调用限定为表达式形式
D. 函数调用限定为参数形式
4. 关于函数原型(函数声明),正确的描述是( )
A. 所有函数调用前都必须写函数原型,否则编译错误
B. 函数原型中形参名可以省略,但形参类型必须与定义一致
C. 函数原型的格式与函数定义完全相同
D. 如果函数定义出现在main()之前,函数原型可以省略
5. 以下函数定义中,正确的是( )
A. int func(x, y) { return x+y; }
B. int func(int x, int y) { return x+y; }
C. func(int x, int y) { return x+y; }
D. void func(int x, int y) { return x+y; }
6. 关于return语句,以下说法不正确的是( )
A. 一个函数中return语句不可超过一条
B. 遇到return语句时,函数立即终止执行并返回指定值
C. 如果return语句中的表达式类型与函数类型不一致,系统进行类型转换
D. void类型的函数可以没有return语句
7. 设有函数调用 c = func(3.5, 'a'); 若 func 的形参类型为 (int, int),则传递后形参的值分别是( )
A. 3.5 和 'a',系统不转换
B. 编译错误,类型不匹配
C. 3 和 97
D. 0 和 0
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
int func(int x)
{
int i, s = 1;
for (i = 1; i <= x; i++)
s = s * i;
return s;
}
main()
{
int n = 5;
printf("%d
", func(n));
}
三、程序填空题
9. 以下程序的功能是:定义函数max2返回两个整数中的较大值,在main()中调用并输出。请填空。
#include <stdio.h>
【1】
{
return x > y ? x : y;
}
main()
{
int a = 10, b = 20;
printf("%d
", max2(a, b));
}
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是定义swap函数交换两个变量的值。程序中有1处设计缺陷(在当前值传递机制下无法达成目标),请指出所在行号并说明修改意见,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 void swap(int x, int y)
L3 {
L4 int t;
L5 t = x; x = y; y = t;
L6 }
L7 main()
L8 {
L9 int a = 5, b = 10;
L10 swap(a, b);
L11 printf("a=%d, b=%d
", a, b);
L12 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第19练,内容是6.1 函数的定义、6.2 函数的调用。
《编程语言基础——C语言》(第5版)一课一练 第19练
6.1 函数的定义、6.2 函数的调用
一、单选题
1. 以下关于C语言函数定义的描述中,正确的是( )
A. 函数定义时形参列表必须为空
B. 多个形参类型相同时可简写为 int max(int x, y)
C. 函数类型说明符决定了函数的返回值类型
D. 函数体可以省略
【答案】C
【解析】函数定义时在函数名之前需指定类型说明符(如int、float、void等),它决定了函数返回值的数据类型。选项B错误,同类型形参也不可简写,必须逐个声明。
2. 关于C语言中函数的值传递,以下说法正确的是( )
A. 形参的值改变会影响实参
B. 将实参的值复制给形参,形参的改变不影响实参
C. 形参和实参共用同一内存单元
D. 实参必须是变量
【答案】B
【解析】C语言函数参数传递是单向的值传递:形参和实参在内存中分别占用不同的内存单元,将实参的值传递给形参后,形参单元的值改变不会影响到实参单元中的值。
3. 设有函数 int max(int x, int y) { return x>y?x:y; },以下调用方式中合法的是( )
A. c = max(a, b); 和 c = 2 * max(a, b) + 5; 以及 d = max(max(a,b), c);
B. 函数调用限定为语句形式: c = max(a, b);
C. 函数调用限定为表达式形式
D. 函数调用限定为参数形式
【答案】A
【解析】有返回值的函数有三种调用方式:①函数语句(如max(a,b);忽略返回值);②函数表达式(如2*max(a,b)+5);③作为函数参数(如max(max(a,b),c))。
4. 关于函数原型(函数声明),正确的描述是( )
A. 所有函数调用前都必须写函数原型,否则编译错误
B. 函数原型中形参名可以省略,但形参类型必须与定义一致
C. 函数原型的格式与函数定义完全相同
D. 如果函数定义出现在main()之前,函数原型可以省略
【答案】D
【解析】一般把函数原型写在main()之前、函数定义写在main()之后。但若函数定义出现在main()之前(如教材例6-1、6-2),则编译器根据函数定义首部即可检查调用合法性,函数原型可以省略。
5. 以下函数定义中,正确的是( )
A. int func(x, y) { return x+y; }
B. int func(int x, int y) { return x+y; }
C. func(int x, int y) { return x+y; }
D. void func(int x, int y) { return x+y; }
【答案】B
【解析】选项A形参未声明类型(传统风格已淘汰);选项C缺少返回值类型说明符(int也不能总省略);选项D是void函数不能返回int值。选项B正确:返回值int,形参类型声明完整。
6. 关于return语句,以下说法不正确的是( )
A. 一个函数中return语句不可超过一条
B. 遇到return语句时,函数立即终止执行并返回指定值
C. 如果return语句中的表达式类型与函数类型不一致,系统进行类型转换
D. void类型的函数可以没有return语句
【答案】A
【解析】一个函数中可以有多个return语句(如if-else各自return),分别根据条件返回各自的值。选项A的说法不正确。其余选项均正确。
7. 设有函数调用 c = func(3.5, 'a'); 若 func 的形参类型为 (int, int),则传递后形参的值分别是( )
A. 3.5 和 'a',系统不转换
B. 编译错误,类型不匹配
C. 3 和 97
D. 0 和 0
【答案】C
【解析】实参与形参类型兼容时,系统按赋值转换规则自动进行类型转换。3.5转换为int得3,字符'a'的ASCII码为97转换为int得97。
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
int func(int x)
{
int i, s = 1;
for (i = 1; i <= x; i++)
s = s * i;
return s;
}
main()
{
int n = 5;
printf("%d
", func(n));
}
【答案】120
【解析】func(x)函数计算x的阶乘。func(5)执行:s=1,i=1时s=1,i=2时s=2,i=3时s=6,i=4时s=24,i=5时s=120。返回120并输出。
三、程序填空题
9. 以下程序的功能是:定义函数max2返回两个整数中的较大值,在main()中调用并输出。请填空。
#include <stdio.h>
【1】
{
return x > y ? x : y;
}
main()
{
int a = 10, b = 20;
printf("%d
", max2(a, b));
}
【答案】【1】int max2(int x, int y)
【解析】函数定义首部包含三部分:返回值类型(int)、函数名(max2)、形参列表(int x, int y)。注意同类型形参不能简写为int x, y。
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是定义swap函数交换两个变量的值。程序中有1处设计缺陷(在当前值传递机制下无法达成目标),请指出所在行号并说明修改意见,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 void swap(int x, int y)
L3 {
L4 int t;
L5 t = x; x = y; y = t;
L6 }
L7 main()
L8 {
L9 int a = 5, b = 10;
L10 swap(a, b);
L11 printf("a=%d, b=%d
", a, b);
L12 }
【答案】程序不会达到交换效果。因为C语言采用值传递,swap中交换的是形参x和y,不影响实参a和b。若需交换实参,应使用指针作为参数(第8章内容)。当前条件下无法实现实参交换。
【解析】值传递是单向的:形参和实参占用不同内存单元,形参x和y的交换不影响实参a和b。要交换实参的值,需要使用指针(传地址),这将在第8章学习。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$