第56卷 函数与结构体 专题训练卷 《C语言程序设计知识》山东省(春季高考)《软件与应用技术类考纲百套卷》

2026-08-12
| 2份
| 15页
| 29人阅读
| 0人下载

内容正文:

编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第56卷,为专题训练卷,按“函数与结构体”专题范围和要求编写。具体内容为:(1)理解函数的定义。(2)掌握函数的调用;(1)了解结构体变量的定义及初始化。(2)理解结构体变量的引用。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第56卷 专题训练——函数与结构体 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.关于下列函数头部,哪一项可以作为定义的开头(  ) A.total int(int a) B.function total(int a) C.int total(int a) D.define total(int a) 【答案】C 【解析】C 语言函数头部格式为【返回值类型 函数名 (形参列表)】。A 顺序错误;B 中 function 不属于 C 语言关键字;D 中 define 用于宏定义,不能定义函数;只有 C 符合语法规范。 2.若函数只执行操作而不向调用者返回数值,返回值类型通常写为(  ) A.char B.int C.void D.float 【答案】C 【解析】void表示函数没有具体的数值返回结果,适用于只执行操作的函数。 3.调用函数average(6, 8)时,传入的实参数量是(  ) A.两个 B.一个 C.三个 D.四个 【答案】A 【解析】括号中的6和8分别是两个实参,因此调用时传入两个实参。 4.下列哪一项表示把函数调用结果保存到变量result中(  ) A.result add(2,5); B.call add(2,5); C.add int(2,5); D.result=add(2,5); 【答案】D 【解析】函数调用可写在赋值语句的右侧,result=add(2,5)表示保存返回值。 5.函数定义中的返回类型主要说明(  ) A.返回结果的类型 B.函数名称的长度 C.实参数量 D.局部变量的范围 【答案】A 【解析】返回类型用于说明函数通过return语句交给调用处的结果类型。 6.函数定义的参数在术语上称为(  ) A.调用时写入的数据 B.函数最后返回的数值 C.定义时列出的参数 D.函数外部的变量 【答案】C 【解析】函数定义括号中列出的参数用于接收调用数据,称为形式参数。 7.执行下列程序后,变量value的输出值是(  ) void setValue(int n) { n = 20; } int main(void) { int value = 6; setValue(value); printf("%d", value); return 0; } A.20 B.0 C.8 D.6 【答案】D 【解析】整型参数按值传递,函数内n的修改不会改变调用处的value,因此输出6。 8.函数需要把计算结果交给调用者时,通常使用哪条语句(  ) A.continue语句 B.return语句 C.break语句 D.switch语句 【答案】B 【解析】return语句可以结束当前函数,并把表达式的值返回给调用者。 9.执行下列程序后,输出结果是(  ) int choose(int a, int b) { if (a % 2 == 0) return a; return b; } int main(void) { printf("%d", choose(6, 9)); return 0; } A.6 B.9 C.15 D.3 【答案】A 【解析】6是偶数,choose函数执行第一条return语句,返回6。 10.在函数体出现之前,哪类语句可以先说明函数接口(  ) A.函数调用语句 B.赋值语句 C.函数声明语句 D.循环控制语句 【答案】C 【解析】函数声明可以提前说明函数名、返回值类型和参数形式,便于编译器检查调用。 11.函数调用时,形参的作用是(  ) A.保存程序的返回结果 B.替代函数的返回类型 C.控制主函数的循环次数 D.接收对应实参的值 【答案】D 【解析】形参是函数定义中用于接收调用者传入数据的变量,调用时由对应实参为其提供初值。 12.在函数内部声明的普通变量,其直接可用范围通常是(  ) A.整个工程的所有函数 B.当前函数或所在代码块 C.程序启动前的预处理阶段 D.仅main函数的参数表 【答案】B 【解析】普通局部变量的作用域限于定义它的函数或代码块,不能被其他函数直接使用。 13.函数调用结束后,调用处能够直接得到的是(  ) A.函数返回的结果 B.函数内部的全部局部变量 C.函数形参的存储地址 D.函数体中的每条语句 【答案】A 【解析】有返回值的函数结束后,调用表达式可以得到return语句返回的结果;局部变量仍属于函数内部。 14.下列函数原型与调用组合中,参数能够匹配的是(  ) A.int f(int x,y); 调用f(3) B.void f(void); 调用f(3) C.int f(int x); 调用f(3) D.char f(char c); 调用f(3,4) 【答案】C 【解析】int f(int x)需要一个int实参,调用f(3)的参数个数和类型均匹配。 15.递归调用能够最终停止,程序中必须安排(  ) A.数组下标 B.文件指针 C.输出格式 D.终止条件 【答案】D 【解析】递归函数必须有终止条件,否则会不断调用自身而无法正常结束。 16.执行下列程序后,输出结果是(  ) int sumOdd(int n) { if (n <= 0) return 0; return n + sumOdd(n - 2); } int main(void) { printf("%d", sumOdd(5)); return 0; } A.6 B.9 C.5 D.12 【答案】B 【解析】sumOdd(5)=5+sumOdd(3)=5+3+sumOdd(1)=9,继续调用到n<=0时返回0。 17.对于参数表写成void的函数,下面哪一项是真正的调用表达式(  ) A.ping() B.ping; C.void ping(); D.call(ping); 【答案】A 【解析】无参数函数的调用仍需写函数名和圆括号,ping()才是调用表达式。 18.执行下列程序后,输出结果是(  ) int bias = 2; int getValue(int x) { return x + bias; } int main(void) { printf("%d", getValue(5)); return 0; } A.5 B.7 C.2 D.10 【答案】B 【解析】全局变量bias的值为2,getValue(5)返回5+2,输出7。 19.函数需要返回可能包含小数的计算结果时,返回类型宜选择(  ) A.整数类型int B.字符类型char C.双精度浮点型 D.无返回值void 【答案】C 【解析】计算结果可能包含小数时,应选用double对应的双精度浮点类型;void表示不返回具体数值。 20.下列函数调用中,第一个实参表达式运算结果等于 7 的是(  ) A.mix(2*3,1) B.mix(14/2,2) C.mix(10-4,3) D.mix(4+2,4) 【答案】B 【解析】 A:3*2=6 B:14/2=7 C:10-4=6 D:4+2=6 二、简答题(共2题,每题10分,共20分) 1.阅读程序,写出输出结果,并说明函数调用的计算顺序。 #include <stdio.h> int calc(int x) { if (x % 2 == 0) return x / 2; return x * 2 + 1; } int main(void) { printf("%d %d %d ", calc(6), calc(5), calc(calc(4))); return 0; } 【答案】输出:3 11 1。 【解析】calc(6)=3;calc(5)=11;内层calc(4)=2,外层calc(2)=1,因此三个实参表达式依次得到3、11、1。 2.阅读程序,说明实参和形参的关系,并写出输出结果。 #include <stdio.h> int adjust(int x) { int y = 3; x = x + y; return x; } int main(void) { int x = 4; int y = adjust(x); printf("%d %d ", x, y); return 0; } 【答案】输出:4 7。 【解析】调用adjust时,main中的x=4作为实参传给形参x,函数内形参变为7并返回;按值传递不改变main中的x,所以输出4和7。 三、案例分析题(共1题,共10分) 1.下面程序用于计算两个整数的较大值,但函数调用处存在错误。请指出错误并修改。 #include <stdio.h> int max2(int a, int b) { if (a > b) return a; return b; } int main(void) { int x = 8, y = 5; printf("%d ", max2(x)); return 0; } 【答案】将max2(x)修改为max2(x, y)。 【解析】函数max2定义了两个int形参a和b,调用时必须提供两个实参。原程序只传入x,参数个数不匹配,修改为max2(x,y)后才能正确调用并返回较大值。 四、综合应用题(共1题,共10分) 1.编写程序:定义函数isPrime,判断输入的正整数是否为素数;若为素数输出1,否则输出0。 【答案】#include <stdio.h> int isPrime(int n) { int i; if (n < 2) return 0; for (i = 2; i * i <= n; i++) { if (n % i == 0) return 0; } return 1; } int main(void) { int n; scanf("%d", &n); printf("%d ", isPrime(n)); return 0; } 【解析】isPrime先排除小于2的数,再从2试除到i*i<=n;发现能整除时返回0,循环结束仍未找到因子则返回1,main调用函数并输出返回值。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第56卷,为专题训练卷,按“函数与结构体”专题范围和要求编写。具体内容为:(1)理解函数的定义。(2)掌握函数的调用;(1)了解结构体变量的定义及初始化。(2)理解结构体变量的引用。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第56卷 专题训练——函数与结构体 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.关于下列函数头部,哪一项可以作为定义的开头(  ) A.total int(int a) B.function total(int a) C.int total(int a) D.define total(int a) 2.若函数只执行操作而不向调用者返回数值,返回值类型通常写为(  ) A.char B.int C.void D.float 3.调用函数average(6, 8)时,传入的实参数量是(  ) A.两个 B.一个 C.三个 D.四个 4.下列哪一项表示把函数调用结果保存到变量result中(  ) A.result add(2,5); B.call add(2,5); C.add int(2,5); D.result=add(2,5); 5.函数定义中的返回类型主要说明(  ) A.返回结果的类型 B.函数名称的长度 C.实参数量 D.局部变量的范围 6.函数定义的参数在术语上称为(  ) A.调用时写入的数据 B.函数最后返回的数值 C.定义时列出的参数 D.函数外部的变量 7.执行下列程序后,变量value的输出值是(  ) void setValue(int n) { n = 20; } int main(void) { int value = 6; setValue(value); printf("%d", value); return 0; } A.20 B.0 C.8 D.6 8.函数需要把计算结果交给调用者时,通常使用哪条语句(  ) A.continue语句 B.return语句 C.break语句 D.switch语句 9.执行下列程序后,输出结果是(  ) int choose(int a, int b) { if (a % 2 == 0) return a; return b; } int main(void) { printf("%d", choose(6, 9)); return 0; } A.6 B.9 C.15 D.3 10.在函数体出现之前,哪类语句可以先说明函数接口(  ) A.函数调用语句 B.赋值语句 C.函数声明语句 D.循环控制语句 11.函数调用时,形参的作用是(  ) A.保存程序的返回结果 B.替代函数的返回类型 C.控制主函数的循环次数 D.接收对应实参的值 12.在函数内部声明的普通变量,其直接可用范围通常是(  ) A.整个工程的所有函数 B.当前函数或所在代码块 C.程序启动前的预处理阶段 D.仅main函数的参数表 13.函数调用结束后,调用处能够直接得到的是(  ) A.函数返回的结果 B.函数内部的全部局部变量 C.函数形参的存储地址 D.函数体中的每条语句 14.下列函数原型与调用组合中,参数能够匹配的是(  ) A.int f(int x,y); 调用f(3) B.void f(void); 调用f(3) C.int f(int x); 调用f(3) D.char f(char c); 调用f(3,4) 15.递归调用能够最终停止,程序中必须安排(  ) A.数组下标 B.文件指针 C.输出格式 D.终止条件 16.执行下列程序后,输出结果是(  ) int sumOdd(int n) { if (n <= 0) return 0; return n + sumOdd(n - 2); } int main(void) { printf("%d", sumOdd(5)); return 0; } A.6 B.9 C.5 D.12 17.对于参数表写成void的函数,下面哪一项是真正的调用表达式(  ) A.ping() B.ping; C.void ping(); D.call(ping); 18.执行下列程序后,输出结果是(  ) int bias = 2; int getValue(int x) { return x + bias; } int main(void) { printf("%d", getValue(5)); return 0; } A.5 B.7 C.2 D.10 19.函数需要返回可能包含小数的计算结果时,返回类型宜选择(  ) A.整数类型int B.字符类型char C.双精度浮点型 D.无返回值void 20.下列函数调用中,第一个实参表达式运算结果等于 7 的是(  ) A.mix(2*3,1) B.mix(14/2,2) C.mix(10-4,3) D.mix(4+2,4) 二、简答题(共2题,每题10分,共20分) 1.阅读程序,写出输出结果,并说明函数调用的计算顺序。 #include <stdio.h> int calc(int x) { if (x % 2 == 0) return x / 2; return x * 2 + 1; } int main(void) { printf("%d %d %d ", calc(6), calc(5), calc(calc(4))); return 0; }   2.阅读程序,说明实参和形参的关系,并写出输出结果。 #include <stdio.h> int adjust(int x) { int y = 3; x = x + y; return x; } int main(void) { int x = 4; int y = adjust(x); printf("%d %d ", x, y); return 0; }   三、案例分析题(共1题,共10分) 1.下面程序用于计算两个整数的较大值,但函数调用处存在错误。请指出错误并修改。 #include <stdio.h> int max2(int a, int b) { if (a > b) return a; return b; } int main(void) { int x = 8, y = 5; printf("%d ", max2(x)); return 0; }   四、综合应用题(共1题,共10分) 1.编写程序:定义函数isPrime,判断输入的正整数是否为素数;若为素数输出1,否则输出0。   原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第56卷 函数与结构体 专题训练卷 《C语言程序设计知识》山东省(春季高考)《软件与应用技术类考纲百套卷》
1
第56卷 函数与结构体 专题训练卷 《C语言程序设计知识》山东省(春季高考)《软件与应用技术类考纲百套卷》
2
第56卷 函数与结构体 专题训练卷 《C语言程序设计知识》山东省(春季高考)《软件与应用技术类考纲百套卷》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。