内容正文:
编写说明:2027版吉林省高职分类(对口招生)考试电子与信息类《考纲百套卷》,依据《吉林省高职分类(对口招生)考试电子与信息类专业综合卷考试科目及纲要(2025版)》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共115份试卷,其中知识训练卷82份、专题训练卷19份、课程综合卷14份。
本试卷是第12卷,为知识训练卷,按《C语言程序设计》中“函数”范围和要求编写。具体内容为:1.了解常用库函数。2.了解include命令的使用。3.掌握函数的定义与调用。4.掌握函数的返回值及其类型。5.掌握函数调用时参数间的传递。6.了解函数的嵌套调用和递归调用。7.了解变量的作用域和存储类型。
吉林省高职分类(对口招生)考试
电子与信息类《考纲百套卷》
第12卷 C语言程序设计——函数
(考试时间:45分钟 满分:100分)
一、单项选择题(共20题,每题2分,共40分。)
1.一个完整的C函数由哪几部分组成?( )
A.返回值类型、函数名、参数列表、函数体
B.函数名和函数体
C.参数列表和return语句
D.头文件和main函数
2.在函数调用f(a,b)中,a和b被称为( )
A.形式参数
B.实际参数
C.局部变量
D.全局变量
3.C语言中函数返回值的类型由什么决定?( )
A.return语句中表达式的类型
B.调用函数时的实参类型
C.函数定义时声明的返回值类型
D.编译器的自动推断
4.如果函数不需要返回值,其返回值类型应声明为( )
A.int
B.float
C.NULL
D.void
5.C语言中函数参数传递的方式是( )
A.值传递(单向传递)
B.地址传递(双向传递)
C.引用传递
D.值传递和地址传递混合
6.当main函数中调用fun()时,程序的执行顺序是( )
A.main和fun交替执行
B.先暂停main,转去执行fun,fun结束后返回main继续
C.main直接结束
D.fun先执行,再执行main
7.函数原型(声明)的作用是( )
A.定义函数的函数体
B.分配函数的内存空间
C.告诉编译器函数的返回值类型和参数信息
D.执行函数调用
8.以下关于main函数的说法,正确的是( )
A.main函数可以没有
B.main函数必须放在程序最前面
C.C程序可以包含多个main函数
D.C程序有且仅有一个main函数
9.函数的形参变量的作用范围是( )
A.仅限于该函数内部
B.整个源程序
C.从定义处到程序结束
D.所有函数中都可以访问
10.一个函数中可以有多个return语句吗?( )
A.不可以,只能有一个
B.可以,执行到任一return即返回
C.可以,但所有return必须返回相同值
D.只有main函数可以
11.使用数学函数sqrt()、pow()等,需要包含哪个头文件?( )
A.stdio.h
B.stdlib.h
C.math.h
D.string.h
12.C语言中,函数定义可以放在程序中的什么位置?( )
A.只能放在main函数之前
B.只能放在main函数之后
C.只能放在main函数内部
D.可以在main之前或之后,但不能嵌套在其他函数内部
13.在函数内部定义的变量称为( )
A.局部变量
B.全局变量
C.静态变量
D.外部变量
14.void类型函数中可以使用return;语句吗?( )
A.不可以
B.可以,用于提前结束函数
C.可以,必须带返回值
D.只有特定void函数可以
15.printf函数是C语言的( )
A.关键字
B.自定义函数
C.标准库函数
D.main函数
16.调用函数时,实参和形参的关系正确的是( )
A.实参和形参可以类型不同
B.实参个数可以多于形参
C.实参个数可以少于形参
D.实参和形参在个数、类型、顺序上应一一对应
17.C语言中f1()调用f2(),f2()调用f3(),这种机制称为( )
A.函数的嵌套调用
B.函数的嵌套定义
C.函数的递归调用
D.函数的迭代调用
18.局部变量默认的存储类型是( )
A.static
B.auto(自动)
C.register
D.extern
19.以下哪项是正确的函数调用语句?( )
A.int max(int a,int
b);
B.max(int a,int b)
C.max(3,5);
D.int max(3,5);
20.使用函数进行模块化编程的主要好处是( )
A.增加代码行数
B.让程序运行更快
C.只让一个人编写
D.提高代码复用性和可维护性
二、判断题(共10题,每题1分,共10分。)
1.递归函数不需要终止条件也能正常运行。( )
2.数组名作为函数参数时,传递的是数组首元素的地址,因此函数内修改数组元素会影响原数组。( )
3.用static修饰的函数,可以在其他源文件中被调用。( )
4.全局变量在程序开始执行时自动初始化为0。( )
5.函数返回值的类型必须与函数体内return语句中表达式的类型严格一致,否则编译错误。( )
6.递归算法都可以用非递归(迭代)的方式改写实现。( )
7.函数调用时,实参和形参共用同一块内存空间。( )
8.函数的声明(原型)可以放在main函数的花括号内部。( )
9.C语言中一个程序可以不包含main函数。( )
10.用const修饰的函数参数在函数体内不能被修改。( )
三、填空题(共5题,每题2分,共10分。)
1.定义在所有函数外部的变量称为____变量,可被多个函数共享。
2.函数递归调用时,每次调用都会在内存的____区域中创建一组新的局部变量。
3.将一维数组作为函数参数传递时,形参写成int a[],此时[]内____指定元素个数。
4.在函数内部用____关键字修饰的局部变量,其值在函数多次调用之间保持不变。
5.return语句后的表达式类型若与函数声明的返回值类型不同,编译器会进行____类型转换。
四、读程序写结果题(共4题,每题5分,共20分。)
1.请阅读下列程序,写出运行结果。
#include <stdio.h>
int f(int n)
{
if (n <= 1) return 1;
return n + f(n - 1);
}
int main()
{
printf("%d", f(4));
return 0;
}
2.请阅读下列程序,写出运行结果。
#include <stdio.h>
void sqr(int a[], int n)
{
int i;
for (i = 0; i < n; i++)
a[i] = a[i] * a[i];
}
int main()
{
int x[] = {1, 2, 3};
sqr(x, 3);
printf("%d", x[1]);
return 0;
}
3.请阅读下列程序,写出运行结果。
#include <stdio.h>
int count()
{
static int c = 0;
c++;
return c;
}
int main()
{
printf("%d", count());
printf("%d", count());
printf("%d", count());
return 0;
}
4.请阅读下列程序,写出运行结果。
#include <stdio.h>
int g(int a, int b)
{
if (b == 0) return a;
return g(b, a % b);
}
int main()
{
printf("%d", g(12, 8));
return 0;
}
五、编程题(共2题,每题10分,共20分。)
1.编写一个递归函数gcd(int a, int b),用辗转相除法求两个正整数的最大公约数。在main中输入两个整数,调用函数并输出结果。
2.编写一个函数findMax(int a[], int n),接收一个整型数组和其长度,返回数组中的最大值。在main中初始化一个数组并调用。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2027版吉林省高职分类(对口招生)考试电子与信息类《考纲百套卷》,依据《吉林省高职分类(对口招生)考试电子与信息类专业综合卷考试科目及纲要(2025版)》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共115份试卷,其中知识训练卷82份、专题训练卷19份、课程综合卷14份。
本试卷是第12卷,为知识训练卷,按《C语言程序设计》中“函数”范围和要求编写。具体内容为:1.了解常用库函数。2.了解include命令的使用。3.掌握函数的定义与调用。4.掌握函数的返回值及其类型。5.掌握函数调用时参数间的传递。6.了解函数的嵌套调用和递归调用。7.了解变量的作用域和存储类型。
吉林省高职分类(对口招生)考试
电子与信息类《考纲百套卷》
第12卷 C语言程序设计——函数
(考试时间:45分钟 满分:100分)
一、单项选择题(共20题,每题2分,共40分。)
1.一个完整的C函数由哪几部分组成?( )
A.返回值类型、函数名、参数列表、函数体
B.函数名和函数体
C.参数列表和return语句
D.头文件和main函数
【答案】A
【解析】函数定义格式:返回值类型 函数名(参数列表){函数体}。四部分缺一不可(void可省略参数和返回值类型)。
2.在函数调用f(a,b)中,a和b被称为( )
A.形式参数
B.实际参数
C.局部变量
D.全局变量
【答案】B
【解析】调用时传递的a、b是实际参数(实参),函数定义中的参数是形式参数(形参)。实参的值传递给形参。
3.C语言中函数返回值的类型由什么决定?( )
A.return语句中表达式的类型
B.调用函数时的实参类型
C.函数定义时声明的返回值类型
D.编译器的自动推断
【答案】C
【解析】函数返回值类型由定义时指定的类型决定。若return表达式类型与声明类型不一致,会自动转换为声明类型。
4.如果函数不需要返回值,其返回值类型应声明为( )
A.int
B.float
C.NULL
D.void
【答案】D
【解析】void表示函数不返回任何值。void函数可以没有return语句,或使用return;(不带表达式)提前退出。
5.C语言中函数参数传递的方式是( )
A.值传递(单向传递)
B.地址传递(双向传递)
C.引用传递
D.值传递和地址传递混合
【答案】A
【解析】C语言参数默认是值传递:实参的值复制给形参,函数内修改形参不影响实参。要修改实参需传递地址(指针)。
6.当main函数中调用fun()时,程序的执行顺序是( )
A.main和fun交替执行
B.先暂停main,转去执行fun,fun结束后返回main继续
C.main直接结束
D.fun先执行,再执行main
【答案】B
【解析】函数调用时主调函数暂停,转去执行被调函数,被调函数结束后返回主调函数调用点继续执行。
7.函数原型(声明)的作用是( )
A.定义函数的函数体
B.分配函数的内存空间
C.告诉编译器函数的返回值类型和参数信息
D.执行函数调用
【答案】C
【解析】函数原型声明让编译器在调用前知道函数的参数类型和返回值类型,以便在编译时进行类型检查。
8.以下关于main函数的说法,正确的是( )
A.main函数可以没有
B.main函数必须放在程序最前面
C.C程序可以包含多个main函数
D.C程序有且仅有一个main函数
【答案】D
【解析】每个C程序有且仅有一个main函数作为入口。main可以放在任意位置,程序始终从main开始执行。
9.函数的形参变量的作用范围是( )
A.仅限于该函数内部
B.整个源程序
C.从定义处到程序结束
D.所有函数中都可以访问
【答案】A
【解析】形参是局部变量,作用域仅限于该函数内部。函数执行完毕后形参被释放,外部不可访问。
10.一个函数中可以有多个return语句吗?( )
A.不可以,只能有一个
B.可以,执行到任一return即返回
C.可以,但所有return必须返回相同值
D.只有main函数可以
【答案】B
【解析】一个函数可以有多个return语句(如不同分支中),执行到第一个return即结束函数并返回值。
11.使用数学函数sqrt()、pow()等,需要包含哪个头文件?( )
A.stdio.h
B.stdlib.h
C.math.h
D.string.h
【答案】C
【解析】数学函数sqrt(开平方)、pow(幂)、fabs(绝对值)等声明在math.h中,使用时需#include <math.h>。
12.C语言中,函数定义可以放在程序中的什么位置?( )
A.只能放在main函数之前
B.只能放在main函数之后
C.只能放在main函数内部
D.可以在main之前或之后,但不能嵌套在其他函数内部
【答案】D
【解析】C函数定义可放在main函数前后任意位置,但不能在一个函数内部定义另一个函数(C不支持函数嵌套定义)。
13.在函数内部定义的变量称为( )
A.局部变量
B.全局变量
C.静态变量
D.外部变量
【答案】A
【解析】函数内部定义的变量(含形参)是局部变量,仅在函数执行期间存在,函数结束后释放。
14.void类型函数中可以使用return;语句吗?( )
A.不可以
B.可以,用于提前结束函数
C.可以,必须带返回值
D.只有特定void函数可以
【答案】B
【解析】void函数可用return;(不带表达式)提前退出,不能return带值。无return结束时自动返回到调用处。
15.printf函数是C语言的( )
A.关键字
B.自定义函数
C.标准库函数
D.main函数
【答案】C
【解析】printf不是C语言关键字,而是标准库函数,声明在stdio.h中。类似的有scanf、sqrt、strlen等。
16.调用函数时,实参和形参的关系正确的是( )
A.实参和形参可以类型不同
B.实参个数可以多于形参
C.实参个数可以少于形参
D.实参和形参在个数、类型、顺序上应一一对应
【答案】D
【解析】实参和形参必须在个数、类型、顺序上严格匹配。个数不匹配会导致编译错误或未定义行为。
17.C语言中f1()调用f2(),f2()调用f3(),这种机制称为( )
A.函数的嵌套调用
B.函数的嵌套定义
C.函数的递归调用
D.函数的迭代调用
【答案】A
【解析】函数嵌套调用指一个函数调用另一个函数形成调用链。与嵌套定义不同(C不支持嵌套定义)。
18.局部变量默认的存储类型是( )
A.static
B.auto(自动)
C.register
D.extern
【答案】B
【解析】局部变量默认是auto(自动)存储类型,进入函数时创建、退出时销毁。static局部变量则保持值到下次调用。
19.以下哪项是正确的函数调用语句?( )
A.int max(int a,int
b);
B.max(int a,int b)
C.max(3,5);
D.int max(3,5);
【答案】C
【解析】函数调用格式为 函数名(实参列表); 。选项A是声明,B缺少实参,D多余类型。max(3,5);才是正确调用。
20.使用函数进行模块化编程的主要好处是( )
A.增加代码行数
B.让程序运行更快
C.只让一个人编写
D.提高代码复用性和可维护性
【答案】D
【解析】函数将程序分解为独立模块,便于代码复用、分工编写、调试和维护,是结构化编程的核心思想。
二、判断题(共10题,每题1分,共10分。)
1.递归函数不需要终止条件也能正常运行。( )
【答案】×
【解析】递归必须有终止条件(基准情况),否则会无限递归最终导致栈溢出。
2.数组名作为函数参数时,传递的是数组首元素的地址,因此函数内修改数组元素会影响原数组。( )
【答案】√
【解析】数组参数传递的是地址而非值,函数通过地址直接操作原数组内存,修改会反映到实参。
3.用static修饰的函数,可以在其他源文件中被调用。( )
【答案】×
【解析】static函数的作用域仅限于定义它的源文件,其他文件无法访问,即使用extern声明也不行。
4.全局变量在程序开始执行时自动初始化为0。( )
【答案】√
【解析】未显式初始化的全局变量和静态变量,编译器自动初始化为0。局部auto变量则不自动初始化。
5.函数返回值的类型必须与函数体内return语句中表达式的类型严格一致,否则编译错误。( )
【答案】×
【解析】若return表达式类型与声明类型不同,编译器会自动进行类型转换(如int转float),不会报错。
6.递归算法都可以用非递归(迭代)的方式改写实现。( )
【答案】√
【解析】任何递归算法理论上都能转换为迭代实现(可能需要显式栈辅助),两者在计算能力上等价。
7.函数调用时,实参和形参共用同一块内存空间。( )
【答案】×
【解析】C语言采用值传递,实参的值被复制到形参独立的内存空间中,两者占用不同地址。
8.函数的声明(原型)可以放在main函数的花括号内部。( )
【答案】√
【解析】函数声明可以放在任何位置,包括main函数内部,只要在使用前出现即可。但通常放在文件开头。
9.C语言中一个程序可以不包含main函数。( )
【答案】×
【解析】每个C程序必须有且仅有一个main函数作为执行入口,缺少main会导致链接错误。
10.用const修饰的函数参数在函数体内不能被修改。( )
【答案】√
【解析】const限定参数为只读,函数内尝试修改const参数会导致编译错误,用于保护数据不被意外修改。
三、填空题(共5题,每题2分,共10分。)
1.定义在所有函数外部的变量称为____变量,可被多个函数共享。
【答案】全局
【解析】全局变量定义在函数外,作用域覆盖从定义处到文件末尾的所有函数,用于函数间共享数据。
2.函数递归调用时,每次调用都会在内存的____区域中创建一组新的局部变量。
【答案】栈
【解析】递归调用时每层都在栈上分配新栈帧,保存该层的局部变量和返回地址。栈空间有限,递归过深会溢出。
3.将一维数组作为函数参数传递时,形参写成int a[],此时[]内____指定元素个数。
【答案】可以不
【解析】数组作形参时第一维长度可省略,写为int a[]或int a[10]均可。实际传递的是地址而非整个数组。
4.在函数内部用____关键字修饰的局部变量,其值在函数多次调用之间保持不变。
【答案】static
【解析】static局部变量在程序加载时初始化一次,函数退出后不销毁。下次调用时保留上次结束时的值。
5.return语句后的表达式类型若与函数声明的返回值类型不同,编译器会进行____类型转换。
【答案】自动
【解析】例如函数返回类型为double但return 3(int),编译器自动将3转换为3.0后返回,不会报错。
四、读程序写结果题(共4题,每题5分,共20分。)
1.请阅读下列程序,写出运行结果。
#include <stdio.h>
int f(int n)
{
if (n <= 1) return 1;
return n + f(n - 1);
}
int main()
{
printf("%d", f(4));
return 0;
}
【答案】10
【解析】f(4)=4+f(3)=4+6=10,f(3)=3+f(2)=3+3=6,f(2)=2+f(1)=2+1=3。考查递归累加追踪。
2.请阅读下列程序,写出运行结果。
#include <stdio.h>
void sqr(int a[], int n)
{
int i;
for (i = 0; i < n; i++)
a[i] = a[i] * a[i];
}
int main()
{
int x[] = {1, 2, 3};
sqr(x, 3);
printf("%d", x[1]);
return 0;
}
【答案】4
【解析】数组名传地址,sqr中a[1]=2×2=4,反映到原数组x[1]=4。考查数组作函数参数的地址传递特性。
3.请阅读下列程序,写出运行结果。
#include <stdio.h>
int count()
{
static int c = 0;
c++;
return c;
}
int main()
{
printf("%d", count());
printf("%d", count());
printf("%d", count());
return 0;
}
【答案】123
【解析】static局部变量只初始化一次,每次调用累加。第1次c=1,第2次c=2,第3次c=3,连续输出123。考查static变量的持久性。
4.请阅读下列程序,写出运行结果。
#include <stdio.h>
int g(int a, int b)
{
if (b == 0) return a;
return g(b, a % b);
}
int main()
{
printf("%d", g(12, 8));
return 0;
}
【答案】4
【解析】辗转相除法求最大公约数:g(12,8)→g(8,4)→g(4,0)→4。考查递归的实际应用(欧几里得算法)。
五、编程题(共2题,每题10分,共20分。)
1.编写一个递归函数gcd(int a, int b),用辗转相除法求两个正整数的最大公约数。在main中输入两个整数,调用函数并输出结果。
【答案】
#include <stdio.h>
int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main()
{
int m, n;
printf("请输入两个正整数:");
scanf("%d %d", &m, &n);
printf("最大公约数=%d
", gcd(m, n));
return 0;
}
【解析】辗转相除法:gcd(a,b)=gcd(b,a%b),当b=0时a即为最大公约数。例如gcd(12,8)=gcd(8,4)=gcd(4,0)=4。考查递归函数的设计与实现。
2.编写一个函数findMax(int a[], int n),接收一个整型数组和其长度,返回数组中的最大值。在main中初始化一个数组并调用。
【答案】
#include <stdio.h>
int findMax(int a[], int n)
{
int i, max = a[0];
for (i = 1; i < n; i++)
if (a[i] > max)
max = a[i];
return max;
}
int main()
{
int arr[6] = {15, 8, 23, 4, 19, 11};
int m = findMax(arr, 6);
printf("数组最大值=%d
", m);
return 0;
}
【解析】findMax接收数组地址和长度,遍历比较找最大值返回。数组{15,8,23,4,19,11}最大值为23。考查数组作函数参数的实际应用。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$