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

2026-08-12
| 2份
| 16页
| 43人阅读
| 0人下载

内容正文:

编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第55卷,为专题训练卷,按“数组与指针”专题范围和要求编写。具体内容为:(1)理解一维数组的定义及初始化。(2)掌握一维数组元素的引用;(3)理解二维数组的定义及初始化。(4)掌握二维数组元素的引用;(5)掌握字符数组的定义及引用;(1)理解指针变量的定义及引用。(2)掌握指向数组的指针变量。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第55卷 专题训练——数组与指针 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.遍历int a[6]的全部元素时,循环变量i的初始值应为(  ) A.0 B.1 C.5 D.6 2.遍历长度为n的一维数组时,避免访问越界的常用条件是(  ) A.i <= n B.i < n C.i > n D.i == n 3.执行下列程序后,a[3]的值是(  ) int a[5] = {3, 1, 4, 2, 5}; int i; for (i = 1; i < 5; i++) a[i] = a[i] + a[i - 1]; A.8 B.10 C.9 D.12 4.执行下列程序后,changes的值是(  ) int a[5] = {2, 5, 3, 6, 4}; int changes = 0, i; for (i = 1; i < 5; i++) if (a[i] > a[i - 1]) changes++; A.1 B.3 C.2 D.4 5.执行下列程序后,pos的值是(  ) int a[6] = {5, 8, 3, 8, 1, 6}; int pos = -1, i; for (i = 0; i < 6; i++) { if (a[i] == 8) { pos = i; break; } } A.2 B.1 C.3 D.4 6.执行下列程序后,a[0]的值是(  ) int a[3] = {6, 4, 2}; int t = a[0]; a[0] = a[2]; a[2] = t; A.4 B.6 C.2 D.8 7.数组a中第i个元素的下一个元素应表示为(  ) A.a[i] B.a[i - 1] C.a[i + 2] D.a[i + 1] 8.执行下列程序后,a[2]的值是(  ) int a[4] = {1, 2, 3, 4}; a[2] = a[0] + a[1]; A.1 B.4 C.2 D.3 9.执行下列程序后,result的值是(  ) int a[5] = {5, 1, 4, 2, 3}; int result = a[0]; int i; for (i = 1; i < 5; i++) if (a[i] > result) result = a[i]; A.1 B.3 C.4 D.5 10.判断数组中是否存在目标值target时,找到目标后可将found设置为(  ) A.-1 B.0 C.1 D.数组长度 11.执行下列程序后,evenSum的值是(  ) int a[5] = {1, 4, 6, 3, 8}; int evenSum = 0, i; for (i = 0; i < 5; i++) if (a[i] % 2 == 0) evenSum += a[i]; A.10 B.12 C.18 D.21 12.将数组元素逆序访问时,最后一次访问的下标是(  ) int a[5]; for (i = 4; i >= 0; i--) A.0 B.1 C.4 D.5 13.执行下列程序后,a[0]的值是(  ) int a[4] = {3, 1, 4, 2}; int i; for (i = 0; i < 3; i++) if (a[i] > a[i + 1]) { int t = a[i]; a[i] = a[i + 1]; a[i + 1] = t; } A.2 B.1 C.3 D.4 14.计算10个成绩总和时,sum变量应具备的特征是(  ) A.只能保存单个字符 B.不能进行加法 C.只保存数组下标 D.能保存累加结果 15.某程序统计相邻数组元素差值大于4的次数,运行后gap的值是(  ) int a[5] = {2, 5, 9, 14, 20}; int gap = 0, i; for (i = 1; i < 5; i++) if (a[i] - a[i - 1] > 4) gap++; A.1 B.3 C.4 D.2 16.查找数组中第一个等于target的元素时,找到后使用break的作用是(  ) A.结束整个循环 B.清空数组内容 C.修改数组长度 D.重新初始化数组 17.执行下列程序后,a[0]的值是(  ) int a[4] = {1, 2, 3, 4}; int t = a[3], i; for (i = 3; i > 0; i--) a[i] = a[i - 1]; a[0] = t; A.2 B.3 C.4 D.1 18.数组元素整体左移一位时,原a[0]通常应(  ) A.自动变成数组长度 B.被保存或直接丢弃 C.复制到所有元素 D.只能放入a[0] 19.循环计算数组元素平均值时,平均值通常应使用(  ) A.最大下标 / 最小下标 B.首元素 - 尾元素 C.元素个数 * 首元素 D.sum / 元素个数 20.设计数组遍历前,最应先明确的是(  ) A.元素含义、长度和范围 B.输出颜色和桌面主题 C.键盘型号和显示器尺寸 D.文件图标和窗口主题 二、简答题(共2题,每题10分,共20分) 1.阅读程序,写出输出结果,并说明max和maxIndex的值。 #include <stdio.h> int main() { int a[5] = {4, 9, 2, 7, 6}; int max = a[0], maxIndex = 0, i; for (i = 1; i < 5; i++) { if (a[i] > max) { max = a[i]; maxIndex = i; } } printf("%d %d ", max, maxIndex); return 0; } 2.阅读程序,写出输出结果,并说明count的值。 #include <stdio.h> int main() { int a[6] = {2, 5, 8, 1, 6, 3}; int count = 0, i; for (i = 0; i < 6; i++) { if (a[i] % 2 == 0) count++; } printf("%d ", count); return 0; } 三、案例分析题(共1题,共10分) 1.某程序要求查找数组中最大的成绩并输出其下标,但原程序把maxIndex初始化为1,且遍历从下标2开始。请指出问题并修改。 #include <stdio.h> int main() { int a[5] = {88, 92, 76, 95, 90}; int max = a[1], maxIndex = 1, i; for (i = 2; i < 5; i++) if (a[i] > max) { max = a[i]; maxIndex = i; } printf("%d %d ", max, maxIndex); return 0; } 四、综合应用题(共1题,共10分) 1.编写程序:输入10个整数存入数组,分别统计其中正数、负数和0的个数,并计算所有正数的和。 #include <stdio.h> int main() { int a[10]; int positive = 0, negative = 0, zero = 0, positiveSum = 0; int i; for (i = 0; i < 10; i++) { scanf("%d", &a[i]); if (a[i] > 0) { positive++; positiveSum += a[i]; } else if (a[i] < 0) negative++; else zero++; } printf("%d %d %d %d ", positive, negative, zero, positiveSum); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第55卷,为专题训练卷,按“数组与指针”专题范围和要求编写。具体内容为:(1)理解一维数组的定义及初始化。(2)掌握一维数组元素的引用;(3)理解二维数组的定义及初始化。(4)掌握二维数组元素的引用;(5)掌握字符数组的定义及引用;(1)理解指针变量的定义及引用。(2)掌握指向数组的指针变量。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第55卷 专题训练——数组与指针 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.遍历int a[6]的全部元素时,循环变量i的初始值应为(  ) A.0 B.1 C.5 D.6 【答案】A 【解析】一维数组下标从0开始,长度为6的数组第一个元素下标为0。 2.遍历长度为n的一维数组时,避免访问越界的常用条件是(  ) A.i <= n B.i < n C.i > n D.i == n 【答案】B 【解析】长度为n的数组有效下标为0到n-1,使用i<n可以访问全部元素且不访问n。 3.执行下列程序后,a[3]的值是(  ) int a[5] = {3, 1, 4, 2, 5}; int i; for (i = 1; i < 5; i++) a[i] = a[i] + a[i - 1]; A.8 B.10 C.9 D.12 【答案】B 【解析】循环依次更新元素:a[1]=1+3=4,a[2]=4+4=8,a[3]=2+8=10,因此a[3]为10。 4.执行下列程序后,changes的值是(  ) int a[5] = {2, 5, 3, 6, 4}; int changes = 0, i; for (i = 1; i < 5; i++) if (a[i] > a[i - 1]) changes++; A.1 B.3 C.2 D.4 【答案】C 【解析】满足a[i]>a[i-1]的情况有5>2和6>3,共2次,因此changes为2。 5.执行下列程序后,pos的值是(  ) int a[6] = {5, 8, 3, 8, 1, 6}; int pos = -1, i; for (i = 0; i < 6; i++) { if (a[i] == 8) { pos = i; break; } } A.2 B.1 C.3 D.4 【答案】B 【解析】程序从下标0开始查找,第一次遇到8的位置是下标1,赋值后break结束循环,因此pos为1。 6.执行下列程序后,a[0]的值是(  ) int a[3] = {6, 4, 2}; int t = a[0]; a[0] = a[2]; a[2] = t; A.4 B.6 C.2 D.8 【答案】C 【解析】通过临时变量交换a[0]和a[2],交换后a[0]由6变为2。 7.数组a中第i个元素的下一个元素应表示为(  ) A.a[i] B.a[i - 1] C.a[i + 2] D.a[i + 1] 【答案】D 【解析】数组下标按整数递增时,第i个下标后面的相邻下标是i+1,因此下一个元素为a[i+1]。 8.执行下列程序后,a[2]的值是(  ) int a[4] = {1, 2, 3, 4}; a[2] = a[0] + a[1]; A.1 B.4 C.2 D.3 【答案】D 【解析】a[0]+a[1]等于3,赋值后a[2]为3。 9.执行下列程序后,result的值是(  ) int a[5] = {5, 1, 4, 2, 3}; int result = a[0]; int i; for (i = 1; i < 5; i++) if (a[i] > result) result = a[i]; A.1 B.3 C.4 D.5 【答案】D 【解析】result从5开始,后续元素均不大于5,所以最大值result仍为5。 10.判断数组中是否存在目标值target时,找到目标后可将found设置为(  ) A.-1 B.0 C.1 D.数组长度 【答案】C 【解析】found通常用0表示未找到、1表示找到;找到目标后设置为1。 11.执行下列程序后,evenSum的值是(  ) int a[5] = {1, 4, 6, 3, 8}; int evenSum = 0, i; for (i = 0; i < 5; i++) if (a[i] % 2 == 0) evenSum += a[i]; A.10 B.12 C.18 D.21 【答案】C 【解析】偶数元素为4、6、8,evenSum=4+6+8=18。 12.将数组元素逆序访问时,最后一次访问的下标是(  ) int a[5]; for (i = 4; i >= 0; i--) A.0 B.1 C.4 D.5 【答案】A 【解析】逆序下标依次为4、3、2、1、0,最后一次访问下标0。 13.执行下列程序后,a[0]的值是(  ) int a[4] = {3, 1, 4, 2}; int i; for (i = 0; i < 3; i++) if (a[i] > a[i + 1]) { int t = a[i]; a[i] = a[i + 1]; a[i + 1] = t; } A.2 B.1 C.3 D.4 【答案】B 【解析】第一次比较3和1并交换,a[0]变为1;后续交换不再改变a[0]。 14.计算10个成绩总和时,sum变量应具备的特征是(  ) A.只能保存单个字符 B.不能进行加法 C.只保存数组下标 D.能保存累加结果 【答案】D 【解析】sum需要持续保存多个成绩的累加结果,应选择能够进行数值累加且范围足够的数值类型。 15.某程序统计相邻数组元素差值大于4的次数,运行后gap的值是(  ) int a[5] = {2, 5, 9, 14, 20}; int gap = 0, i; for (i = 1; i < 5; i++) if (a[i] - a[i - 1] > 4) gap++; A.1 B.3 C.4 D.2 【答案】D 【解析】相邻元素差值依次为3、4、5、6,其中大于4的有5和6,共2个,因此gap为2。 16.查找数组中第一个等于target的元素时,找到后使用break的作用是(  ) A.结束整个循环 B.清空数组内容 C.修改数组长度 D.重新初始化数组 【答案】A 【解析】break用于立即结束当前循环,找到第一个目标后可避免继续查找。 17.执行下列程序后,a[0]的值是(  ) int a[4] = {1, 2, 3, 4}; int t = a[3], i; for (i = 3; i > 0; i--) a[i] = a[i - 1]; a[0] = t; A.2 B.3 C.4 D.1 【答案】C 【解析】先保存末元素4,再将a[2]、a[1]、a[0]依次右移,最后把4放入a[0],因此a[0]为4。 18.数组元素整体左移一位时,原a[0]通常应(  ) A.自动变成数组长度 B.被保存或直接丢弃 C.复制到所有元素 D.只能放入a[0] 【答案】B 【解析】左移会使原a[0]离开数组有效位置,若任务需要保留它,应先保存,否则会被覆盖或丢弃。 19.循环计算数组元素平均值时,平均值通常应使用(  ) A.最大下标 / 最小下标 B.首元素 - 尾元素 C.元素个数 * 首元素 D.sum / 元素个数 【答案】D 【解析】平均值等于全部元素之和除以元素个数,即sum/count。 20.设计数组遍历前,最应先明确的是(  ) A.元素含义、长度和范围 B.输出颜色和桌面主题 C.键盘型号和显示器尺寸 D.文件图标和窗口主题 【答案】A 【解析】明确元素含义、数组长度和有效下标范围,有助于正确设计遍历和边界控制。 二、简答题(共2题,每题10分,共20分) 1.阅读程序,写出输出结果,并说明max和maxIndex的值。 #include <stdio.h> int main() { int a[5] = {4, 9, 2, 7, 6}; int max = a[0], maxIndex = 0, i; for (i = 1; i < 5; i++) { if (a[i] > max) { max = a[i]; maxIndex = i; } } printf("%d %d ", max, maxIndex); return 0; } 【答案】输出:9 1。max为9,maxIndex为1。 【解析】max从a[0]的4开始,遍历到a[1]时更新为9并记录下标1,后续元素均不超过9。 2.阅读程序,写出输出结果,并说明count的值。 #include <stdio.h> int main() { int a[6] = {2, 5, 8, 1, 6, 3}; int count = 0, i; for (i = 0; i < 6; i++) { if (a[i] % 2 == 0) count++; } printf("%d ", count); return 0; } 【答案】输出:3。count为3。 【解析】数组中的偶数是2、8、6,共3个,遍历每个元素时满足a[i]%2==0就使count加1。 三、案例分析题(共1题,共10分) 1.某程序要求查找数组中最大的成绩并输出其下标,但原程序把maxIndex初始化为1,且遍历从下标2开始。请指出问题并修改。 #include <stdio.h> int main() { int a[5] = {88, 92, 76, 95, 90}; int max = a[1], maxIndex = 1, i; for (i = 2; i < 5; i++) if (a[i] > max) { max = a[i]; maxIndex = i; } printf("%d %d ", max, maxIndex); return 0; } 【答案】应以第0个元素初始化,并从第1个元素开始比较: int max = a[0], maxIndex = 0; for (i = 1; i < 5; i++) if (a[i] > max) { max = a[i]; maxIndex = i; } 【解析】原程序跳过了a[0],当a[0]才是最大值时会得到错误结果。数组下标从0开始,正确做法是使用a[0]和下标0初始化,再从i=1比较到i=4。 四、综合应用题(共1题,共10分) 1.编写程序:输入10个整数存入数组,分别统计其中正数、负数和0的个数,并计算所有正数的和。 #include <stdio.h> int main() { int a[10]; int positive = 0, negative = 0, zero = 0, positiveSum = 0; int i; for (i = 0; i < 10; i++) { scanf("%d", &a[i]); if (a[i] > 0) { positive++; positiveSum += a[i]; } else if (a[i] < 0) negative++; else zero++; } printf("%d %d %d %d ", positive, negative, zero, positiveSum); return 0; } 【答案】参考程序如上。评分点:正确声明数组和四个统计变量;使用0至9下标输入10个整数;分别判断正数、负数和0;正确更新三个计数及正数和;输出顺序正确。 【解析】数组长度为10,有效下标是0至9。每次输入一个元素后立即分类统计:大于0时增加positive并累加positiveSum,小于0时增加negative,等于0时增加zero。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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