第74卷 课程综合卷 《C语言程序设计知识》山东省(春季高考)《软件与应用技术类考纲百套卷》

2026-08-13
| 2份
| 20页
| 72人阅读
| 0人下载

内容正文:

编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第74卷,为课程综合卷,按《C语言程序设计知识》课程综合范围和要求编写。具体内容为:基本数据类型与顺序程序设计、分支程序设计、循环程序设计、数组与指针、函数与结构体。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第74卷 课程综合卷——C语言程序设计知识 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.定义一个值不再改变、初值为100的整型常量,正确语句是(  ) A.int const = MAX 100; B.const int MAX = 100; C.const MAX = 100; D.int MAX = const 100; 【答案】B 【解析】const用于声明只读对象,类型、标识符和初始化表达式的位置必须正确;MAX声明后不能作为普通变量重新赋值。 2.若从键盘输入5,运行下列程序段后输出的是(  ) int n; scanf("%d", &n); n = n + 3; printf("%d ", n); A.8 B.5 C.3 D.2 【答案】A 【解析】scanf把输入值存入n,赋值语句n=n+3把n改为8,printf按照%d输出整型变量的当前值。 3.表达式x < y && y % 2 == 1的值是(  ) int x = 4, y = 7; printf("%d ", x < y && y % 2 == 1); A.0 B.1 C.4 D.7 【答案】B 【解析】x<y和y%2==1都成立,逻辑与运算结果为真;C语言用整数1表示真,用0表示假。 4.变量x为6时,下列if语句的输出是(  ) int x = 6; if (x % 2 == 0) printf("E"); else printf("O"); A.O B.EO C.E D.无输出 【答案】C 【解析】x除以2的余数为0,条件成立,执行if分支输出E,不会执行else分支。 5.变量n为2时,switch语句执行后的输出是(  ) int n = 2; switch (n) { case 1: printf("A"); break; case 2: printf("B"); break; default: printf("C"); } A.A B.C C.B D.BC 【答案】C 【解析】n的值为2,匹配case 2并输出B,随后break结束switch,不会继续执行default分支。 6.while循环结束后,变量s的值是(  ) int i = 1, s = 0; while (i <= 3) { s += i; i++; } A.6 B.3 C.5 D.7 【答案】A 【解析】while循环依次把1、2、3累加到s中,循环结束时s等于1+2+3,即6。 7.do-while循环结束后,变量i的值是(  ) int i = 0; do { i += 2; } while (i < 5); A.6 B.4 C.5 D.8 【答案】A 【解析】do-while至少执行一次,i依次变为2、4、6;当i为6时条件i<5不成立,循环结束。 8.for循环完成累加后,变量s的值是(  ) int i, s = 0; for (i = 1; i <= 4; i++) s += i; A.4 B.6 C.10 D.11 【答案】C 【解析】for循环的i依次为1、2、3、4,s依次累加这些值,最终为10。 9.嵌套循环全部执行后,变量c的值是(  ) int i, j, c = 0; for (i = 1; i <= 2; i++) for (j = 1; j <= 3; j++) c++; A.3 B.5 C.9 D.6 【答案】D 【解析】外层循环执行2次,每次内层循环执行3次,c一共自增2×3次,结果为6。 10.当break条件满足时,循环结束后变量s的值是(  ) int i, s = 0; for (i = 1; i <= 5; i++) { if (i == 4) break; s += i; } A.3 B.10 C.15 D.6 【答案】D 【解析】当i等于4时执行break,循环立即结束;已累加的i为1、2、3,因此s为6。 11.continue跳过偶数后,变量s的值是(  ) int i, s = 0; for (i = 1; i <= 5; i++) { if (i % 2 == 0) continue; s += i; } A.9 B.6 C.12 D.15 【答案】A 【解析】continue跳过偶数i的累加语句,s只累加1、3、5,结果为9。 12.正确地定义并初始化含4个整型元素的一维数组是(  ) A.int a = [1, 2, 3, 4]; B.int a(4) = {1, 2, 3, 4}; C.int [4] a = {1, 2, 3, 4}; D.int a[4] = {1, 2, 3, 4}; 【答案】D 【解析】一维数组定义要先写元素类型和数组名,再在方括号中给出长度;初始化列表使用花括号。 13.二维数组a按下标访问时,下列printf输出的是(  ) int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; printf("%d ", a[1][0] + a[0][2]); A.5 B.6 C.7 D.8 【答案】C 【解析】a[1][0]为4,a[0][2]为3,二者相加为7;二维数组的下标从0开始。 14.若随后要用printf("%s", name)输出字符串"Liu",正确的定义是(  ) A.char name = "Liu"; B.char name[3] = "Liu"; C.char name[6] = "Liu"; D.char name[6] = "Li"; 【答案】C 【解析】字符串需要以'\0'结束,"Liu"占用4个字符位置;char name[6]容量足够且可以作为字符串输出。 15.通过指针p赋值后,变量x的值是(  ) int x = 12; int *p = &x; *p = 20; A.12 B.20 C.10 D.0 【答案】B 【解析】p保存x的地址,*p访问该地址对应的变量;给*p赋20等价于给x赋20。 16.已定义int a[2][3]; int (*p)[3] = a;,访问a[0][1]的表达式是(  ) A.p[1][0] B.p[0][1] C.*p[0] D.p[0] 【答案】B 【解析】p是指向含3个int元素的一维数组的指针,p[0]表示第一行,p[0][1]表示该行下标为1的元素。 17.函数add被调用并返回后,main函数输出的是(  ) int add(int a, int b) { return a + b; } int main(void) { printf("%d ", add(3, 5)); return 0; } A.5 B.6 C.15 D.8 【答案】D 【解析】函数add接收3和5两个实参并返回它们的和,main函数把返回值按%d输出,因此结果为8。 18.正确地定义并初始化一个含学号和等级字符的结构体变量是(  ) A.struct Student { int id; char grade; } s = {101, "A"}; B.struct Student { int id; char grade; } s = {101, 'A'}; C.struct Student { int id; char grade; } = s {101, 'A'}; D.Student struct { int id; char grade; } s = {101, 'A'}; 【答案】B 【解析】结构体定义以struct开头,char成员用字符常量'A'初始化;字符串"A"不能直接初始化单个char成员。 19.数组实参传给sumArray后,函数调用结果是(  ) int sumArray(int a[], int n) { int i, s = 0; for (i = 0; i < n; i++) s += a[i]; return s; } int main(void) { int a[3] = {2, 4, 6}; printf("%d ", sumArray(a, 3)); return 0; } A.12 B.6 C.8 D.14 【答案】A 【解析】sumArray通过形参a依次访问三个数组元素2、4、6并累加,返回12;调用时数组名a作为实参传入。 20.break与continue共同作用后,变量count的值是(  ) int i, count = 0; for (i = 1; i <= 6; i++) { if (i == 3) continue; if (i == 5) break; count++; } A.2 B.4 C.6 D.3 【答案】D 【解析】i为1、2、4时count各加1;i为3时continue跳过加法,i为5时break结束循环,因此count为3。 二、简答题(共2题,每题10分,共20分) 1.阅读下列程序,写出输出结果,并说明程序的功能。 #include <stdio.h> int main(void) { int a[5] = {3, 6, 1, 8, 4}; int i, sum = 0, count = 0; for (i = 0; i < 5; i++) { if (a[i] % 2 == 0) { sum += a[i]; count++; } } printf("%d %d ", count, sum); return 0; } 【答案】输出结果为:3 18。程序遍历一维数组,筛选出数组中的所有偶数元素,统计偶数元素的个数,同时累加计算所有偶数元素的总和,最终依次输出偶数个数、偶数总和。 【解析】给定数组元素为{3, 6, 1, 8, 4},逐一判断奇偶性:3为奇数、6为偶数、1为奇数、8为偶数、4为偶数。其中有效偶数为6、8、4,共计3个;偶数求和:6+8+4=18。因此程序最终输出计数结果3、求和结果18。本题考查一维数组遍历、for循环结构、if条件判断、取模运算的基础应用,核心考点为偶数判定与数组数据统计累加逻辑。原答案存在数据统计失误,遗漏数组元素4,导致结果错误。 2.阅读下列程序,写出输出结果,并说明形参p在函数中的作用。 #include <stdio.h> struct Student { char name[10]; int score; }; void addBonus(struct Student *p) { if (p->score < 60) p->score += 10; } int main(void) { struct Student s = {"Li", 55}; addBonus(&s); printf("%s %d ", s.name, s.score); return 0; } 【答案】输出结果为:Li 65。p是指向结构体变量s的指针形参,函数通过p->score访问并修改调用者s中的score成员。 【解析】addBonus接收&s后,p保存s的地址;score小于60时加10。p->score等价于(*p).score,修改会反映到s本身。 三、案例分析题(共1题,共10分) 1.下列程序的功能是输出数组中的最大值。请填写3处空缺,使程序能够正确编译运行,并写出程序输出结果。 #include <stdio.h> int maxValue(int a[], int n) { int i, max = a[0]; for (i = 1; /* (1) */; i++) { if (/* (2) */) max = a[i]; } return max; } int main(void) { int a[5] = {12, 7, 19, 5, 10}; printf("%d ", /* (3) */); return 0; } 【答案】(1)i < n;(2)a[i] > max;(3)maxValue(a, 5)。程序输出结果为:19。 【解析】循环从下标1开始逐个比较剩余元素,条件(2)成立时更新max。main将数组名a和元素个数5传给函数,函数返回最大值19。 四、综合应用题(共1题,共10分) 1.编写完整C程序:输入3名学生的姓名和3门课程成绩,计算并保存每名学生的平均分,依次输出姓名和平均分,最后输出平均分不低于60分的学生人数。要求:使用结构体数组保存学生信息;使用函数计算平均分;函数通过指向结构体的指针修改平均分成员;姓名按不含空格的字符串输入。 【答案】参考程序: #include <stdio.h> #define STUDENT_COUNT 3 #define COURSE_COUNT 3 struct Student { char name[12]; int score[COURSE_COUNT]; float average; }; float getAverage(int score[], int n) { int i, sum = 0; for (i = 0; i < n; i++) sum += score[i]; return (float)sum / n; } void calculateAverage(struct Student *p) { p->average = getAverage(p->score, COURSE_COUNT); } int main(void) { struct Student students[STUDENT_COUNT]; int i, j, passCount = 0; for (i = 0; i < STUDENT_COUNT; i++) { scanf("%11s", students[i].name); for (j = 0; j < COURSE_COUNT; j++) scanf("%d", &students[i].score[j]); calculateAverage(&students[i]); if (students[i].average >= 60.0f) passCount++; } for (i = 0; i < STUDENT_COUNT; i++) printf("%s %.2f ", students[i].name, students[i].average); printf("%d ", passCount); return 0; } 【解析】程序用结构体数组保存3名学生的姓名、成绩数组和平均分。getAverage通过数组形参遍历成绩并返回浮点平均值;calculateAverage通过结构体指针修改average成员。main使用嵌套for循环完成输入,使用if统计及格人数,最后输出结果。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第74卷,为课程综合卷,按《C语言程序设计知识》课程综合范围和要求编写。具体内容为:基本数据类型与顺序程序设计、分支程序设计、循环程序设计、数组与指针、函数与结构体。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第74卷 课程综合卷——C语言程序设计知识 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.定义一个值不再改变、初值为100的整型常量,正确语句是(  ) A.int const = MAX 100; B.const int MAX = 100; C.const MAX = 100; D.int MAX = const 100; 2.若从键盘输入5,运行下列程序段后输出的是(  ) int n; scanf("%d", &n); n = n + 3; printf("%d ", n); A.8 B.5 C.3 D.2 3.表达式x < y && y % 2 == 1的值是(  ) int x = 4, y = 7; printf("%d ", x < y && y % 2 == 1); A.0 B.1 C.4 D.7 4.变量x为6时,下列if语句的输出是(  ) int x = 6; if (x % 2 == 0) printf("E"); else printf("O"); A.O B.EO C.E D.无输出 5.变量n为2时,switch语句执行后的输出是(  ) int n = 2; switch (n) { case 1: printf("A"); break; case 2: printf("B"); break; default: printf("C"); } A.A B.C C.B D.BC 6.while循环结束后,变量s的值是(  ) int i = 1, s = 0; while (i <= 3) { s += i; i++; } A.6 B.3 C.5 D.7 7.do-while循环结束后,变量i的值是(  ) int i = 0; do { i += 2; } while (i < 5); A.6 B.4 C.5 D.8 8.for循环完成累加后,变量s的值是(  ) int i, s = 0; for (i = 1; i <= 4; i++) s += i; A.4 B.6 C.10 D.11 9.嵌套循环全部执行后,变量c的值是(  ) int i, j, c = 0; for (i = 1; i <= 2; i++) for (j = 1; j <= 3; j++) c++; A.3 B.5 C.9 D.6 10.当break条件满足时,循环结束后变量s的值是(  ) int i, s = 0; for (i = 1; i <= 5; i++) { if (i == 4) break; s += i; } A.3 B.10 C.15 D.6 11.continue跳过偶数后,变量s的值是(  ) int i, s = 0; for (i = 1; i <= 5; i++) { if (i % 2 == 0) continue; s += i; } A.9 B.6 C.12 D.15 12.正确地定义并初始化含4个整型元素的一维数组是(  ) A.int a = [1, 2, 3, 4]; B.int a(4) = {1, 2, 3, 4}; C.int [4] a = {1, 2, 3, 4}; D.int a[4] = {1, 2, 3, 4}; 13.二维数组a按下标访问时,下列printf输出的是(  ) int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; printf("%d ", a[1][0] + a[0][2]); A.5 B.6 C.7 D.8 14.若随后要用printf("%s", name)输出字符串"Liu",正确的定义是(  ) A.char name = "Liu"; B.char name[3] = "Liu"; C.char name[6] = "Liu"; D.char name[6] = "Li"; 15.通过指针p赋值后,变量x的值是(  ) int x = 12; int *p = &x; *p = 20; A.12 B.20 C.10 D.0 16.已定义int a[2][3]; int (*p)[3] = a;,访问a[0][1]的表达式是(  ) A.p[1][0] B.p[0][1] C.*p[0] D.p[0] 17.函数add被调用并返回后,main函数输出的是(  ) int add(int a, int b) { return a + b; } int main(void) { printf("%d ", add(3, 5)); return 0; } A.5 B.6 C.15 D.8 18.正确地定义并初始化一个含学号和等级字符的结构体变量是(  ) A.struct Student { int id; char grade; } s = {101, "A"}; B.struct Student { int id; char grade; } s = {101, 'A'}; C.struct Student { int id; char grade; } = s {101, 'A'}; D.Student struct { int id; char grade; } s = {101, 'A'}; 19.数组实参传给sumArray后,函数调用结果是(  ) int sumArray(int a[], int n) { int i, s = 0; for (i = 0; i < n; i++) s += a[i]; return s; } int main(void) { int a[3] = {2, 4, 6}; printf("%d ", sumArray(a, 3)); return 0; } A.12 B.6 C.8 D.14 20.break与continue共同作用后,变量count的值是(  ) int i, count = 0; for (i = 1; i <= 6; i++) { if (i == 3) continue; if (i == 5) break; count++; } A.2 B.4 C.6 D.3 二、简答题(共2题,每题10分,共20分) 1.阅读下列程序,写出输出结果,并说明程序的功能。 #include <stdio.h> int main(void) { int a[5] = {3, 6, 1, 8, 4}; int i, sum = 0, count = 0; for (i = 0; i < 5; i++) { if (a[i] % 2 == 0) { sum += a[i]; count++; } } printf("%d %d ", count, sum); return 0; }   2.阅读下列程序,写出输出结果,并说明形参p在函数中的作用。 #include <stdio.h> struct Student { char name[10]; int score; }; void addBonus(struct Student *p) { if (p->score < 60) p->score += 10; } int main(void) { struct Student s = {"Li", 55}; addBonus(&s); printf("%s %d ", s.name, s.score); return 0; }   三、案例分析题(共1题,共10分) 1.下列程序的功能是输出数组中的最大值。请填写3处空缺,使程序能够正确编译运行,并写出程序输出结果。 #include <stdio.h> int maxValue(int a[], int n) { int i, max = a[0]; for (i = 1; /* (1) */; i++) { if (/* (2) */) max = a[i]; } return max; } int main(void) { int a[5] = {12, 7, 19, 5, 10}; printf("%d ", /* (3) */); return 0; } 四、综合应用题(共1题,共10分) 1.编写完整C程序:输入3名学生的姓名和3门课程成绩,计算并保存每名学生的平均分,依次输出姓名和平均分,最后输出平均分不低于60分的学生人数。要求:使用结构体数组保存学生信息;使用函数计算平均分;函数通过指向结构体的指针修改平均分成员;姓名按不含空格的字符串输入。     原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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