内容正文:
编写说明:广西《电子与信息大类考纲百套卷》,是依据广西《高等职业教育考试大纲与说明(电子与信息大类)》2026版编写。本套试卷共100份,由三个部分组成。第一部分是按考点要求编写的60份知识点训练卷;第二部分是针对三门课程编写的30份常考题训练卷;第三个部分是10份专业知识综合训练卷。
本试卷是广西《电子与信息大类考纲百套卷》的第39卷,是知识点训练卷,其编写要求如下:
(1)掌握函数的定义及调用;
(2)掌握对被调用函数的声明和函数原型;
(3)了解函数的嵌套及递归调用;
(4)掌握数组作为函数参数的方法;
(5)了解局部变量和全局变量。
广西《电子与信息类考纲百套卷》 第39卷
《程序设计基础》
6.函数-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共20小题,每小题3分,共60分)
1.以下函数定义正确的是( )
A. func(int a, b) { return a+b; }
B. void func() { return 0; }
C. int func(int a, int b) { return a+b; }
D. int func(a, b) { return a+b; }
2.以下函数调用正确的是( )
A. int result = func();(假设func无返回值)
B. func(5);(函数定义为void func(int a))
C. func("hello");(函数定义为void func(int a))
D. func(3.14);(函数定义为void func(float a))
3.以下函数的功能是( )
int add(int a, int b) { return a + b; }
A. 计算两数之和
B. 计算两数之差
C. 比较大小
D. 无意义
4.若函数返回类型为float,实际返回int值,会发生的情况是( )
A. 结果不可预测
B. 编译错误
C. 运行时错误
D. 自动转换为float
5.函数原型的作用是( )
A. 定义函数体
B. 声明函数名称、参数和返回类型
C. 分配内存
D. 执行函数
6.以下代码的输出是( )
void print();
int main() {
print();
return 0;
}
void print() { printf("World"); }
A. World
B. 编译错误
C. 无输出
D. 随机值
7.函数原型中参数名的作用是( )
A. 必须与实际参数名一致
B. 仅用于说明含义,可省略
C. 影响函数功能
D. 必须全部大写
8.以下代码的错误是( )
int main() {
func(5);
return 0;
}
void func(float a) { ... }
A. 参数类型不匹配
B. 缺少头文件
C. 函数未声明
D. 无错误
9.递归函数必须包含( )
A. 循环结构
B. 终止条件
C. 全局变量
D. 多个参数
10.以下递归函数的时间复杂度是( )
int fib(int n) {
if (n <= 1) return n;
return fib(n-1) + fib(n-2);
}
A. O(n)
B. O(2^n)
C. O(n^2)
D. O(log n)
11.关于函数嵌套,正确的是( )
A. 函数不可嵌套定义
B. 主函数不可调用其他函数
C. 函数可嵌套调用
D. 嵌套调用只能一层
12.以下函数的功能是( )
int func(int n) {
return (n == 0) ? 0 : 1 + func(n/10);
}
A. 计算数字位数
B. 反转数字
C. 计算数字和
D. 判断奇偶
13.以下函数的功能是( )
void func(int arr[], int size) {
for (int i=0; i<size; i++) arr[i] *= 2;
}
A. 反转数组
B. 计算元素和
C. 查找最大值
D. 数组元素翻倍
14.关于数组参数,正确的是( )
A. 函数内无法获取数组长度
B. 必须传递数组长度参数
C. 数组参数可以是任意类型
D. 以上全对
15.以下代码的输出是( )
void func(int *p) { p[1] = 20; }
int main() {
int arr[] = {1,2,3};
func(arr);
printf("%d", arr[1]);
}
A. 2
B. 20
C. 3
D. 随机值
16.以下代码的错误是( )
void func(int arr[]) {
int size = sizeof(arr)/sizeof(int);
printf("%d", size);
}
A. 无法计算数组长度
B. 语法错误
C. 输出随机值
D. 无错误
17.以下代码的输出是( )
int a = 5;
void func() { int a = 10; }
int main() {
func();
printf("%d", a);
}
A. 5
B. 10
C. 0
D. 随机值
18.以下代码的输出是( )
void func() {
static int a = 0;
a++;
printf("%d ", a);
}
int main() {
func(); func();
}
A. 1 1
B. 1 2
C. 0 1
D. 0 0
19.以下代码的错误是( )
void func() {
int a = 5;
}
int main() {
printf("%d", a);
}
A. 变量未声明
B. 变量未初始化
C. 语法错误
D. 无错误
20.以下代码的输出是( )
int a = 1;
void func1() { a++; }
void func2() { int a = 5; func1(); }
int main() {
func2();
printf("%d", a);
}
A. 1
B. 2
C. 5
D. 6
二、判断题(本大题共10小题,每小题1分,共10分)
1.函数定义时,函数名后面的括号内必须有参数。()
2.若函数没有返回值,函数定义时返回类型必须为 void。( )
3.递归函数一定包含递归终止条件。( )
4.数组作为函数参数时,传递的是数组的首地址。( )
5.函数调用时,实参和形参可以使用相同的变量名。( )
6.函数的返回值类型可以是数组类型。( )
7.函数原型声明可以放在函数内部。( )
8.函数调用时,实参的求值顺序是固定的。( )
9.全局变量可以在源文件中定义。( )
10.函数调用时,若实参是常量,函数内部不能改变该常量的值。( )
三、填空题(本大题共5小题,每题3分,共15分)
1.函数定义里,若参数列表为空,在 C 语言标准里可写成 返回类型 函数名(____)。
2.若要在函数内部改变指针形参所指向的地址,函数参数应定义为____类型。
3.以下代码的输出是______:
int x = 10;
void func() { x = 20; }
int main() {
func();
printf("%d", x);
}
4.在调用函数前必须进行______,否则可能引发编译错误。
5.递归函数必须包含______,否则会导致无限调用。
四、应用题(本大题共2小题,共15分)
1.补全递归函数,计算第n项斐波那契数。
int fibonacci(int n) {
if (______) return n; // 终止条件
return ______ + fibonacci(n-2); // 递归调用
}
2.补全函数,利用静态变量统计func被调用的次数。
int func() {
______ int count = 0;
______ ;
return count;
}
int main() {
func(); func();
printf("%d", func()); // 应输出3
}
3.补全递归函数,反转字符数组 str 的内容。
void reverse_str(char str[], int start, int end) {
if (start >= end) return;
char temp = str[start];
str[start] = str[end];
str[end] = temp;
reverse_str(str, ______, end - 1);
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:广西《电子与信息大类考纲百套卷》,是依据广西《高等职业教育考试大纲与说明(电子与信息大类)》2026版编写。本套试卷共100份,由三个部分组成。第一部分是按考点要求编写的60份知识点训练卷;第二部分是针对三门课程编写的30份常考题训练卷;第三个部分是10份专业知识综合训练卷。
本试卷是广西《电子与信息大类考纲百套卷》的第39卷,是知识点训练卷,其编写要求如下:
(1)掌握函数的定义及调用;
(2)掌握对被调用函数的声明和函数原型;
(3)了解函数的嵌套及递归调用;
(4)掌握数组作为函数参数的方法;
(5)了解局部变量和全局变量。
广西《电子与信息类考纲百套卷》 第39卷
《程序设计基础》
6.函数-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共20小题,每小题3分,共60分)
1.以下函数定义正确的是( )
A. func(int a, b) { return a+b; }
B. void func() { return 0; }
C. int func(int a, int b) { return a+b; }
D. int func(a, b) { return a+b; }
答案:C
2.以下函数调用正确的是( )
A. int result = func();(假设func无返回值)
B. func(5);(函数定义为void func(int a))
C. func("hello");(函数定义为void func(int a))
D. func(3.14);(函数定义为void func(float a))
答案:B
3.以下函数的功能是( )
int add(int a, int b) { return a + b; }
A. 计算两数之和
B. 计算两数之差
C. 比较大小
D. 无意义
答案:A
4.若函数返回类型为float,实际返回int值,会发生的情况是( )
A. 结果不可预测
B. 编译错误
C. 运行时错误
D. 自动转换为float
答案:D
5.函数原型的作用是( )
A. 定义函数体
B. 声明函数名称、参数和返回类型
C. 分配内存
D. 执行函数
答案:B
6.以下代码的输出是( )
void print();
int main() {
print();
return 0;
}
void print() { printf("World"); }
A. World
B. 编译错误
C. 无输出
D. 随机值
答案:A
7.函数原型中参数名的作用是( )
A. 必须与实际参数名一致
B. 仅用于说明含义,可省略
C. 影响函数功能
D. 必须全部大写
答案:B
8.以下代码的错误是( )
int main() {
func(5);
return 0;
}
void func(float a) { ... }
A. 参数类型不匹配
B. 缺少头文件
C. 函数未声明
D. 无错误
答案:A
9.递归函数必须包含( )
A. 循环结构
B. 终止条件
C. 全局变量
D. 多个参数
答案:B
10.以下递归函数的时间复杂度是( )
int fib(int n) {
if (n <= 1) return n;
return fib(n-1) + fib(n-2);
}
A. O(n)
B. O(2^n)
C. O(n^2)
D. O(log n)
答案:B
11.关于函数嵌套,正确的是( )
A. 函数不可嵌套定义
B. 主函数不可调用其他函数
C. 函数可嵌套调用
D. 嵌套调用只能一层
答案:C
12.以下函数的功能是( )
int func(int n) {
return (n == 0) ? 0 : 1 + func(n/10);
}
A. 计算数字位数
B. 反转数字
C. 计算数字和
D. 判断奇偶
答案:A
13.以下函数的功能是( )
void func(int arr[], int size) {
for (int i=0; i<size; i++) arr[i] *= 2;
}
A. 反转数组
B. 计算元素和
C. 查找最大值
D. 数组元素翻倍
答案:D
14.关于数组参数,正确的是( )
A. 函数内无法获取数组长度
B. 必须传递数组长度参数
C. 数组参数可以是任意类型
D. 以上全对
答案:D
15.以下代码的输出是( )
void func(int *p) { p[1] = 20; }
int main() {
int arr[] = {1,2,3};
func(arr);
printf("%d", arr[1]);
}
A. 2
B. 20
C. 3
D. 随机值
答案:B
16.以下代码的错误是( )
void func(int arr[]) {
int size = sizeof(arr)/sizeof(int);
printf("%d", size);
}
A. 无法计算数组长度
B. 语法错误
C. 输出随机值
D. 无错误
答案:A
17.以下代码的输出是( )
int a = 5;
void func() { int a = 10; }
int main() {
func();
printf("%d", a);
}
A. 5
B. 10
C. 0
D. 随机值
答案:A
18.以下代码的输出是( )
void func() {
static int a = 0;
a++;
printf("%d ", a);
}
int main() {
func(); func();
}
A. 1 1
B. 1 2
C. 0 1
D. 0 0
答案:B
19.以下代码的错误是( )
void func() {
int a = 5;
}
int main() {
printf("%d", a);
}
A. 变量未声明
B. 变量未初始化
C. 语法错误
D. 无错误
答案:A
20.以下代码的输出是( )
int a = 1;
void func1() { a++; }
void func2() { int a = 5; func1(); }
int main() {
func2();
printf("%d", a);
}
A. 1
B. 2
C. 5
D. 6
答案:B
二、判断题(本大题共10小题,每小题1分,共10分)
1.函数定义时,函数名后面的括号内必须有参数。()
答案:×
2.若函数没有返回值,函数定义时返回类型必须为 void。( )
答案:√
3.递归函数一定包含递归终止条件。( )
答案:√
4.数组作为函数参数时,传递的是数组的首地址。( )
答案:√
5.函数调用时,实参和形参可以使用相同的变量名。( )
答案:√
6.函数的返回值类型可以是数组类型。( )
答案:×
7.函数原型声明可以放在函数内部。( )
答案:√
8.函数调用时,实参的求值顺序是固定的。( )
答案:×
9.全局变量可以在源文件中定义。( )
答案:√
10.函数调用时,若实参是常量,函数内部不能改变该常量的值。( )
答案:√
三、填空题(本大题共5小题,每题3分,共15分)
1.函数定义里,若参数列表为空,在 C 语言标准里可写成 返回类型 函数名(____)。
答案:void
2.若要在函数内部改变指针形参所指向的地址,函数参数应定义为____类型。
答案:指针的指针
3.以下代码的输出是______:
int x = 10;
void func() { x = 20; }
int main() {
func();
printf("%d", x);
}
答案:20
4.在调用函数前必须进行______,否则可能引发编译错误。
答案:函数声明或函数原型声明
5.递归函数必须包含______,否则会导致无限调用。
答案:终止条件
四、应用题(本大题共2小题,共15分)
1.补全递归函数,计算第n项斐波那契数。
int fibonacci(int n) {
if (______) return n; // 终止条件
return ______ + fibonacci(n-2); // 递归调用
}
答案:
第一空:n <= 1
第二空:fibonacci(n-1)
2.补全函数,利用静态变量统计func被调用的次数。
int func() {
______ int count = 0;
______ ;
return count;
}
int main() {
func(); func();
printf("%d", func()); // 应输出3
}
答案:
第一空:static
第二空:count++
3.补全递归函数,反转字符数组 str 的内容。
void reverse_str(char str[], int start, int end) {
if (start >= end) return;
char temp = str[start];
str[start] = str[end];
str[end] = temp;
reverse_str(str, ______, end - 1);
}
答案:start + 1
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$