内容正文:
编写说明: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个元素,可以同时得到极值及其首次出现位置。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$