内容正文:
编写说明:广西《电子与信息大类考纲百套卷》,是依据广西《高等职业教育考试大纲与说明(电子与信息大类)》2026版编写。本套试卷共100份,由三个部分组成。第一部分是按考点要求编写的60份知识点训练卷;第二部分是针对三门课程编写的30份常考题训练卷;第三个部分是10份专业知识综合训练卷。
本试卷是广西《电子与信息大类考纲百套卷》的第38卷,是知识点训练卷,其编写要求如下:
(1)掌握函数的定义及调用;
(2)掌握对被调用函数的声明和函数原型;
(3)了解函数的嵌套及递归调用;
(4)掌握数组作为函数参数的方法;
(5)了解局部变量和全局变量。
广西《电子与信息类考纲百套卷》 第38卷
《程序设计基础》
6.函数-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共20小题,每小题3分,共60分)
1.以下关于函数定义的描述,正确的是( )
A. 函数必须有参数
B. 函数可以省略返回类型
C. 函数必须指定返回类型
D. 函数名可以以数字开头
2.若函数无返回值,应使用的返回类型是( )
A. void
B. int
C. null
D. double
3.以下代码的输出是( )
void print() { printf("Hello"); }
int main() {
print();
return 0;
}
A. 无输出
B. Hello
C. 编译错误
D. 运行时错误
4.以下代码的错误是( )
int main() {
func();
return 0;
}
A. 缺少头文件
B. 缺少变量
C. 语法错误
D. 函数未声明或定义
5.以下正确的函数声明是( )
A. void func(int a, b);
B. int func(int, int);
C. func(double);
D. void func(x);
6.若函数定义在调用之后,必须提前的操作是( )
A. 无需操作
B. 定义函数体
C. 直接调用
D. 声明函数原型
7.若函数原型为int func();,实际定义为int func(int a) { ... },会导致( )
A. 编译错误
B. 链接错误
C. 警告但可运行
D. 无错误
8.若要将二维数组arr[3][4]传递给函数,正确的函数声明是( )
A. void func(int arr[][])
B. void func(int **arr)
C. void func(int arr[3][4])
D. void func(int arr[][4])
9.以下函数的功能是( )
int func(int n) {
if (n <= 1) return 1;
return n * func(n-1);
}
A. 计算阶乘
B. 计算斐波那契数列
C. 累加
D. 反转数字
10.以下代码的输出是( )
void print(int n) {
if (n > 0) {
printf("%d ", n);
print(n-1);
}
}
int main() { print(3); }
A. 3 2 1
B. 1 2 3
C. 3 3 3
D. 无输出
11.以下代码的输出是( )
int func(int x) {
return (x == 0) ? 0 : x + func(x-1);
}
int main() { printf("%d", func(3)); }
A. 1
B. 2
C. 3
D. 6
12.以下代码的输出是( )
int func(int a) {
return (a > 5) ? a : func(a+1);
}
int main() { printf("%d", func(3)); }
A. 3
B. 5
C. 6
D. 无限递归
13.传递数组给函数时,实际传递的是( )
A. 数组的副本
B. 数组首元素的地址
C. 数组所有元素
D. 数组长度
14.以下代码的输出是( )
void change(int a[]) { a[0] = 10; }
int main() {
int arr[] = {1,2,3};
change(arr);
printf("%d", arr[0]);
}
A. 1
B. 5
C. 10
D. 随机值
15.以下函数定义错误的是( )
A. void func(int arr[5])
B. void func(int arr[])
C. void func(int *arr)
D. void func(int arr[][])
16.若函数定义为void func(int arr[3][4]),可接受的参数是( )
A. 二维数组,第二维大小为4
B. 一维数组
C. 三维数组
D. 任意指针
17.全局变量的作用域是( )
A. 整个程序
B. 单个函数
C. 声明后的代码
D. 当前文件
18.关于局部变量,正确的是( )
A. 生命周期为整个程序
B. 未初始化时值为0
C. 可在其他函数中直接访问
D. 存储在栈区
19.以下代码的输出是( )
int x = 10;
void func() { x = 20; }
int main() {
printf("%d ", x);
func();
printf("%d", x);
}
A. 10 10
B. 10 20
C. 20 20
D. 20 10
20.关于static局部变量,正确的是( )
A. 每次函数调用重新初始化
B. 作用域为全局
C. 存储在静态区
D. 不可被修改
二、判断题(本大题共10小题,每小题1分,共10分)
1.函数调用时,实参的个数和类型必须与形参的个数和类型完全一致。( )
2.函数原型声明时,参数名可以省略。( )
3.函数可以嵌套定义。( )
4.局部变量在函数外部也能访问。( ))
5.全局变量可以在程序的任何地方被访问。( )
6.递归函数的效率通常比非递归函数高。( )
7.全局变量在程序开始执行时就被分配内存。( ))
8.数组作为函数参数时,函数内部可以改变数组元素的值。( )
9.递归函数中可以没有递归调用语句。( )
10.函数定义时,若不指定返回类型,默认返回类型为 int。( )
三、填空题(本大题共5小题,每题3分,共15分)
1.函数原型声明 int calculate(int, int); 中,省略了____。
2.全局变量若未进行显式初始化,会被自动初始化为____。
3.若函数返回类型为float,则函数体中必须包含______语句。
4.若已定义函数int add(int a, int b);,则在main函数中调用该函数的语句为:
int sum = ______(3, 5);
5.在C语言中,若函数不需要返回值,其返回类型应声明为______。
四、应用题(本大题共3小题,共15分)
1.补全冒泡排序函数,实现升序排列。
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < ______; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = ______;
}
}
}
}
2.补全二分查找函数,返回目标值在数组中的索引(未找到返回-1)。
int binary_search(int arr[], int low, int high, int target) {
while (______) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) return ______;
else if (arr[mid] < target) low = mid + 1;
else high = mid - 1;
}
return -1;
}
3.补全代码,利用全局变量 count 统计函数 modify 被调用的次数,并限制最多调用3次。
______ int count = 0; // 全局变量声明
void modify() {
if (count >= 3) {
printf("已达最大调用次数!
");
return;
}
count++;
}
int main() {
modify(); modify(); modify(); modify();
printf("调用次数:%d", count); // 应输出3
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:广西《电子与信息大类考纲百套卷》,是依据广西《高等职业教育考试大纲与说明(电子与信息大类)》2026版编写。本套试卷共100份,由三个部分组成。第一部分是按考点要求编写的60份知识点训练卷;第二部分是针对三门课程编写的30份常考题训练卷;第三个部分是10份专业知识综合训练卷。
本试卷是广西《电子与信息大类考纲百套卷》的第38卷,是知识点训练卷,其编写要求如下:
(1)掌握函数的定义及调用;
(2)掌握对被调用函数的声明和函数原型;
(3)了解函数的嵌套及递归调用;
(4)掌握数组作为函数参数的方法;
(5)了解局部变量和全局变量。
广西《电子与信息类考纲百套卷》 第38卷
《程序设计基础》
6.函数-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共20小题,每小题3分,共60分)
1.以下关于函数定义的描述,正确的是( )
A. 函数必须有参数
B. 函数可以省略返回类型
C. 函数必须指定返回类型
D. 函数名可以以数字开头
答案:C
2.若函数无返回值,应使用的返回类型是( )
A. void
B. int
C. null
D. double
答案:A
3.以下代码的输出是( )
void print() { printf("Hello"); }
int main() {
print();
return 0;
}
A. 无输出
B. Hello
C. 编译错误
D. 运行时错误
答案:B
4.以下代码的错误是( )
int main() {
func();
return 0;
}
A. 缺少头文件
B. 缺少变量
C. 语法错误
D. 函数未声明或定义
答案:D
5.以下正确的函数声明是( )
A. void func(int a, b);
B. int func(int, int);
C. func(double);
D. void func(x);
答案:B
6.若函数定义在调用之后,必须提前的操作是( )
A. 无需操作
B. 定义函数体
C. 直接调用
D. 声明函数原型
答案:D
7.若函数原型为int func();,实际定义为int func(int a) { ... },会导致( )
A. 编译错误
B. 链接错误
C. 警告但可运行
D. 无错误
答案:A
8.若要将二维数组arr[3][4]传递给函数,正确的函数声明是( )
A. void func(int arr[][])
B. void func(int **arr)
C. void func(int arr[3][4])
D. void func(int arr[][4])
答案:D
9.以下函数的功能是( )
int func(int n) {
if (n <= 1) return 1;
return n * func(n-1);
}
A. 计算阶乘
B. 计算斐波那契数列
C. 累加
D. 反转数字
答案:A
10.以下代码的输出是( )
void print(int n) {
if (n > 0) {
printf("%d ", n);
print(n-1);
}
}
int main() { print(3); }
A. 3 2 1
B. 1 2 3
C. 3 3 3
D. 无输出
答案:A
11.以下代码的输出是( )
int func(int x) {
return (x == 0) ? 0 : x + func(x-1);
}
int main() { printf("%d", func(3)); }
A. 1
B. 2
C. 3
D. 6
答案:D
12.以下代码的输出是( )
int func(int a) {
return (a > 5) ? a : func(a+1);
}
int main() { printf("%d", func(3)); }
A. 3
B. 5
C. 6
D. 无限递归
答案:C
13.传递数组给函数时,实际传递的是( )
A. 数组的副本
B. 数组首元素的地址
C. 数组所有元素
D. 数组长度
答案:B
14.以下代码的输出是( )
void change(int a[]) { a[0] = 10; }
int main() {
int arr[] = {1,2,3};
change(arr);
printf("%d", arr[0]);
}
A. 1
B. 5
C. 10
D. 随机值
答案:C
15.以下函数定义错误的是( )
A. void func(int arr[5])
B. void func(int arr[])
C. void func(int *arr)
D. void func(int arr[][])
答案:D
16.若函数定义为void func(int arr[3][4]),可接受的参数是( )
A. 二维数组,第二维大小为4
B. 一维数组
C. 三维数组
D. 任意指针
答案:A
17.全局变量的作用域是( )
A. 整个程序
B. 单个函数
C. 声明后的代码
D. 当前文件
答案:D
18.关于局部变量,正确的是( )
A. 生命周期为整个程序
B. 未初始化时值为0
C. 可在其他函数中直接访问
D. 存储在栈区
答案:D
19.以下代码的输出是( )
int x = 10;
void func() { x = 20; }
int main() {
printf("%d ", x);
func();
printf("%d", x);
}
A. 10 10
B. 10 20
C. 20 20
D. 20 10
答案:B
20.关于static局部变量,正确的是( )
A. 每次函数调用重新初始化
B. 作用域为全局
C. 存储在静态区
D. 不可被修改
答案:C
二、判断题(本大题共10小题,每小题1分,共10分)
1.函数调用时,实参的个数和类型必须与形参的个数和类型完全一致。( )
答案:√
2.函数原型声明时,参数名可以省略。( )
答案:√
3.函数可以嵌套定义。( )
答案:×
4.局部变量在函数外部也能访问。( ))
答案:×
5.全局变量可以在程序的任何地方被访问。( )
答案:×
6.递归函数的效率通常比非递归函数高。( )
答案:×
7.全局变量在程序开始执行时就被分配内存。( ))
答案:√
8.数组作为函数参数时,函数内部可以改变数组元素的值。( )
答案:√
9.递归函数中可以没有递归调用语句。( )
答案:×
10.函数定义时,若不指定返回类型,默认返回类型为 int。( )
答案:√
三、填空题(本大题共5小题,每题3分,共15分)
1.函数原型声明 int calculate(int, int); 中,省略了____。
答案:参数名
2.全局变量若未进行显式初始化,会被自动初始化为____。
答案:0
3.若函数返回类型为float,则函数体中必须包含______语句。
答案:return
4.若已定义函数int add(int a, int b);,则在main函数中调用该函数的语句为:
int sum = ______(3, 5);
答案:add
5.在C语言中,若函数不需要返回值,其返回类型应声明为______。
答案:void
四、应用题(本大题共3小题,共15分)
1.补全冒泡排序函数,实现升序排列。
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < ______; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = ______;
}
}
}
}
答案:
第一空:n - i - 1
第二空:temp
2.补全二分查找函数,返回目标值在数组中的索引(未找到返回-1)。
int binary_search(int arr[], int low, int high, int target) {
while (______) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) return ______;
else if (arr[mid] < target) low = mid + 1;
else high = mid - 1;
}
return -1;
}
答案:
第一空:low <= high
第二空:mid
3.补全代码,利用全局变量 count 统计函数 modify 被调用的次数,并限制最多调用3次。
______ int count = 0; // 全局变量声明
void modify() {
if (count >= 3) {
printf("已达最大调用次数!
");
return;
}
count++;
}
int main() {
modify(); modify(); modify(); modify();
printf("调用次数:%d", count); // 应输出3
}
答案:static
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$