第13卷 函数 《C语言程序设计》吉林省对口招生《电子与信息类考纲百套卷》

2026-07-16
| 2份
| 27页
| 11人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 题集-专项训练
知识点 函数
使用场景 中职复习
学年 2027-2028
地区(省份) 吉林省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 175 KB
发布时间 2026-07-16
更新时间 2026-07-16
作者 xy06893
品牌系列 学易金卷·考纲百套卷
审核时间 2026-07-16
下载链接 https://m.zxxk.com/soft/58824340.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:2027版吉林省高职分类(对口招生)考试电子与信息类《考纲百套卷》,依据《吉林省高职分类(对口招生)考试电子与信息类专业综合卷考试科目及纲要(2025版)》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共115份试卷,其中知识训练卷82份、专题训练卷19份、课程综合卷14份。 本试卷是第13卷,为知识训练卷,按《C语言程序设计》中“函数”范围和要求编写。具体内容为:1.了解常用库函数。2.了解include命令的使用。3.掌握函数的定义与调用。4.掌握函数的返回值及其类型。5.掌握函数调用时参数间的传递。6.了解函数的嵌套调用和递归调用。7.了解变量的作用域和存储类型。 吉林省高职分类(对口招生)考试 电子与信息类《考纲百套卷》 第13卷 C语言程序设计——函数 (考试时间:45分钟 满分:100分) 一、单项选择题(共20题,每题2分,共40分。) 1.一个函数直接或间接地调用自身,这种调用方式称为( ) A.递归调用 B.嵌套调用 C.循环调用 D.迭代调用 2.编写递归函数时,最重要的部分是( ) A.函数名 B.递归终止条件(出口) C.参数个数 D.返回值类型 3.全局变量的作用范围是( ) A.定义它的函数内 B.main函数内 C.从定义处到文件结束的所有函数 D.整个程序的任意位置 4.函数参数为一维数组时,以下正确的形参写法是( ) A.int a B.int a(10) C.int a{} D.int a[] 5.static int x; 定义在函数内部时,该变量的特点是( ) A.只初始化一次,函数调用结束后值保留 B.每次函数调用都重新初始化 C.只能在定义语句所在行使用 D.作用域为整个文件 6.递归函数fact(4)计算4!,fact(0)=1,fact(n)=n*fact(n-1),fact(4)返回( ) A.4 B.24 C.16 D.120 7.当全局变量和局部变量同名时,在局部变量作用域内( ) A.两者同时生效 B.全局变量优先 C.局部变量屏蔽全局变量 D.编译错误 8.函数通过数组形参修改元素值,调用后实参数组的变化是( ) A.实参数组不变 B.只变第一个元素 C.编译错误 D.实参数组相应元素也被修改 9.extern关键字用于声明( ) A.变量或函数在其他文件中定义 B.变量为静态存储 C.函数不需要返回值 D.变量为寄存器类型 10.以下关于递归的说法,正确的是( ) A.递归一定比迭代快 B.递归代码通常更简洁,但可能消耗更多栈空间 C.递归没有终止条件也能正常运行 D.所有递归都能表示成迭代,反之亦然 11.用static修饰的函数,其作用范围是( ) A.整个程序的所有文件 B.所有包含该头文件的文件 C.仅限定义它的源文件内部 D.main函数中 12.函数形参为int a[]时,函数内部如何知道数组的实际长度?( ) A.通过sizeof(a)自动获取 B.编译器自动计算 C.不用知道长度 D.通常需要额外参数传递长度值 13.未显式初始化的全局int变量,其默认值为( ) A.0 B.随机值 C.1 D.-1 14.递归函数执行过程中,每一次递归调用都会( ) A.覆盖上一次的数据 B.共享同一组局部变量 C.使程序运行更快 D.在栈上创建新一层的数据副本 15.register关键字建议编译器将变量存储在( ) A.内存中 B.CPU寄存器中 C.硬盘中 D.栈中 16.二维数组作为函数形参时,以下正确的声明是( ) A.int a[][] B.int a[3][] C.int a[][5] D.int a[5][] 17.递归层数过深可能导致的问题是( ) A.栈溢出(Stack Overflow) B.编译错误 C.返回值丢失 D.程序跳过终止条件 18.回调函数通常通过什么方式传递给另一个函数?( ) A.全局变量 B.返回值 C.函数指针作为参数 D.extern声明 19.全局变量存储在内存的哪个区域?( ) A.栈区 B.静态存储区(数据段) C.堆区 D.代码区 20.以下哪种问题最适合用递归解决?( ) A.两个数的加法 B.简单的循环累加 C.查找数组最大值 D.汉诺塔问题 二、判断题(共10题,每题1分,共10分。) 1.递归函数必须有终止条件,否则会导致无限递归。( ) 2.全局变量在任何函数中都可以被任意修改,因此建议大量使用。( ) 3.数组名作为函数实参传递时,实际上传递的是数组的首地址。( ) 4.static修饰的全局变量可以在其他源文件中使用extern声明后访问。( ) 5.递归函数都可以用循环(迭代)方式改写。( ) 6.register变量一定存储在CPU寄存器中。( ) 7.函数调用时可以传递一个数组的单个元素作为实参。( ) 8.C语言中,函数不能作为另一个函数的参数直接传递。( ) 9.在递归函数中,每一层递归的局部变量是相互独立的。( ) 10.全局变量和静态变量一样,未初始化时值为随机数。( ) 三、填空题(共5题,每题2分,共10分。) 1.在多文件程序中,若当前文件需使用另一文件中定义的全局变量,应使用____关键字进行声明。 2.将变量声明为____存储类型时,编译器会尽量将其放入CPU寄存器中以提高访问速度。 3.用____关键字修饰的全局函数,其作用域仅限于定义它的源文件,其他文件无法调用。 4.函数名在C语言中代表该函数代码在内存中的____地址。 5.用____关键字修饰的函数参数,在函数体内不能被修改,起到只读保护作用。 四、读程序写结果题(共4题,每题5分,共20分。) 1.请阅读下列程序,写出运行结果。 #include <stdio.h> int add(int a, int b) { return a + b; } int main() { printf("%d", add(add(1, 2), 3)); return 0; } 2.请阅读下列程序,写出运行结果。 #include <stdio.h> int s(int n) { if (n == 0) return 0; return n % 10 + s(n / 10); } int main() { printf("%d", s(234)); return 0; } 3.请阅读下列程序,写出运行结果。 #include <stdio.h> int f(int x) { return x * x; } int main() { int (*p)(int) = f; printf("%d", p(4)); return 0; } 4.请阅读下列程序,写出运行结果。 #include <stdio.h> void prt(int a[][3], int r) { printf("%d", a[r - 1][2]); } int main() { int x[2][3] = {{1,2,3},{4,5,6}}; prt(x, 2); return 0; } 五、编程题(共2题,每题10分,共20分。) 1.编写一个函数diagSum(int a[][3], int n),计算n×n二维数组两条对角线元素之和并返回。在main中初始化一个3×3数组并调用。 2.编写一个递归函数sumDigit(int n),计算正整数n各位数字之和。在main中输入一个整数,调用函数并输出结果。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版吉林省高职分类(对口招生)考试电子与信息类《考纲百套卷》,依据《吉林省高职分类(对口招生)考试电子与信息类专业综合卷考试科目及纲要(2025版)》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共115份试卷,其中知识训练卷82份、专题训练卷19份、课程综合卷14份。 本试卷是第13卷,为知识训练卷,按《C语言程序设计》中“函数”范围和要求编写。具体内容为:1.了解常用库函数。2.了解include命令的使用。3.掌握函数的定义与调用。4.掌握函数的返回值及其类型。5.掌握函数调用时参数间的传递。6.了解函数的嵌套调用和递归调用。7.了解变量的作用域和存储类型。 吉林省高职分类(对口招生)考试 电子与信息类《考纲百套卷》 第13卷 C语言程序设计——函数 (考试时间:45分钟 满分:100分) 一、单项选择题(共20题,每题2分,共40分。) 1.一个函数直接或间接地调用自身,这种调用方式称为( ) A.递归调用 B.嵌套调用 C.循环调用 D.迭代调用 【答案】A 【解析】递归是函数自己调用自己。分直接递归(函数内调用自身)和间接递归(f1调f2,f2调f1)。 2.编写递归函数时,最重要的部分是( ) A.函数名 B.递归终止条件(出口) C.参数个数 D.返回值类型 【答案】B 【解析】递归必须有终止条件,否则会无限递归导致栈溢出。递归出口是递归函数正确运行的保障。 3.全局变量的作用范围是( ) A.定义它的函数内 B.main函数内 C.从定义处到文件结束的所有函数 D.整个程序的任意位置 【答案】C 【解析】全局变量定义在函数外,从定义位置到文件末尾均可见。其他文件用extern声明也可访问。 4.函数参数为一维数组时,以下正确的形参写法是( ) A.int a B.int a(10) C.int a{} D.int a[] 【答案】D 【解析】数组作为形参时写为 int a[] 或 int a[10],第一维长度可省略。实际传递的是数组首地址。 5.static int x; 定义在函数内部时,该变量的特点是( ) A.只初始化一次,函数调用结束后值保留 B.每次函数调用都重新初始化 C.只能在定义语句所在行使用 D.作用域为整个文件 【答案】A 【解析】static局部变量在程序加载时初始化一次,函数退出后不销毁,下次调用保留上次的值。 6.递归函数fact(4)计算4!,fact(0)=1,fact(n)=n*fact(n-1),fact(4)返回( ) A.4 B.24 C.16 D.120 【答案】B 【解析】4!=4×3×2×1=24。fact(4)=4×fact(3)=4×6=24。 7.当全局变量和局部变量同名时,在局部变量作用域内( ) A.两者同时生效 B.全局变量优先 C.局部变量屏蔽全局变量 D.编译错误 【答案】C 【解析】同名时局部变量优先,在其作用域内屏蔽全局变量。离开该作用域后全局变量重新可见。 8.函数通过数组形参修改元素值,调用后实参数组的变化是( ) A.实参数组不变 B.只变第一个元素 C.编译错误 D.实参数组相应元素也被修改 【答案】D 【解析】数组名作为实参传递的是地址,函数内通过地址直接操作原数组,因此修改会影响实参。 9.extern关键字用于声明( ) A.变量或函数在其他文件中定义 B.变量为静态存储 C.函数不需要返回值 D.变量为寄存器类型 【答案】A 【解析】extern声明变量或函数定义在其他源文件中,告诉编译器该符号存在,链接时再解析。 10.以下关于递归的说法,正确的是( ) A.递归一定比迭代快 B.递归代码通常更简洁,但可能消耗更多栈空间 C.递归没有终止条件也能正常运行 D.所有递归都能表示成迭代,反之亦然 【答案】B 【解析】递归代码简洁易读,但每次调用都占用栈空间,效率可能低于迭代。必须设终止条件。 11.用static修饰的函数,其作用范围是( ) A.整个程序的所有文件 B.所有包含该头文件的文件 C.仅限定义它的源文件内部 D.main函数中 【答案】C 【解析】static函数的作用域仅限于定义它的源文件,其他文件即使extern声明也无法访问。 12.函数形参为int a[]时,函数内部如何知道数组的实际长度?( ) A.通过sizeof(a)自动获取 B.编译器自动计算 C.不用知道长度 D.通常需要额外参数传递长度值 【答案】D 【解析】数组作为参数退化为指针,sizeof(a)返回指针大小而非数组大小。需额外参数传递长度。 13.未显式初始化的全局int变量,其默认值为( ) A.0 B.随机值 C.1 D.-1 【答案】A 【解析】全局变量和静态变量默认初始化为0。局部auto变量不初始化则为随机值。 14.递归函数执行过程中,每一次递归调用都会( ) A.覆盖上一次的数据 B.共享同一组局部变量 C.使程序运行更快 D.在栈上创建新一层的数据副本 【答案】D 【解析】每次递归调用都在栈上分配新的栈帧,包含独立的局部变量和参数。逐层返回时逐层释放。 15.register关键字建议编译器将变量存储在( ) A.内存中 B.CPU寄存器中 C.硬盘中 D.栈中 【答案】B 【解析】register是建议性关键字,请求编译器将变量放入寄存器以加速访问。现代编译器通常自动优化。 16.二维数组作为函数形参时,以下正确的声明是( ) A.int a[][] B.int a[3][] C.int a[][5] D.int a[5][] 【答案】C 【解析】二维数组作形参必须指定列数(第二维),可省略行数(第一维)。int a[][5]正确,D中a[5][]列数未指定不合法。 17.递归层数过深可能导致的问题是( ) A.栈溢出(Stack Overflow) B.编译错误 C.返回值丢失 D.程序跳过终止条件 【答案】A 【解析】每层递归占用栈空间,层数过多超出栈容量导致栈溢出。应控制递归深度或改用迭代。 18.回调函数通常通过什么方式传递给另一个函数?( ) A.全局变量 B.返回值 C.函数指针作为参数 D.extern声明 【答案】C 【解析】回调函数通过函数指针作为参数传递,允许一个函数调用另一个尚未确定的函数,实现灵活的编程模式。 19.全局变量存储在内存的哪个区域?( ) A.栈区 B.静态存储区(数据段) C.堆区 D.代码区 【答案】B 【解析】全局变量和静态变量存储在静态存储区(全局数据段),程序加载时分配,结束时释放。 20.以下哪种问题最适合用递归解决?( ) A.两个数的加法 B.简单的循环累加 C.查找数组最大值 D.汉诺塔问题 【答案】D 【解析】汉诺塔问题具有天然的递归结构:将n个盘子从A移到C,需先移n-1个到B,再移最大的到C。递归解法简洁直观。 二、判断题(共10题,每题1分,共10分。) 1.递归函数必须有终止条件,否则会导致无限递归。( ) 【答案】√ 【解析】没有终止条件的递归会无限调用自身,最终栈溢出。终止条件是递归函数正确性的关键。 2.全局变量在任何函数中都可以被任意修改,因此建议大量使用。( ) 【答案】× 【解析】全局变量虽可被所有函数访问,但过度使用会破坏模块化、增加耦合度,应谨慎使用。 3.数组名作为函数实参传递时,实际上传递的是数组的首地址。( ) 【答案】√ 【解析】数组名作实参时传递的是数组首元素地址,因此函数内对数组元素的修改会影响原数组。 4.static修饰的全局变量可以在其他源文件中使用extern声明后访问。( ) 【答案】× 【解析】static全局变量作用域仅限于定义它的源文件,其他文件无法访问。这是static的封装特性。 5.递归函数都可以用循环(迭代)方式改写。( ) 【答案】√ 【解析】任何递归算法都可以转换为迭代实现(可能需要显式栈辅助),理论上递归和迭代是等价的。 6.register变量一定存储在CPU寄存器中。( ) 【答案】× 【解析】register只是建议而非强制,编译器可能忽略该建议。现代编译器会自动进行寄存器优化。 7.函数调用时可以传递一个数组的单个元素作为实参。( ) 【答案】√ 【解析】数组元素a[i]可作为普通变量传递给函数形参,此时传递的是元素值(值传递)。 8.C语言中,函数不能作为另一个函数的参数直接传递。( ) 【答案】× 【解析】函数名代表函数地址,可通过函数指针作为参数传递,实现回调功能。 9.在递归函数中,每一层递归的局部变量是相互独立的。( ) 【答案】√ 【解析】每次递归调用创建新的栈帧,各层局部变量独立存储,互不干扰。 10.全局变量和静态变量一样,未初始化时值为随机数。( ) 【答案】× 【解析】全局变量和静态变量未初始化时自动为0,只有局部auto变量不初始化才是随机值。 三、填空题(共5题,每题2分,共10分。) 1.在多文件程序中,若当前文件需使用另一文件中定义的全局变量,应使用____关键字进行声明。 【答案】extern 【解析】extern告诉编译器该变量定义在其他源文件中,链接时解析。如extern int x;声明后即可在当前文件使用。 2.将变量声明为____存储类型时,编译器会尽量将其放入CPU寄存器中以提高访问速度。 【答案】register 【解析】register是建议性关键字,请求将变量放寄存器。但现代编译器通常自动优化,且不能取register变量地址。 3.用____关键字修饰的全局函数,其作用域仅限于定义它的源文件,其他文件无法调用。 【答案】static 【解析】static函数是文件级私有函数,外部不可见。用于封装内部实现细节,避免命名冲突。 4.函数名在C语言中代表该函数代码在内存中的____地址。 【答案】入口 【解析】函数名是函数代码的起始地址,因此可以赋值给函数指针变量,实现函数回调等高级功能。 5.用____关键字修饰的函数参数,在函数体内不能被修改,起到只读保护作用。 【答案】const 【解析】const参数声明该参数为只读,函数内尝试修改会导致编译错误。常用于字符串处理函数保护原始数据。 四、读程序写结果题(共4题,每题5分,共20分。) 1.请阅读下列程序,写出运行结果。 #include <stdio.h> int add(int a, int b) { return a + b; } int main() { printf("%d", add(add(1, 2), 3)); return 0; } 【答案】6 【解析】内层add(1,2)=3,外层add(3,3)=6。考查函数嵌套调用中返回值作为实参的追踪。 2.请阅读下列程序,写出运行结果。 #include <stdio.h> int s(int n) { if (n == 0) return 0; return n % 10 + s(n / 10); } int main() { printf("%d", s(234)); return 0; } 【答案】9 【解析】递归求各位数字和:s(234)=4+s(23)=4+5=9,s(23)=3+s(2)=3+2=5。不同于阶乘递归公式。考查非常见递归追踪。 3.请阅读下列程序,写出运行结果。 #include <stdio.h> int f(int x) { return x * x; } int main() { int (*p)(int) = f; printf("%d", p(4)); return 0; } 【答案】16 【解析】p是函数指针,指向f。p(4)等价于f(4)=4×4=16。考查函数指针的定义与调用。 4.请阅读下列程序,写出运行结果。 #include <stdio.h> void prt(int a[][3], int r) { printf("%d", a[r - 1][2]); } int main() { int x[2][3] = {{1,2,3},{4,5,6}}; prt(x, 2); return 0; } 【答案】6 【解析】prt(x,2)传入二维数组。r-1=1,a[1][2]=6。考查二维数组作函数参数的传递与访问。 五、编程题(共2题,每题10分,共20分。) 1.编写一个函数diagSum(int a[][3], int n),计算n×n二维数组两条对角线元素之和并返回。在main中初始化一个3×3数组并调用。 【答案】 #include <stdio.h> int diagSum(int a[][3], int n) { int i, sum = 0; for (i = 0; i < n; i++) { sum += a[i][i]; sum += a[i][n - 1 - i]; } return sum; } int main() { int x[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; printf("对角线和=%d ", diagSum(x, 3)); return 0; } 【解析】diagSum接收二维数组,主对角线a[i][i]:1+5+9=15,副对角线a[i][n-1-i]:3+5+7=15,总和30。考查二维数组作函数参数的实际应用。 2.编写一个递归函数sumDigit(int n),计算正整数n各位数字之和。在main中输入一个整数,调用函数并输出结果。 【答案】 #include <stdio.h> int sumDigit(int n) { if (n == 0) return 0; else return n % 10 + sumDigit(n / 10); } int main() { int num; printf("请输入一个正整数:"); scanf("%d", &num); printf("各位数字之和=%d ", sumDigit(num)); return 0; } 【解析】递归公式:n%10取最低位,n/10去掉最低位。终止条件n==0。例如sumDigit(852)=2+sumDigit(85)=2+5+8=15。考查非常见递归的设计与实现。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第13卷 函数 《C语言程序设计》吉林省对口招生《电子与信息类考纲百套卷》
1
第13卷 函数 《C语言程序设计》吉林省对口招生《电子与信息类考纲百套卷》
2
第13卷 函数 《C语言程序设计》吉林省对口招生《电子与信息类考纲百套卷》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。