内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第24练,内容是6.2 函数的调用与函数原型。
《C语言》(第五版)一课一练 第24练
6.2 函数的调用与函数原型
一、单选题
1. C语言中函数调用的一般形式是( )
A. 类型名 函数名(实际参数列表);
B. 函数名(实际参数列表);
C. 函数名[实际参数列表];
D. 实际参数列表->函数名;
2. 关于函数原型声明,下列说法正确的是( )
A. 函数原型声明的作用是告诉编译器函数的类型信息
B. 函数原型声明中必须写出各参数的名称
C. 如果函数定义在main之前,仍需要函数原型声明
D. 函数原型声明中不能出现形参的类型
3. 已知函数原型 void show(int a, int b); 以下调用中正确的是( )
A. show(3.5, 6);(浮点数可以自动转为整型)
B. show(1+2, 3+4, 5);(实参个数可以多于形参)
C. show(2*3, 10%4);(表达式将先求值再传递)
D. void show(5, 8);(调用时写void表示无返回值)
4. 当程序执行到函数调用语句时,以下描述正确的是( )
A. 程序终止运行,等待用户重新启动
B. 直接跳过函数调用语句,继续执行下一条
C. 先执行调用语句后面的代码,再执行函数体
D. 程序转到被调用函数执行,执行完返回调用处继续
5. 已知 int square(int n) { return n*n; } 则语句
int x = square(3) + square(4); 执行后x的值是( )
A. 49
B. 12
C. 25
D. 14
6. 以下关于函数声明与函数定义的说法中,正确的是( )
A. 函数声明以分号结尾,函数定义后跟函数体
B. 函数声明包含函数体,函数定义不包含函数体
C. 函数声明和函数定义的写法完全相同
D. 一个函数可以多次声明,定义可以有一次
7. 已知以下程序,输出结果是
int f(int n) { return n+2; }
main()
{
int a=1, b=2, c=3;
printf("%d
", f(a+b)+f(c));
}( )
A. 7
B. 8
C. 9
D. 10
二、简答题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
int diff(int x, int y)
{
if (x > y)
return x - y;
else
return y - x;
}
main()
{
int a = 15, b = 8, c = 20;
printf("%d
", diff(a, b));
printf("%d
", diff(b, c));
}
三、案例分析题
9. 以下程序的功能是定义三个函数分别计算两数的和、差、积,并在main中调用。请填空。
#include <stdio.h>
【1】 add(int, int);
int sub(int, int);
int mul(int, int);
main()
{
int a, b;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
printf("和=%d, 差=%d, 积=%d
",
add(a,【2】), sub(a,b), mul(a,b));
}
int add(int x, int y) { return 【3】; }
int sub(int x, int y) { return x - y; }
int mul(int x, int y) { return x * y; }
四、综合应用题
10. 编写一个C程序:定义三个函数:
(1) int isEven(int n) — 判断n是否为偶数,是则返回1,否则返回0
(2) int sumEven(int a[], int len) — 求数组中所有偶数的和
(3) 在main函数中定义含8个元素的整型数组并从键盘输入,调用sumEven计算偶数和并输出。
要求使用函数原型声明,函数定义放在main之后。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第24练,内容是6.2 函数的调用与函数原型。
《C语言》(第五版)一课一练 第24练
6.2 函数的调用与函数原型
一、单选题
1. C语言中函数调用的一般形式是( )
A. 类型名 函数名(实际参数列表);
B. 函数名(实际参数列表);
C. 函数名[实际参数列表];
D. 实际参数列表->函数名;
【答案】B
【解析】函数调用的格式为:函数名(实际参数1,实际参数2,...)。调用时不需要写返回值类型(类型名出现在定义和声明中),参数用圆括号而非方括号。实参列表中各参数用逗号分隔,调用语句末尾加分号。选项B完整正确地描述了函数调用的语法形式。
2. 关于函数原型声明,下列说法正确的是( )
A. 函数原型声明的作用是告诉编译器函数的类型信息
B. 函数原型声明中必须写出各参数的名称
C. 如果函数定义在main之前,仍需要函数原型声明
D. 函数原型声明中不能出现形参的类型
【答案】A
【解析】函数原型声明(如int max(int,int);)告诉编译器函数的返回值类型和参数类型信息,使编译器在函数调用时能检查类型是否匹配。形参名称在声明中可以省略,参数类型必须写出。若函数定义在调用之前,可以不需要声明。原型声明必须包含参数的类型信息。
3. 已知函数原型 void show(int a, int b); 以下调用中正确的是( )
A. show(3.5, 6);(浮点数可以自动转为整型)
B. show(1+2, 3+4, 5);(实参个数可以多于形参)
C. show(2*3, 10%4);(表达式将先求值再传递)
D. void show(5, 8);(调用时写void表示无返回值)
【答案】C
【解析】C中show(2*3,10%4)先将表达式求值:2*3=6,10%4=2,然后将6和2作为实参传入函数,调用方式正确。A中3.5传给int形参可能产生截断警告。B中实参个数多于形参个数。D中调用时不应写void,void是定义和声明时使用的。
4. 当程序执行到函数调用语句时,以下描述正确的是( )
A. 程序终止运行,等待用户重新启动
B. 直接跳过函数调用语句,继续执行下一条
C. 先执行调用语句后面的代码,再执行函数体
D. 程序转到被调用函数执行,执行完返回调用处继续
【答案】D
【解析】函数调用发生时,程序流程转到被调用函数的函数体开始执行。实参的值被复制给形参,然后在被调用函数内部执行代码。当被调用函数执行完(执行到return语句,直到函数体结束),控制权返回调用处,继续执行调用语句后面的代码。这是函数调用的基本执行机制。
5. 已知 int square(int n) { return n*n; } 则语句
int x = square(3) + square(4); 执行后x的值是( )
A. 49
B. 12
C. 25
D. 14
【答案】C
【解析】square(3)返回9,square(4)返回16,9+16=25赋给x。函数调用可以作为表达式的一部分参与运算,先用函数的返回值替代调用表达式,再进行表达式计算。这种用法使代码更加简洁,不需要将每个函数调用结果先存入临时变量再参与运算。
6. 以下关于函数声明与函数定义的说法中,正确的是( )
A. 函数声明以分号结尾,函数定义后跟函数体
B. 函数声明包含函数体,函数定义不包含函数体
C. 函数声明和函数定义的写法完全相同
D. 一个函数可以多次声明,定义可以有一次
【答案】A
【解析】函数声明(原型)以分号结尾,如int max(int,int);,不包含函数体。函数定义包含完整的函数体{...},后面不跟分号。函数定义次数限定为一次(不能重复定义),声明可以有多次。声明告诉编译器函数名和类型信息,定义则提供函数的完整实现代码。
7. 已知以下程序,输出结果是
int f(int n) { return n+2; }
main()
{
int a=1, b=2, c=3;
printf("%d
", f(a+b)+f(c));
}( )
A. 7
B. 8
C. 9
D. 10
【答案】D
【解析】先计算f(a+b)=f(1+2)=f(3),返回3+2=5。再计算f(c)=f(3),返回3+2=5。最后计算5+5=10输出。函数在表达式中作为操作数时,调用将依次进行,每次调用返回一个值参与后续计算。整个计算过程体现了函数调用在表达式中的求值机制。
二、简答题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
int diff(int x, int y)
{
if (x > y)
return x - y;
else
return y - x;
}
main()
{
int a = 15, b = 8, c = 20;
printf("%d
", diff(a, b));
printf("%d
", diff(b, c));
}
【答案】7
12
【解析】diff函数计算两个整数差的绝对值:若x>y返回x-y,否则返回y-x。diff(15,8)中15>8,返回15-8=7。diff(8,20)中8不大于20,执行else分支返回20-8=12。两次调用输出7和12并各占一行。函数调用使代码逻辑得到复用,避免重复编写相同计算逻辑。
三、案例分析题
9. 以下程序的功能是定义三个函数分别计算两数的和、差、积,并在main中调用。请填空。
#include <stdio.h>
【1】 add(int, int);
int sub(int, int);
int mul(int, int);
main()
{
int a, b;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
printf("和=%d, 差=%d, 积=%d
",
add(a,【2】), sub(a,b), mul(a,b));
}
int add(int x, int y) { return 【3】; }
int sub(int x, int y) { return x - y; }
int mul(int x, int y) { return x * y; }
【答案】【1】int
【2】b
【3】x + y
【解析】第一空填写int作为add函数原型声明的返回值类型。第二空add(a,b)传入两个实参a和b。第三空add函数体中return x+y返回两参数之和。程序使用函数原型声明让编译器在main调用前获知各函数的类型信息,函数定义可在main之后给出。
四、综合应用题
10. 编写一个C程序:定义三个函数:
(1) int isEven(int n) — 判断n是否为偶数,是则返回1,否则返回0
(2) int sumEven(int a[], int len) — 求数组中所有偶数的和
(3) 在main函数中定义含8个元素的整型数组并从键盘输入,调用sumEven计算偶数和并输出。
要求使用函数原型声明,函数定义放在main之后。
【答案】#include <stdio.h>
int isEven(int n);
int sumEven(int a[], int len);
main()
{
int arr[8], i;
printf("请输入8个整数:
");
for (i = 0; i < 8; i++)
scanf("%d", &arr[i]);
printf("所有偶数的和=%d
", sumEven(arr, 8));
}
int isEven(int n)
{
if (n % 2 == 0)
return 1;
else
return 0;
}
int sumEven(int a[], int len)
{
int i, sum = 0;
for (i = 0; i < len; i++)
if (isEven(a[i]))
sum += a[i];
return sum;
}
【解析】程序先声明两个函数原型。main中输入数组后调用sumEven,sumEven遍历数组对每个元素调用isEven判断是否为偶数,isEven通过n%2==0判断。若为偶数则返回1,sumEven中将其累加到sum。所有的函数定义均位于main之后,这是常见的代码组织方式。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$