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

2026-08-13
| 2份
| 21页
| 125人阅读
| 1人下载

内容正文:

编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第76卷,为课程综合卷,按《C语言程序设计知识》课程综合范围和要求编写。具体内容为:基本数据类型与顺序程序设计、分支程序设计、循环程序设计、数组与指针、函数与结构体。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第76卷 课程综合卷——C语言程序设计知识 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.变量a和常量step参与运算后,程序输出的是(  ) int a = 5; const int step = 2; a += step; printf("%d ", a); A.5 B.7 C.2 D.10 2.按运算符优先级计算,下面程序输出的是(  ) int a = 2, b = 3; printf("%d ", a + b * 2); A.8 B.10 C.7 D.6 3.调用strlen统计字符串长度后,程序输出的是(  ) #include <string.h> printf("%d ", (int)strlen("C2026")); A.4 B.6 C.2026 D.5 4.短路求值完成后,程序输出的是(  ) int x = 0; int y = x && ++x; printf("%d %d ", y, x); A.0 1 B.1 0 C.0 0 D.1 1 5.变量n为14时,执行条件语句输出的是(  ) int n = 14; if (n % 7 == 0) printf("X"); else if (n % 2 == 0) printf("Y"); else printf("Z"); A.Y B.Z C.X D.N 6.m未命中任何case时,switch最终打印的字符是(  ) int m = 4; switch (m) { case 1: printf("A"); break; case 3: printf("C"); break; default: printf("Z"); } A.Z B.A C.C D.无输出 7.while循环完成3次乘法后,power的值是(  ) int i = 1, power = 1; while (i <= 3) { power *= 2; i++; } A.4 B.6 C.12 D.8 8.do-while程序将整数123倒序后,变量reverse的值是(  ) int n = 123, reverse = 0; do { reverse = reverse * 10 + n % 10; n /= 10; } while (n > 0); A.123 B.321 C.231 D.312 9.for循环累加所有不大于5的奇数后,sum的值是(  ) int i, sum = 0; for (i = 1; i <= 5; i++) if (i % 2 != 0) sum += i; A.6 B.10 C.15 D.9 10.下列嵌套循环的循环体总共执行多少次(  ) int i, j, count = 0; for (i = 1; i <= 3; i++) for (j = 1; j <= i; j++) count++; A.6 B.3 C.4 D.9 11.该循环记录的有效迭代次数是(  ) int i, count = 0; for (i = 1; i <= 7; i++) { if (i == 2) continue; if (i == 6) break; count++; } A.3 B.5 C.4 D.6 12.数组初始化后,printf输出的两个值是(  ) int a[5] = {2, 4}; printf("%d %d ", a[1], a[4]); A.2 4 B.4 2 C.0 4 D.4 0 13.计算一维数组元素个数后,程序输出的是(  ) int a[] = {3, 1, 4, 1}; printf("%d ", (int)(sizeof(a) / sizeof(a[0]))); A.3 B.4 C.5 D.16 14.取出二维数组第二行的两端元素相加,程序输出的是(  ) int a[2][3] = {{1, 3, 5}, {2, 4, 6}}; printf("%d ", a[1][0] + a[1][2]); A.8 B.6 C.7 D.10 15.字符数组按字符和结束标志初始化后,程序输出的是(  ) char s[6] = {'r', 'o', 'b', 'o', 't', '\0'}; printf("%c ", s[3]); A.r B.b C.o D.t 16.通过指针修改x后,printf输出的是(  ) int x = 9; int *p = &x; *p -= 4; printf("%d ", x); A.4 B.9 C.13 D.5 17.把二维数组第二行首元素改为10后,a[1][0]的值是(  ) int a[2][2] = {{1, 2}, {3, 4}}; int (*p)[2] = a; p[1][0] = 10; printf("%d ", a[1][0]); A.10 B.11 C.13 D.18 18.调用adjust(10)所得返回值是(  ) int adjust(int n) { return n / 2 + 3; } printf("%d ", adjust(10)); A.5 B.8 C.7 D.10 19.结构体变量初始化后,表达式b.pages / 10的值是(  ) struct Book { int pages; char type; }; struct Book b = {120, 'P'}; printf("%d ", b.pages / 10); A.10 B.11 C.12 D.120 20.函数通过结构体指针更新成员后,程序输出的是(  ) struct Point { int x, y; }; void move(struct Point *p) { p->x += 2; p->y -= 1; } struct Point q = {4, 7}; move(&q); printf("%d %d ", q.x, q.y); A.4 7 B.6 6 C.6 7 D.4 6 二、简答题(共2题,每题10分,共20分) 1.阅读下列程序,写出输出结果,并说明数组形参和返回值在函数中的作用。 #include <stdio.h> int transformedSum(int a[], int n) { int i, total = 0; for (i = 0; i < n; i++) { if (a[i] > 5) total += a[i] - 5; } return total; } int main(void) { int data[5] = {3, 8, 6, 10, 4}; printf("%d ", transformedSum(data, 5)); return 0; } 2.阅读下列程序,写出输出结果,并说明结构体指针形参如何保存计算结果。 #include <stdio.h> struct Range { int max; int min; }; void findRange(int a[], int n, struct Range *r) { int i; r->max = a[0]; r->min = a[0]; for (i = 1; i < n; i++) { if (a[i] > r->max) r->max = a[i]; if (a[i] < r->min) r->min = a[i]; } } int main(void) { int data[5] = {6, 2, 9, 4, 7}; struct Range result; findRange(data, 5, &result); printf("%d %d ", result.max, result.min); return 0; } 三、案例分析题(共1题,共10分) 1.下列程序用于统计成绩数组中高于给定分数的成绩个数。请填写3处空缺,使程序能够正确编译运行,并写出程序输出结果。 #include <stdio.h> int countAbove(int a[], int n, int limit) { int i, count = 0; for (i = 0; /* (1) */; i++) { if (a[i] > limit) count++; } return count; } int main(void) { int score[6] = {56, 72, 68, 91, 45, 80}; printf("%d ", countAbove(score, /* (2) */, /* (3) */)); return 0; } 四、综合应用题(共1题,共10分) 1.编写完整C程序:输入3名员工的编号和4天工作时长,计算每名员工的总时长与日均时长,输出日均时长最高的员工编号及其日均时长,并统计日均时长达到8小时的员工人数。要求:使用结构体数组保存员工信息;使用函数计算总时长和日均时长;函数通过结构体指针修改计算结果;使用循环完成输入、比较和统计。     原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第76卷,为课程综合卷,按《C语言程序设计知识》课程综合范围和要求编写。具体内容为:基本数据类型与顺序程序设计、分支程序设计、循环程序设计、数组与指针、函数与结构体。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第76卷 课程综合卷——C语言程序设计知识 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.变量a和常量step参与运算后,程序输出的是(  ) int a = 5; const int step = 2; a += step; printf("%d ", a); A.5 B.7 C.2 D.10 【答案】B 【解析】a初值为5,const声明的step值为2;复合赋值a += step等价于a = a + step,因此输出7。 2.按运算符优先级计算,下面程序输出的是(  ) int a = 2, b = 3; printf("%d ", a + b * 2); A.8 B.10 C.7 D.6 【答案】A 【解析】乘法优先于加法,a+b*2先计算3*2,再与2相加,结果为8。 3.调用strlen统计字符串长度后,程序输出的是(  ) #include <string.h> printf("%d ", (int)strlen("C2026")); A.4 B.6 C.2026 D.5 【答案】D 【解析】字符串C2026由5个非结束字符组成,strlen返回不包括'\0'在内的字符数,因此结果为5。 4.短路求值完成后,程序输出的是(  ) int x = 0; int y = x && ++x; printf("%d %d ", y, x); A.0 1 B.1 0 C.0 0 D.1 1 【答案】C 【解析】x为0时逻辑与左侧已经为假,右侧++x不再执行;y和x均保持为0。 5.变量n为14时,执行条件语句输出的是(  ) int n = 14; if (n % 7 == 0) printf("X"); else if (n % 2 == 0) printf("Y"); else printf("Z"); A.Y B.Z C.X D.N 【答案】C 【解析】14除以7的余数为0,第一个if条件成立,直接输出X,不再判断后面的分支。 6.m未命中任何case时,switch最终打印的字符是(  ) int m = 4; switch (m) { case 1: printf("A"); break; case 3: printf("C"); break; default: printf("Z"); } A.Z B.A C.C D.无输出 【答案】A 【解析】m不匹配case 1和case 3,执行default分支输出Z。 7.while循环完成3次乘法后,power的值是(  ) int i = 1, power = 1; while (i <= 3) { power *= 2; i++; } A.4 B.6 C.12 D.8 【答案】D 【解析】power初值为1,循环体执行3次,每次乘以2,因此最终为1×2×2×2=8。 8.do-while程序将整数123倒序后,变量reverse的值是(  ) int n = 123, reverse = 0; do { reverse = reverse * 10 + n % 10; n /= 10; } while (n > 0); A.123 B.321 C.231 D.312 【答案】B 【解析】每次取n的个位放到reverse末位,再将n整除10;依次取出3、2、1,结果为321。 9.for循环累加所有不大于5的奇数后,sum的值是(  ) int i, sum = 0; for (i = 1; i <= 5; i++) if (i % 2 != 0) sum += i; A.6 B.10 C.15 D.9 【答案】D 【解析】满足条件的数为1、3、5,sum=1+3+5=9。 10.下列嵌套循环的循环体总共执行多少次(  ) int i, j, count = 0; for (i = 1; i <= 3; i++) for (j = 1; j <= i; j++) count++; A.6 B.3 C.4 D.9 【答案】A 【解析】外层i为1、2、3时,内层分别执行1、2、3次,总次数为1+2+3=6。 11.该循环记录的有效迭代次数是(  ) int i, count = 0; for (i = 1; i <= 7; i++) { if (i == 2) continue; if (i == 6) break; count++; } A.3 B.5 C.4 D.6 【答案】C 【解析】i为2时continue跳过本次计数,i为6时break结束循环;计数发生在i为1、3、4、5时,共4次。 12.数组初始化后,printf输出的两个值是(  ) int a[5] = {2, 4}; printf("%d %d ", a[1], a[4]); A.2 4 B.4 2 C.0 4 D.4 0 【答案】D 【解析】a[1]由初始化列表赋值为4;a[4]没有显式初值,数组剩余元素自动初始化为0。 13.计算一维数组元素个数后,程序输出的是(  ) int a[] = {3, 1, 4, 1}; printf("%d ", (int)(sizeof(a) / sizeof(a[0]))); A.3 B.4 C.5 D.16 【答案】B 【解析】数组a有4个int元素,sizeof(a)/sizeof(a[0])得到数组总元素个数4。 14.取出二维数组第二行的两端元素相加,程序输出的是(  ) int a[2][3] = {{1, 3, 5}, {2, 4, 6}}; printf("%d ", a[1][0] + a[1][2]); A.8 B.6 C.7 D.10 【答案】A 【解析】第二行下标为1,两端元素是a[1][0]=2和a[1][2]=6,二者相加为8。 15.字符数组按字符和结束标志初始化后,程序输出的是(  ) char s[6] = {'r', 'o', 'b', 'o', 't', '\0'}; printf("%c ", s[3]); A.r B.b C.o D.t 【答案】C 【解析】s[3]是字符数组中的第4个元素,按下标从0开始计算,其值为字符o;最后的'\0'是字符串结束标志。 16.通过指针修改x后,printf输出的是(  ) int x = 9; int *p = &x; *p -= 4; printf("%d ", x); A.4 B.9 C.13 D.5 【答案】D 【解析】p保存x的地址,*p访问x本身;*p -= 4使x由9变为5。 17.把二维数组第二行首元素改为10后,a[1][0]的值是(  ) int a[2][2] = {{1, 2}, {3, 4}}; int (*p)[2] = a; p[1][0] = 10; printf("%d ", a[1][0]); A.10 B.11 C.13 D.18 【答案】A 【解析】p指向每行含2个int元素的数组,p[1][0]就是a[1][0];赋值后该元素为10。 18.调用adjust(10)所得返回值是(  ) int adjust(int n) { return n / 2 + 3; } printf("%d ", adjust(10)); A.5 B.8 C.7 D.10 【答案】B 【解析】adjust先把10整除2得到5,再加3,返回值为8。 19.结构体变量初始化后,表达式b.pages / 10的值是(  ) struct Book { int pages; char type; }; struct Book b = {120, 'P'}; printf("%d ", b.pages / 10); A.10 B.11 C.12 D.120 【答案】C 【解析】结构体初始化按成员顺序将pages设为120,整型除法120/10的结果为12。 20.函数通过结构体指针更新成员后,程序输出的是(  ) struct Point { int x, y; }; void move(struct Point *p) { p->x += 2; p->y -= 1; } struct Point q = {4, 7}; move(&q); printf("%d %d ", q.x, q.y); A.4 7 B.6 6 C.6 7 D.4 6 【答案】B 【解析】move接收结构体变量q的地址,通过p->x和p->y分别加2、减1,因此q变为(6,6)。 二、简答题(共2题,每题10分,共20分) 1.阅读下列程序,写出输出结果,并说明数组形参和返回值在函数中的作用。 #include <stdio.h> int transformedSum(int a[], int n) { int i, total = 0; for (i = 0; i < n; i++) { if (a[i] > 5) total += a[i] - 5; } return total; } int main(void) { int data[5] = {3, 8, 6, 10, 4}; printf("%d ", transformedSum(data, 5)); return 0; } 【答案】输出结果为:9。形参a接收数组首元素地址,n表示有效元素个数;函数把大于5的元素分别减5后累加,8、6、10贡献3、1、5,返回总和9。 【解析】data作为数组实参传给a,函数通过return把计算结果交给main,main再按%d输出。 2.阅读下列程序,写出输出结果,并说明结构体指针形参如何保存计算结果。 #include <stdio.h> struct Range { int max; int min; }; void findRange(int a[], int n, struct Range *r) { int i; r->max = a[0]; r->min = a[0]; for (i = 1; i < n; i++) { if (a[i] > r->max) r->max = a[i]; if (a[i] < r->min) r->min = a[i]; } } int main(void) { int data[5] = {6, 2, 9, 4, 7}; struct Range result; findRange(data, 5, &result); printf("%d %d ", result.max, result.min); return 0; } 【答案】输出结果为:9 2。函数先用数组首元素初始化max和min,再遍历其余元素;r指向调用者的result,r->max和r->min的修改会保留到函数返回后。 【解析】结构体指针形参允许函数一次修改结构体的多个成员,数组形参和n共同确定比较范围。 三、案例分析题(共1题,共10分) 1.下列程序用于统计成绩数组中高于给定分数的成绩个数。请填写3处空缺,使程序能够正确编译运行,并写出程序输出结果。 #include <stdio.h> int countAbove(int a[], int n, int limit) { int i, count = 0; for (i = 0; /* (1) */; i++) { if (a[i] > limit) count++; } return count; } int main(void) { int score[6] = {56, 72, 68, 91, 45, 80}; printf("%d ", countAbove(score, /* (2) */, /* (3) */)); return 0; } 【答案】(1)i < n;(2)6;(3)70。程序输出结果为:3。 【解析】循环依次访问6个成绩,比较a[i]与70;72、91、80满足条件,函数返回3。 四、综合应用题(共1题,共10分) 1.编写完整C程序:输入3名员工的编号和4天工作时长,计算每名员工的总时长与日均时长,输出日均时长最高的员工编号及其日均时长,并统计日均时长达到8小时的员工人数。要求:使用结构体数组保存员工信息;使用函数计算总时长和日均时长;函数通过结构体指针修改计算结果;使用循环完成输入、比较和统计。 【答案】参考程序: #include <stdio.h> #define EMPLOYEE_COUNT 3 #define DAY_COUNT 4 struct Employee { int id; int hours[DAY_COUNT]; int total; float average; }; void calculateWork(struct Employee *p) { int i; p->total = 0; for (i = 0; i < DAY_COUNT; i++) p->total += p->hours[i]; p->average = (float)p->total / DAY_COUNT; } int main(void) { struct Employee employees[EMPLOYEE_COUNT]; int i, j, qualified = 0, best = 0; for (i = 0; i < EMPLOYEE_COUNT; i++) { scanf("%d", &employees[i].id); for (j = 0; j < DAY_COUNT; j++) scanf("%d", &employees[i].hours[j]); calculateWork(&employees[i]); if (employees[i].average >= 8.0f) qualified++; if (i == 0 || employees[i].average > employees[best].average) best = i; } printf("%d %.2f ", employees[best].id, employees[best].average); printf("%d ", qualified); return 0; } 【解析】程序使用结构体数组保存员工编号、4天时长、总时长和平均时长。calculateWork通过结构体指针清零并累加hours数组,再计算平均值;main使用嵌套for循环完成输入,利用if统计达标人数并更新最高平均值下标,最后输出最高员工信息和达标人数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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