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

2026-08-12
| 2份
| 14页
| 25人阅读
| 0人下载

内容正文:

编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第54卷,为专题训练卷,按“数组与指针”专题范围和要求编写。具体内容为:(1)理解一维数组的定义及初始化。(2)掌握一维数组元素的引用;(3)理解二维数组的定义及初始化。(4)掌握二维数组元素的引用;(5)掌握字符数组的定义及引用;(1)理解指针变量的定义及引用。(2)掌握指向数组的指针变量。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第54卷 专题训练——数组与指针 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.下列声明中,数组元素类型为double的是(  ) A.char a[6]; B.double a[6]; C.float a[6]; D.int a[6]; 2.定义int score[5];后,数组的最后一个有效下标是(  ) A.4 B.0 C.5 D.6 3.执行下列语句后,a[0]的值是(  ) int a[4] = {3, 6, 9, 12}; A.0 B.3 C.6 D.12 4.若int a[4] = {2, 5, 8, 11};,a[2]表示(  ) A.第1个元素 B.第2个元素 C.第3个元素 D.第4个元素 5.下列数组初始化语句中,省略长度的是(  ) A.int a[2] = {1, 2}; B.int a[3] = {4, 5}; C.int a[] = {6, 7}; D.int a[4] = {8}; 6.若int a[4] = {1, 3, 5, 7};,执行a[2] = 8;后a[2]的值是(  ) A.8 B.2 C.5 D.7 7.执行下列程序后,sum的值是(  ) int a[3] = {2, 4, 6}; int sum = a[0] + a[2]; A.6 B.10 C.12 D.8 8.执行下列程序后,max的值是(  ) int a[4] = {5, 2, 9, 4}; int max = a[0]; if (a[2] > max) max = a[2]; A.2 B.9 C.4 D.5 9.遍历数组a的全部5个元素时,循环变量i的有效范围是(  ) A.1到5 B.0到4 C.0到5 D.1到4 10.执行下列程序后,count的值是(  ) int a[4] = {1, 4, 6, 9}; int count = 0; if (a[1] % 2 == 0) count++; if (a[3] % 2 == 0) count++; A.1 B.0 C.2 D.4 11.若int a[6] = {10, 20, 30, 40, 50, 60};,访问最后一个元素应使用(  ) A.下标0 B.下标5 C.下标4 D.下标6 12.执行下列程序后,result的值是(  ) int a[4] = {7, 8, 9, 10}; int i = 1; int result = a[i - 1]; A.8 B.9 C.10 D.7 13.向一维数组第3个元素赋值时,应使用的下标是(  ) A.2 B.0 C.1 D.3 14.下列语句中,能够把变量x的值存入数组a第1个元素的是(  ) A.a[1] = x; B.a[x] = 0; C.a = x; D.a[0] = x; 15.执行下列程序后,a[1]的值是(  ) int a[3]; a[0] = 4; a[1] = a[0] + 3; A.0 B.3 C.7 D.4 16.使用循环给数组a的5个元素依次赋值时,正确的下标控制条件是(  ) A.i <= 5 B.i > 5 C.i < 5 D.i == 5 17.执行下列程序后,a[2]的值是(  ) int a[3] = {1, 2, 3}; a[1] = a[0] + a[2]; A.3 B.1 C.2 D.4 18.若数组a用于保存4名学生的成绩,访问第4名学生成绩应使用(  ) A.a[0] B.a[3] C.a[1] D.a[4] 19.下列做法中,最能避免一维数组下标越界的是(  ) A.把所有下标都写成数组长度 B.从下标1开始连续访问 C.访问后再判断下标是否有效 D.只使用小于数组长度的下标 20.执行下列语句后,a[3]的值是(  ) int a[4] = {1, 2, 3, 4}; a[3] = a[1]; A.1 B.2 C.3 D.4 二、简答题(共2题,每题10分,共20分) 1.阅读程序,写出输出结果,并说明数组a各元素的值。 #include <stdio.h> int main() { int a[4] = {2, 4}; a[2] = a[0] + a[1]; a[3] = a[2] - 1; printf("%d %d %d %d ", a[0], a[1], a[2], a[3]); return 0; } 2.阅读程序,写出输出结果,并说明变量index和value的值。 #include <stdio.h> int main() { int a[5] = {3, 6, 9, 12, 15}; int index = 2; int value = a[index]; printf("%d %d ", index, value); return 0; } 三、案例分析题(共1题,共10分) 1.某程序需要把输入的5个整数保存到数组中,再输出第1个和第5个数。原程序存在下标错误,请指出并修改。 #include <stdio.h> int main() { int a[5]; int i; for (i = 1; i <= 5; i++) scanf("%d", &a[i]); printf("%d %d ", a[1], a[5]); return 0; } 四、综合应用题(共1题,共10分) 1.编写程序:输入8个整数存入一维数组,输出其中的最大值、最小值以及最大值和最小值所在的数组下标。 #include <stdio.h> int main() { int a[8]; int i, maxIndex = 0, minIndex = 0; for (i = 0; i < 8; i++) scanf("%d", &a[i]); for (i = 1; i < 8; i++) { if (a[i] > a[maxIndex]) maxIndex = i; if (a[i] < a[minIndex]) minIndex = i; } printf("%d %d %d %d ", a[maxIndex], maxIndex, a[minIndex], minIndex); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第54卷,为专题训练卷,按“数组与指针”专题范围和要求编写。具体内容为:(1)理解一维数组的定义及初始化。(2)掌握一维数组元素的引用;(3)理解二维数组的定义及初始化。(4)掌握二维数组元素的引用;(5)掌握字符数组的定义及引用;(1)理解指针变量的定义及引用。(2)掌握指向数组的指针变量。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第54卷 专题训练——数组与指针 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.下列声明中,数组元素类型为double的是(  ) A.char a[6]; B.double a[6]; C.float a[6]; D.int a[6]; 【答案】B 【解析】声明中的类型名决定数组元素类型,double a[6]表示含有6个double元素的一维数组。 2.定义int score[5];后,数组的最后一个有效下标是(  ) A.4 B.0 C.5 D.6 【答案】A 【解析】数组下标从0开始,含有5个元素时有效下标为0至4,最后一个下标是4。 3.执行下列语句后,a[0]的值是(  ) int a[4] = {3, 6, 9, 12}; A.0 B.3 C.6 D.12 【答案】B 【解析】数组下标从0开始,a[0]对应初始化列表中的第一个元素3。 4.若int a[4] = {2, 5, 8, 11};,a[2]表示(  ) A.第1个元素 B.第2个元素 C.第3个元素 D.第4个元素 【答案】C 【解析】数组下标从0开始,a[2]表示数组的第3个元素,值为8。 5.下列数组初始化语句中,省略长度的是(  ) A.int a[2] = {1, 2}; B.int a[3] = {4, 5}; C.int a[] = {6, 7}; D.int a[4] = {8}; 【答案】C 【解析】只有int a[]={6,7}省略了方括号中的数组长度,长度由初始化列表中的元素个数确定。 6.若int a[4] = {1, 3, 5, 7};,执行a[2] = 8;后a[2]的值是(  ) A.8 B.2 C.5 D.7 【答案】A 【解析】a[2]表示数组第三个元素,赋值语句将其原来的5修改为8。 7.执行下列程序后,sum的值是(  ) int a[3] = {2, 4, 6}; int sum = a[0] + a[2]; A.6 B.10 C.12 D.8 【答案】D 【解析】a[0]为2,a[2]为6,sum=2+6=8。 8.执行下列程序后,max的值是(  ) int a[4] = {5, 2, 9, 4}; int max = a[0]; if (a[2] > max) max = a[2]; A.2 B.9 C.4 D.5 【答案】B 【解析】初始max为5,a[2]为9且大于5,赋值后max为9。 9.遍历数组a的全部5个元素时,循环变量i的有效范围是(  ) A.1到5 B.0到4 C.0到5 D.1到4 【答案】B 【解析】长度为5的一维数组下标从0开始到4结束,遍历全部元素应使用i=0到4。 10.执行下列程序后,count的值是(  ) int a[4] = {1, 4, 6, 9}; int count = 0; if (a[1] % 2 == 0) count++; if (a[3] % 2 == 0) count++; A.1 B.0 C.2 D.4 【答案】A 【解析】a[1]为4是偶数,a[3]为9不是偶数,因此count只增加1次。 11.若int a[6] = {10, 20, 30, 40, 50, 60};,访问最后一个元素应使用(  ) A.下标0 B.下标5 C.下标4 D.下标6 【答案】B 【解析】数组长度为6时有效下标为0至5,最后一个元素应使用下标5。 12.执行下列程序后,result的值是(  ) int a[4] = {7, 8, 9, 10}; int i = 1; int result = a[i - 1]; A.8 B.9 C.10 D.7 【答案】D 【解析】i-1等于0,a[0]是数组第一个元素7,因此result为7。 13.向一维数组第3个元素赋值时,应使用的下标是(  ) A.2 B.0 C.1 D.3 【答案】A 【解析】数组第1个元素下标为0,所以第3个元素下标为2。 14.下列语句中,能够把变量x的值存入数组a第1个元素的是(  ) A.a[1] = x; B.a[x] = 0; C.a = x; D.a[0] = x; 【答案】D 【解析】第1个元素的下标是0,a[0]=x可把x存入数组第1个元素。 15.执行下列程序后,a[1]的值是(  ) int a[3]; a[0] = 4; a[1] = a[0] + 3; A.0 B.3 C.7 D.4 【答案】C 【解析】a[0]为4,a[1]=a[0]+3=7。 16.使用循环给数组a的5个元素依次赋值时,正确的下标控制条件是(  ) A.i <= 5 B.i > 5 C.i < 5 D.i == 5 【答案】C 【解析】5个元素的有效下标为0至4,循环条件i<5可以覆盖全部有效下标且不越界。 17.执行下列程序后,a[2]的值是(  ) int a[3] = {1, 2, 3}; a[1] = a[0] + a[2]; A.3 B.1 C.2 D.4 【答案】A 【解析】语句只修改a[1],a[2]仍保持初始化时的值3。 18.若数组a用于保存4名学生的成绩,访问第4名学生成绩应使用(  ) A.a[0] B.a[3] C.a[1] D.a[4] 【答案】B 【解析】第4个数组元素的下标为3,a[3]表示第4名学生的成绩。 19.下列做法中,最能避免一维数组下标越界的是(  ) A.把所有下标都写成数组长度 B.从下标1开始连续访问 C.访问后再判断下标是否有效 D.只使用小于数组长度的下标 【答案】D 【解析】数组有效下标范围是0到长度减1,访问前保证下标小于数组长度可以避免越界。 20.执行下列语句后,a[3]的值是(  ) int a[4] = {1, 2, 3, 4}; a[3] = a[1]; A.1 B.2 C.3 D.4 【答案】B 【解析】a[1]的值为2,赋值语句把它复制给a[3],所以a[3]最终为2。 二、简答题(共2题,每题10分,共20分) 1.阅读程序,写出输出结果,并说明数组a各元素的值。 #include <stdio.h> int main() { int a[4] = {2, 4}; a[2] = a[0] + a[1]; a[3] = a[2] - 1; printf("%d %d %d %d ", a[0], a[1], a[2], a[3]); return 0; } 【答案】输出:2 4 6 5。a[0]=2,a[1]=4,a[2]=6,a[3]=5。 【解析】a[2]由a[0]+a[1]得到6,a[3]由a[2]-1得到5;前两个元素保留初始化值。 2.阅读程序,写出输出结果,并说明变量index和value的值。 #include <stdio.h> int main() { int a[5] = {3, 6, 9, 12, 15}; int index = 2; int value = a[index]; printf("%d %d ", index, value); return 0; } 【答案】输出:2 9。index为2,value为9。 【解析】index的值为2,a[index]就是a[2],对应数组第三个元素9。 三、案例分析题(共1题,共10分) 1.某程序需要把输入的5个整数保存到数组中,再输出第1个和第5个数。原程序存在下标错误,请指出并修改。 #include <stdio.h> int main() { int a[5]; int i; for (i = 1; i <= 5; i++) scanf("%d", &a[i]); printf("%d %d ", a[1], a[5]); return 0; } 【答案】循环及输出下标应改为从0到4: for (i = 0; i < 5; i++) scanf("%d", &a[i]); printf("%d %d ", a[0], a[4]); 【解析】数组a[5]的有效下标是0至4。原程序从1访问到5,会漏掉a[0]并访问越界的a[5];应使用i=0、i<5,并把第1个和第5个元素分别写为a[0]和a[4]。 四、综合应用题(共1题,共10分) 1.编写程序:输入8个整数存入一维数组,输出其中的最大值、最小值以及最大值和最小值所在的数组下标。 #include <stdio.h> int main() { int a[8]; int i, maxIndex = 0, minIndex = 0; for (i = 0; i < 8; i++) scanf("%d", &a[i]); for (i = 1; i < 8; i++) { if (a[i] > a[maxIndex]) maxIndex = i; if (a[i] < a[minIndex]) minIndex = i; } printf("%d %d %d %d ", a[maxIndex], maxIndex, a[minIndex], minIndex); return 0; } 【答案】参考程序如上。评分点:正确声明数组和下标变量;使用0至7下标输入8个整数;以第0个元素初始化最大、最小下标;循环比较并更新maxIndex、minIndex;按要求输出最大值、最大值下标、最小值和最小值下标。 【解析】数组长度为8,有效下标是0至7。先把第0个元素作为初始最大值和最小值,再从第1个元素比较到第7个元素,可以同时得到极值及其首次出现位置。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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