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

2026-08-13
| 2份
| 21页
| 53人阅读
| 0人下载

内容正文:

编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第75卷,为课程综合卷,按《C语言程序设计知识》课程综合范围和要求编写。具体内容为:基本数据类型与顺序程序设计、分支程序设计、循环程序设计、数组与指针、函数与结构体。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第75卷 课程综合卷——C语言程序设计知识 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.在标准C语言中,执行下列程序输出的是(  ) #include <stdio.h> char c = 'A'; printf("%d ", (int)sizeof(c)); A.0 B.2 C.1 D.4 2.从键盘输入8和3后,下面程序输出的结果是(  ) int a, b; scanf("%d%d", &a, &b); printf("%d %d ", a - b, a * b); A.11 24 B.5 11 C.24 5 D.5 24 3.调用下列程序段中的函数后,输出结果是(  ) #include <stdlib.h> int n = -7; printf("%d ", abs(n)); A.7 B.-7 C.49 D.0 4.若x为0、y为5,表达式的值是(  ) int x = 0, y = 5; printf("%d ", x == 0 || y > 3); A.0 B.1 C.5 D.-1 5.变量score为78时,执行下列条件语句输出的是(  ) int score = 78; if (score >= 90) printf("A"); else if (score >= 80) printf("B"); else if (score >= 60) printf("C"); else printf("D"); A.A B.C C.B D.D 6.变量level为2时,switch语句输出的是(  ) int level = 2; switch (level) { case 1: printf("A"); break; case 2: printf("B"); case 3: printf("C"); break; default: printf("D"); } A.B B.C C.ABC D.BC 7.变量n连续整除2,直至它不再为正数,程序结束时n为(  ) int n = 10; while (n > 0) n /= 2; A.0 B.1 C.2 D.3 8.累计1到3的处理过程采用do-while,sum最终为(  ) int k = 1, sum = 0; do { sum += k; k++; } while (k <= 3); A.3 B.5 C.6 D.7 9.for循环结束后,变量product的值是(  ) int i, product = 1; for (i = 1; i <= 4; i++) product *= i; A.24 B.6 C.12 D.120 10.下列嵌套循环执行后,变量hits的值是(  ) int i, j, hits = 0; for (i = 1; i <= 2; i++) { for (j = 1; j <= 3; j++) if ((i + j) % 2 == 0) hits++; } A.2 B.5 C.6 D.3 11.跳过首次迭代并在i为5时退出,total最终等于(  ) int i, total = 0; for (i = 1; i <= 6; i++) { if (i == 1) continue; if (i == 5) break; total += i; } A.6 B.9 C.12 D.15 12.下列数组初始化后,a[1]的值是(  ) int a[4] = {1}; A.1 B.2 C.0 D.3 13.程序输出的一维数组最大值是(  ) int a[5] = {7, 18, 4, 12, 15}; int i, max = a[0]; for (i = 1; i < 5; i++) if (a[i] > max) max = a[i]; printf("%d ", max); A.7 B.12 C.15 D.18 14.二维数组初始化后,表达式a[0][1] + a[1][2]的值是(  ) int a[2][3] = {{1, 2, 3}, {4, 5, 7}}; printf("%d ", a[0][1] + a[1][2]); A.9 B.6 C.7 D.8 15.若要把字符数组word作为字符串Code输出,正确的定义是(  ) A.char word = "Code"; B.char word[4] = "Code"; C.char word[5] = "Code"; D.char word[5] = "Cod"; 16.交换函数通过地址传递参数,调用结束时b的内容为(  ) void swap(int *x, int *y) { int t = *x; *x = *y; *y = t; } int a = 6, b = 2; swap(&a, &b); A.2 B.6 C.4 D.8 17.借助数组指针p计算两项差值,程序输出的是(  ) int a[2][2] = {{2, 4}, {6, 8}}; int (*p)[2] = a; printf("%d ", p[1][0] - p[0][1]); A.0 B.4 C.2 D.6 18.函数power返回后,main函数输出的是(  ) int power(int base, int n) { int i, result = 1; for (i = 0; i < n; i++) result *= base; return result; } printf("%d ", power(3, 3)); A.6 B.9 C.81 D.27 19.下列结构体变量初始化后,s.score的值是(  ) struct Student { char name[10]; int score; }; struct Student s = {"Wang", 86}; A.86 B.68 C.76 D.96 20.调用函数后,结构体变量s的level成员是(  ) struct Student { int score; char level; }; void setLevel(struct Student *p) { if (p->score >= 90) p->level = 'A'; } struct Student s = {95, 'C'}; setLevel(&s); A.'B' B.'A' C.'C' D.'D' 二、简答题(共2题,每题10分,共20分) 1.阅读下列程序,写出输出结果,并说明循环和数组元素访问的作用。 #include <stdio.h> int main(void) { int a[6] = {4, 9, 2, 7, 5, 8}; int i, evenSum = 0, oddCount = 0; for (i = 0; i < 6; i++) { if (a[i] % 2 == 0) evenSum += a[i]; else oddCount++; } printf("%d %d ", evenSum, oddCount); return 0; }   2.阅读下列程序,写出输出结果,并说明函数形参及返回值的作用。 #include <stdio.h> int countGreater(int a[], int n, int limit) { int i, count = 0; for (i = 0; i < n; i++) if (a[i] > limit) count++; return count; } int main(void) { int data[5] = {6, 12, 4, 15, 9}; printf("%d ", countGreater(data, 5, 8)); return 0; } 三、案例分析题(共1题,共10分) 1.下列程序用于统计成绩数组中的最高分、最低分和平均分。请填写3处空缺,使程序能够正确编译运行,并写出程序输出结果。 #include <stdio.h> void analyze(int a[], int n, int *max, int *min, double *avg) { int i, sum = 0; *max = a[0]; *min = a[0]; for (i = 0; /* (1) */; i++) { if (a[i] > *max) *max = a[i]; if (a[i] < *min) *min = a[i]; sum += a[i]; } *avg = (double)sum / n; } int main(void) { int score[5] = {76, 91, 68, 84, 88}; int max, min; double avg; analyze(score, /* (2) */, &max, &min, &avg); printf("%d %d %.1f ", max, min, /* (3) */); return 0; } 四、综合应用题(共1题,共10分) 1.编写完整C程序:输入4名选手的编号和3轮成绩,计算每名选手的总分与平均分,输出平均分最高的选手编号及其平均分,并统计平均分达到60分的选手人数。要求:使用结构体数组保存选手信息;使用函数计算总分;函数通过结构体指针修改总分和平均分成员;使用循环完成输入和统计。     原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第75卷,为课程综合卷,按《C语言程序设计知识》课程综合范围和要求编写。具体内容为:基本数据类型与顺序程序设计、分支程序设计、循环程序设计、数组与指针、函数与结构体。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第75卷 课程综合卷——C语言程序设计知识 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.在标准C语言中,执行下列程序输出的是(  ) #include <stdio.h> char c = 'A'; printf("%d ", (int)sizeof(c)); A.0 B.2 C.1 D.4 【答案】C 【解析】char类型对象占用1个字节,sizeof(c)的结果为1;强制转换为int后可按%d输出。 2.从键盘输入8和3后,下面程序输出的结果是(  ) int a, b; scanf("%d%d", &a, &b); printf("%d %d ", a - b, a * b); A.11 24 B.5 11 C.24 5 D.5 24 【答案】D 【解析】a-b等于5,a*b等于24;两个%d按printf参数顺序输出这两个表达式的结果。 3.调用下列程序段中的函数后,输出结果是(  ) #include <stdlib.h> int n = -7; printf("%d ", abs(n)); A.7 B.-7 C.49 D.0 【答案】A 【解析】abs函数返回整数的绝对值,abs(-7)的结果为7。 4.若x为0、y为5,表达式的值是(  ) int x = 0, y = 5; printf("%d ", x == 0 || y > 3); A.0 B.1 C.5 D.-1 【答案】B 【解析】x==0为真,y>3也为真,两个关系表达式由逻辑或连接,结果为真,C语言用1表示真。 5.变量score为78时,执行下列条件语句输出的是(  ) int score = 78; if (score >= 90) printf("A"); else if (score >= 80) printf("B"); else if (score >= 60) printf("C"); else printf("D"); A.A B.C C.B D.D 【答案】B 【解析】score小于80但不小于60,前两个条件不成立,第三个else if分支成立,所以输出C。 6.变量level为2时,switch语句输出的是(  ) int level = 2; switch (level) { case 1: printf("A"); break; case 2: printf("B"); case 3: printf("C"); break; default: printf("D"); } A.B B.C C.ABC D.BC 【答案】D 【解析】level匹配case 2,先输出B;该分支没有break,继续执行case 3输出C,随后break结束switch。 7.变量n连续整除2,直至它不再为正数,程序结束时n为(  ) int n = 10; while (n > 0) n /= 2; A.0 B.1 C.2 D.3 【答案】A 【解析】n从10开始每次整除以2,依次变为5、2、1、0;当n为0时条件n>0不成立,循环结束。 8.累计1到3的处理过程采用do-while,sum最终为(  ) int k = 1, sum = 0; do { sum += k; k++; } while (k <= 3); A.3 B.5 C.6 D.7 【答案】C 【解析】循环先执行一次,k依次为1、2、3并累加到sum;k变为4后条件k<=3不成立,sum为6。 9.for循环结束后,变量product的值是(  ) int i, product = 1; for (i = 1; i <= 4; i++) product *= i; A.24 B.6 C.12 D.120 【答案】A 【解析】循环将1、2、3、4依次乘入product,结果为1×2×3×4=24。 10.下列嵌套循环执行后,变量hits的值是(  ) int i, j, hits = 0; for (i = 1; i <= 2; i++) { for (j = 1; j <= 3; j++) if ((i + j) % 2 == 0) hits++; } A.2 B.5 C.6 D.3 【答案】D 【解析】外层i取1、2,内层j取1、2、3;满足i+j为偶数的组合是(1,1)、(1,3)、(2,2),因此hits为3。 11.跳过首次迭代并在i为5时退出,total最终等于(  ) int i, total = 0; for (i = 1; i <= 6; i++) { if (i == 1) continue; if (i == 5) break; total += i; } A.6 B.9 C.12 D.15 【答案】B 【解析】i为1时先continue不累加;i为2、3、4分别累加2、3、4,i为5时break,因此total为9。 12.下列数组初始化后,a[1]的值是(  ) int a[4] = {1}; A.1 B.2 C.0 D.3 【答案】C 【解析】初始化列表只给出a[0],其余未显式初始化的元素自动初始化为0,因此a[1]为0。 13.程序输出的一维数组最大值是(  ) int a[5] = {7, 18, 4, 12, 15}; int i, max = a[0]; for (i = 1; i < 5; i++) if (a[i] > max) max = a[i]; printf("%d ", max); A.7 B.12 C.15 D.18 【答案】D 【解析】循环比较数组的5个元素,最大元素为18,函数返回max并输出。 14.二维数组初始化后,表达式a[0][1] + a[1][2]的值是(  ) int a[2][3] = {{1, 2, 3}, {4, 5, 7}}; printf("%d ", a[0][1] + a[1][2]); A.9 B.6 C.7 D.8 【答案】A 【解析】a[0][1]为2,a[1][2]为7,二者相加得到9;二维数组的两个下标都从0开始。 15.若要把字符数组word作为字符串Code输出,正确的定义是(  ) A.char word = "Code"; B.char word[4] = "Code"; C.char word[5] = "Code"; D.char word[5] = "Cod"; 【答案】C 【解析】字符串需要以'\0'结尾;word[5]能够保存Code的4个字符和结束标志,适合用%s输出。word[4]没有位置保存结束标志,不能作为完整C字符串安全使用。 16.交换函数通过地址传递参数,调用结束时b的内容为(  ) void swap(int *x, int *y) { int t = *x; *x = *y; *y = t; } int a = 6, b = 2; swap(&a, &b); A.2 B.6 C.4 D.8 【答案】B 【解析】swap接收a和b的地址,通过指针间接访问并交换两个实参的值;调用后b得到原来a的值6。 17.借助数组指针p计算两项差值,程序输出的是(  ) int a[2][2] = {{2, 4}, {6, 8}}; int (*p)[2] = a; printf("%d ", p[1][0] - p[0][1]); A.0 B.4 C.2 D.6 【答案】C 【解析】p是指向含2个int元素数组的指针,p[1][0]为6,p[0][1]为4,二者相减得到2。 18.函数power返回后,main函数输出的是(  ) int power(int base, int n) { int i, result = 1; for (i = 0; i < n; i++) result *= base; return result; } printf("%d ", power(3, 3)); A.6 B.9 C.81 D.27 【答案】D 【解析】power从1开始循环3次,每次乘以3,返回3×3×3=27。 19.下列结构体变量初始化后,s.score的值是(  ) struct Student { char name[10]; int score; }; struct Student s = {"Wang", 86}; A.86 B.68 C.76 D.96 【答案】A 【解析】结构体初始化列表按成员声明顺序给name和score赋值,因此s.score为86。 20.调用函数后,结构体变量s的level成员是(  ) struct Student { int score; char level; }; void setLevel(struct Student *p) { if (p->score >= 90) p->level = 'A'; } struct Student s = {95, 'C'}; setLevel(&s); A.'B' B.'A' C.'C' D.'D' 【答案】B 【解析】函数形参p指向s,score为90时满足条件,函数通过p->level把成员设置为字符常量'A'。 二、简答题(共2题,每题10分,共20分) 1.阅读下列程序,写出输出结果,并说明循环和数组元素访问的作用。 #include <stdio.h> int main(void) { int a[6] = {4, 9, 2, 7, 5, 8}; int i, evenSum = 0, oddCount = 0; for (i = 0; i < 6; i++) { if (a[i] % 2 == 0) evenSum += a[i]; else oddCount++; } printf("%d %d ", evenSum, oddCount); return 0; } 【答案】输出结果为:14 3。程序使用for循环遍历一维数组,通过下标a[i]访问元素;偶数4、2、8的和为14,奇数元素9、7、5共有3个。 【解析】循环变量i从0变化到5,if根据元素除以2的余数分支处理,else对应奇数元素计数。 2.阅读下列程序,写出输出结果,并说明函数形参及返回值的作用。 #include <stdio.h> int countGreater(int a[], int n, int limit) { int i, count = 0; for (i = 0; i < n; i++) if (a[i] > limit) count++; return count; } int main(void) { int data[5] = {6, 12, 4, 15, 9}; printf("%d ", countGreater(data, 5, 8)); return 0; } 【答案】输出结果为:3。形参a接收数组首元素地址,n表示有效元素个数,limit是比较基准;函数返回数组中大于8的元素个数。 【解析】数组中12、15、9大于8,count最终为3;函数调用时data、5和8分别传给a、n和limit。 三、案例分析题(共1题,共10分) 1.下列程序用于统计成绩数组中的最高分、最低分和平均分。请填写3处空缺,使程序能够正确编译运行,并写出程序输出结果。 #include <stdio.h> void analyze(int a[], int n, int *max, int *min, double *avg) { int i, sum = 0; *max = a[0]; *min = a[0]; for (i = 0; /* (1) */; i++) { if (a[i] > *max) *max = a[i]; if (a[i] < *min) *min = a[i]; sum += a[i]; } *avg = (double)sum / n; } int main(void) { int score[5] = {76, 91, 68, 84, 88}; int max, min; double avg; analyze(score, /* (2) */, &max, &min, &avg); printf("%d %d %.1f ", max, min, /* (3) */); return 0; } 【答案】(1)i < n;(2)5;(3)avg。程序输出结果为:91 68 81.4。 【解析】循环遍历数组并通过三个指针形参修改最高分、最低分和平均分;数组总和为407,平均值为407/5=81.4。 四、综合应用题(共1题,共10分) 1.编写完整C程序:输入4名选手的编号和3轮成绩,计算每名选手的总分与平均分,输出平均分最高的选手编号及其平均分,并统计平均分达到60分的选手人数。要求:使用结构体数组保存选手信息;使用函数计算总分;函数通过结构体指针修改总分和平均分成员;使用循环完成输入和统计。 【答案】参考程序: #include <stdio.h> #define PLAYER_COUNT 4 #define ROUND_COUNT 3 struct Player { int id; int score[ROUND_COUNT]; int total; double average; }; void calculate(struct Player *p) { int i; p->total = 0; for (i = 0; i < ROUND_COUNT; i++) p->total += p->score[i]; p->average = (double)p->total / ROUND_COUNT; } int main(void) { struct Player players[PLAYER_COUNT]; int i, j, qualified = 0, best = 0; for (i = 0; i < PLAYER_COUNT; i++) { scanf("%d", &players[i].id); for (j = 0; j < ROUND_COUNT; j++) scanf("%d", &players[i].score[j]); calculate(&players[i]); if (players[i].average >= 60.0) qualified++; if (i == 0 || players[i].average > players[best].average) best = i; } printf("%d %.2f ", players[best].id, players[best].average); printf("%d ", qualified); return 0; } 【解析】程序用结构体数组保存编号、三轮成绩、总分和平均分。calculate通过结构体指针清零并累加成绩,再计算平均分;main使用嵌套循环完成输入,使用if统计达标人数并比较最高平均分,最后输出最高选手信息和达标人数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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