内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第23练,内容是6.1 函数的定义、参数与返回值。
《C语言》(第五版)一课一练 第23练
6.1 函数的定义、参数与返回值
一、单选题
1. C语言中,函数定义的一般形式为( )
A. 类型名 函数名 { 函数体 }
B. 函数名(参数) 类型名 { 函数体 }
C. 类型名 函数名[参数列表] { 函数体 }
D. 类型名 函数名(参数列表) { 函数体 }
2. 关于C语言函数的参数,下列说法正确的是( )
A. 形式参数在函数定义时就分配了内存空间
B. 形式参数在函数被调用时才分配内存空间
C. 形式参数和实际参数可以有不同的数量和类型
D. 函数可以没有参数列表括号,直接写函数体
3. 关于函数的返回值,以下说法正确的是( )
A. return语句可以返回一个表达式的计算结果
B. 一个函数通过return语句可以同时返回多个值
C. void类型的函数也可以使用return返回值
D. return语句后面的程序代码仍会继续执行
4. 已知以下函数定义:
【 】 max(int x, int y)
{ return x > y ? x : y; }
空白处应填入的类型说明符是( )
A. void(函数不需要返回值类型)
B. float(比较结果可能为浮点型)
C. int(返回值为整型数据)
D. char(返回值类型无关紧要)
5. 已知函数定义 void swap(int a, int b) { int t=a; a=b; b=t; }
在main中调用 swap(x,y); 后,以下说法正确的是( )
A. x和y的值被成功交换
B. 编译器报错,因为swap没有返回值
C. a和b的值被交换,同时x和y也被交换
D. x和y的值保持不变,形参交换不影响实参
6. 关于C语言函数的定义,以下说法正确的是( )
A. 所有函数必须定义在main函数之前
B. 一个源文件中最多可定义一个函数
C. 函数不能嵌套定义,可以嵌套调用
D. 函数必须放在头文件中才能被调用
7. 已知函数定义 int fun(int n) { return n*n; }
调用 fun(3+2) 的返回值是( )
A. 25
B. 13
C. 5
D. 编译错误(实参必须是变量)
二、简答题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
main()
{
int m = 10, n = 20, result;
result = add(m, n);
printf("%d + %d = %d
", m, n, result);
}
三、案例分析题
9. 以下程序的功能是定义一个函数计算两数中的较大值,然后在main函数中调用。请填空。
#include <stdio.h>
int larger(【1】)
{
if (x > y)
return x;
else
return y;
}
main()
{
int a, b;
printf("请输入两个整数:");
scanf("%d%d", 【2】);
printf("较大值=%d
", larger(【3】));
}
四、综合应用题
10. 编写一个C程序:定义一个函数 int power(int base, int exp),计算base的exp次方(即base^exp,exp为非负整数),并在main函数中从键盘输入底数和指数,调用该函数计算并输出结果。
示例:输入2和3,输出8(2的3次方=2×2×2)。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第23练,内容是6.1 函数的定义、参数与返回值。
《C语言》(第五版)一课一练 第23练
6.1 函数的定义、参数与返回值
一、单选题
1. C语言中,函数定义的一般形式为( )
A. 类型名 函数名 { 函数体 }
B. 函数名(参数) 类型名 { 函数体 }
C. 类型名 函数名[参数列表] { 函数体 }
D. 类型名 函数名(参数列表) { 函数体 }
【答案】D
【解析】C语言函数定义的完整格式为:返回值类型 函数名(形式参数列表) { 声明部分; 执行语句; }。参数列表必须用圆括号括起来,不能使用花括号和方括号。类型名指定函数返回值的类型,如果函数不需要返回值则写void。
2. 关于C语言函数的参数,下列说法正确的是( )
A. 形式参数在函数定义时就分配了内存空间
B. 形式参数在函数被调用时才分配内存空间
C. 形式参数和实际参数可以有不同的数量和类型
D. 函数可以没有参数列表括号,直接写函数体
【答案】B
【解析】形式参数(形参)在函数定义时并不占用内存空间,当函数被调用时才分配临时内存,调用结束后释放。实际参数(实参)的数量和类型必须与形参一致。函数定义中参数列表的括号是必需的,无参数时也需要写空括号。
3. 关于函数的返回值,以下说法正确的是( )
A. return语句可以返回一个表达式的计算结果
B. 一个函数通过return语句可以同时返回多个值
C. void类型的函数也可以使用return返回值
D. return语句后面的程序代码仍会继续执行
【答案】A
【解析】return后面可以跟一个表达式,先将表达式求值再将结果返回给调用者。每个函数至多返回一个值(通过return),不能同时返回多个值。void类型的函数可以使用return(不带表达式)来提前退出,但不能return值。return执行后函数立即结束,后面的代码不会执行。
4. 已知以下函数定义:
【 】 max(int x, int y)
{ return x > y ? x : y; }
空白处应填入的类型说明符是( )
A. void(函数不需要返回值类型)
B. float(比较结果可能为浮点型)
C. int(返回值为整型数据)
D. char(返回值类型无关紧要)
【答案】C
【解析】函数max的功能是返回两个整数中的较大值,返回值类型与参数类型一致为int。如果写void,则编译错误(void函数不能return值)。如果写float,返回值类型与return表达式类型不匹配,可能产生精度损失。类型说明符应与函数实际返回值的类型一致。
5. 已知函数定义 void swap(int a, int b) { int t=a; a=b; b=t; }
在main中调用 swap(x,y); 后,以下说法正确的是( )
A. x和y的值被成功交换
B. 编译器报错,因为swap没有返回值
C. a和b的值被交换,同时x和y也被交换
D. x和y的值保持不变,形参交换不影响实参
【答案】D
【解析】C语言函数参数传递采用"值传递"方式:调用时将实参的值复制给形参,函数内对形参的修改不会影响实参。swap函数交换的是局部变量a和b的值,实参x和y保持不变。要实现实参值的交换,需要通过指针传递变量的地址。
6. 关于C语言函数的定义,以下说法正确的是( )
A. 所有函数必须定义在main函数之前
B. 一个源文件中最多可定义一个函数
C. 函数不能嵌套定义,可以嵌套调用
D. 函数必须放在头文件中才能被调用
【答案】C
【解析】C语言中不能在函数体内再定义函数(不能嵌套定义),程序中的每个函数都是独立定义的。函数之间可以相互调用(可以嵌套调用)。函数可以定义在main之前、之后(需要声明),也可以定义在其他源文件中。函数不一定必须放在头文件中。
7. 已知函数定义 int fun(int n) { return n*n; }
调用 fun(3+2) 的返回值是( )
A. 25
B. 13
C. 5
D. 编译错误(实参必须是变量)
【答案】A
【解析】实参可以是常量,也可以是变量,还可以是表达式。调用fun(3+2)时,先计算表达式3+2=5,然后将值5传递给形参n,函数体内计算n*n=5*5=25并返回。表达式作为实参是合法的C语言用法,功能由编译器先求值再传参,方便编写更灵活的代码。
二、简答题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
main()
{
int m = 10, n = 20, result;
result = add(m, n);
printf("%d + %d = %d
", m, n, result);
}
【答案】10 + 20 = 30
【解析】自定义函数add接收两个整型参数,返回它们的和。main中调用add(m,n)即add(10,20),返回值30赋给result。printf输出时依次输出m的值10、加号字符、n的值20、等号字符、result的值30,最终在屏幕上显示"10 + 20 = 30"。
三、案例分析题
9. 以下程序的功能是定义一个函数计算两数中的较大值,然后在main函数中调用。请填空。
#include <stdio.h>
int larger(【1】)
{
if (x > y)
return x;
else
return y;
}
main()
{
int a, b;
printf("请输入两个整数:");
scanf("%d%d", 【2】);
printf("较大值=%d
", larger(【3】));
}
【答案】【1】int x, int y
【2】&a, &b
【3】a, b
【解析】第一空填写形参定义int x,int y,指明函数接收两个整型参数。第二空scanf读取两个整数存入a和b的地址。第三空调用larger(a,b)将a和b作为实参传入函数,函数比较后返回较大值,由printf输出。该程序展示了函数定义、参数传递和调用的完整流程。
四、综合应用题
10. 编写一个C程序:定义一个函数 int power(int base, int exp),计算base的exp次方(即base^exp,exp为非负整数),并在main函数中从键盘输入底数和指数,调用该函数计算并输出结果。
示例:输入2和3,输出8(2的3次方=2×2×2)。
【答案】#include <stdio.h>
int power(int base, int exp)
{
int result = 1, i;
for (i = 0; i < exp; i++)
result = result * base;
return result;
}
main()
{
int b, e;
printf("请输入底数和指数(非负整数):");
scanf("%d%d", &b, &e);
printf("%d的%d次方=%d
", b, e, power(b, e));
}
【解析】power函数接收底数base和指数exp两个参数,用循环累乘实现幂运算:result从1开始,每次乘以base,循环exp次后得到结果。例如power(2,3):result=1→乘2得2→乘2得4→乘2得8,返回8。main函数中scanf读取输入后直接调用power并输出结果。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$