内容正文:
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第9卷,为知识训练卷,按《C语言程序设计知识》中“二维数组”范围和要求编写。具体内容为:(3)理解二维数组的定义及初始化。(4)掌握二维数组元素的引用。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第9卷 C语言程序设计知识——二维数组
(考试时间:45分钟 满分:100分)
一、选择题(共20题,每题3分,共60分)
1.下列语句中,正确的二维数组定义是( )
A.int a(2)(3);
B.int[2][3] a;
C.array int a[2,3];
D.int a[2][3];
2.若定义int a[2][3];,a数组共有多少个元素( )
A.6个
B.2个
C.5个
D.3个
3.若定义int a[2][3];,行下标和列下标的有效范围分别是( )
A.1~3和1~2
B.0~1和0~2
C.1~2和1~3
D.0~2和0~3
4.下列语句执行后,a[0][1]的值是( )
int a[2][2] = {{1, 2}, {3, 4}};
A.1
B.4
C.2
D.3
5.下列语句执行后,a[1][0]的值是( )
int a[2][2] = {{5, 6}, {7, 8}};
A.6
B.7
C.5
D.8
6.下列语句执行后,a[1][2]的值是( )
int a[2][3] = {1, 2, 3, 4};
A.3
B.1
C.0
D.4
7.执行下列程序后,输出结果是( )
int a[2][2] = {{1, 2}, {3, 4}};
printf("%d", a[1][1]);
A.3
B.2
C.1
D.4
8.若定义int a[3][4];,最后一个元素是( )
A.a[2][3]
B.a[3][4]
C.a[2][4]
D.a[3][3]
9.下列语句中,能把二维数组a第2行第3列元素修改为0的是( )
A.a[2,3] = 0;
B.a(1)(2) = 0;
C.a[1][2] = 0;
D.a[2][3] = 0;
10.执行下列程序后,sum的值是( )
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j, sum = 0;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
sum += a[i][j];
A.24
B.21
C.15
D.6
11.下列关于二维数组遍历的说法正确的是( )
A.列下标从1开始
B.行列下标不能使用循环变量
C.只需要一个下标
D.通常使用两层循环访问行和列
12.执行下列程序后,输出结果是( )
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++)
printf("%d", a[i][j]);
}
A.123456
B.123123
C.654321
D.012345
13.执行下列程序后,输出结果是( )
int a[2][2] = {{1, 2}, {3, 4}};
int i, j;
for (i = 1; i >= 0; i--) {
for (j = 1; j >= 0; j--)
printf("%d", a[i][j]);
}
A.2143
B.3412
C.4321
D.1234
14.若定义int a[2][3] = {{1, 2, 3}, {4, 5, 6}};,表达式a[0][2] + a[1][0]的值是( )
A.7
B.9
C.4
D.5
15.若定义int a[2][3];,下列访问会发生越界的是( )
A.a[1][1]
B.a[2][0]
C.a[0][0]
D.a[1][2]
16.执行下列程序后,count的值是( )
int a[2][3] = {{1, 5, 2}, {6, 3, 4}};
int i, j, count = 0;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
if (a[i][j] > 4) count++;
A.4
B.3
C.1
D.2
17.下列定义中,二维数组行数为3、列数为2的是( )
A.int a[3,2];
B.int a(3)(2);
C.int a[3][2];
D.int a[2][3];
18.执行下列程序后,输出结果是( )
int a[2][2] = {{2, 4}, {6, 8}};
int i;
for (i = 0; i < 2; i++)
printf("%d", a[i][1]);
A.48
B.26
C.68
D.24
19.执行下列程序后,max的值是( )
int a[2][3] = {{3, 8, 2}, {5, 1, 7}};
int i, j, max = a[0][0];
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
if (a[i][j] > max) max = a[i][j];
A.5
B.3
C.7
D.8
20.执行下列语句后,a[1][1]的值是( )
int a[2][2] = {{1}, {2}};
A.1
B.0
C.随机值
D.2
二、简答题(共2题,每题10分,共20分)
1.阅读程序,写出程序的输出结果。
#include <stdio.h>
int main( )
{
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j, sum = 0;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
sum += a[i][j];
}
}
printf("%d %d
", a[1][2], sum);
return 0;
}
2.阅读程序,写出程序的输出结果。
#include <stdio.h>
int main( )
{
int a[2][2] = {{7, 3}, {9, 5}};
int i, j, max = a[0][0];
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
if (a[i][j] > max)
max = a[i][j];
}
}
printf("%d
", max);
return 0;
}
三、案例分析题(共1题,共10分)
1.下面程序用于输出二维数组a的2行3列元素,但程序中有一处错误,请指出并改正。
#include <stdio.h>
int main( )
{
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j;
for (i = 0; i <= 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d", a[i][j]);
}
}
return 0;
}
四、综合应用题(共1题,共10分)
1.编写程序:输入一个2行3列的整数二维数组,求所有元素的和并输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第9卷,为知识训练卷,按《C语言程序设计知识》中“二维数组”范围和要求编写。具体内容为:(3)理解二维数组的定义及初始化。(4)掌握二维数组元素的引用。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第9卷 C语言程序设计知识——二维数组
(考试时间:45分钟 满分:100分)
一、选择题(共20题,每题3分,共60分)
1.下列语句中,正确的二维数组定义是( )
A.int a(2)(3);
B.int[2][3] a;
C.array int a[2,3];
D.int a[2][3];
【答案】D
【解析】C语言二维数组的定义形式为类型名 数组名[行数][列数],因此int a[2][3]正确。
2.若定义int a[2][3];,a数组共有多少个元素( )
A.6个
B.2个
C.5个
D.3个
【答案】A
【解析】二维数组有2行3列,元素总数为2×3=6个。
3.若定义int a[2][3];,行下标和列下标的有效范围分别是( )
A.1~3和1~2
B.0~1和0~2
C.1~2和1~3
D.0~2和0~3
【答案】B
【解析】数组下标从0开始,2行的行下标为0、1,3列的列下标为0、1、2。
4.下列语句执行后,a[0][1]的值是( )
int a[2][2] = {{1, 2}, {3, 4}};
A.1
B.4
C.2
D.3
【答案】C
【解析】a[0][1]表示第1行第2列的元素,对应初始化值2。
5.下列语句执行后,a[1][0]的值是( )
int a[2][2] = {{5, 6}, {7, 8}};
A.6
B.7
C.5
D.8
【答案】B
【解析】a[1][0]表示第2行第1列的元素,对应初始化值7。
6.下列语句执行后,a[1][2]的值是( )
int a[2][3] = {1, 2, 3, 4};
A.3
B.1
C.0
D.4
【答案】C
【解析】初始化数据按行依次存放,前4个元素为1、2、3、4,最后两个元素自动初始化为0;a[1][2]是第6个元素,值为0。
7.执行下列程序后,输出结果是( )
int a[2][2] = {{1, 2}, {3, 4}};
printf("%d", a[1][1]);
A.3
B.2
C.1
D.4
【答案】D
【解析】a[1][1]表示第2行第2列元素,值为4。
8.若定义int a[3][4];,最后一个元素是( )
A.a[2][3]
B.a[3][4]
C.a[2][4]
D.a[3][3]
【答案】A
【解析】3行4列数组的行下标范围为0~2,列下标范围为0~3,因此最后一个元素是a[2][3]。
9.下列语句中,能把二维数组a第2行第3列元素修改为0的是( )
A.a[2,3] = 0;
B.a(1)(2) = 0;
C.a[1][2] = 0;
D.a[2][3] = 0;
【答案】C
【解析】第2行第3列的下标分别为1和2,正确写法是a[1][2] = 0。
10.执行下列程序后,sum的值是( )
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j, sum = 0;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
sum += a[i][j];
A.24
B.21
C.15
D.6
【答案】B
【解析】嵌套循环访问6个元素并累加,sum=1+2+3+4+5+6=21。
11.下列关于二维数组遍历的说法正确的是( )
A.列下标从1开始
B.行列下标不能使用循环变量
C.只需要一个下标
D.通常使用两层循环访问行和列
【答案】D
【解析】二维数组需要行下标和列下标,通常使用外层循环控制行、内层循环控制列。
12.执行下列程序后,输出结果是( )
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++)
printf("%d", a[i][j]);
}
A.123456
B.123123
C.654321
D.012345
【答案】A
【解析】外层循环按行访问,内层循环按列访问,依次输出第一行123和第二行456,结果为123456。
13.执行下列程序后,输出结果是( )
int a[2][2] = {{1, 2}, {3, 4}};
int i, j;
for (i = 1; i >= 0; i--) {
for (j = 1; j >= 0; j--)
printf("%d", a[i][j]);
}
A.2143
B.3412
C.4321
D.1234
【答案】C
【解析】按行列下标从1递减到0访问,顺序为a[1][1]、a[1][0]、a[0][1]、a[0][0],输出4321。
14.若定义int a[2][3] = {{1, 2, 3}, {4, 5, 6}};,表达式a[0][2] + a[1][0]的值是( )
A.7
B.9
C.4
D.5
【答案】A
【解析】a[0][2]=3,a[1][0]=4,二者相加得到7。
15.若定义int a[2][3];,下列访问会发生越界的是( )
A.a[1][1]
B.a[2][0]
C.a[0][0]
D.a[1][2]
【答案】B
【解析】a有2行,行下标只能为0或1,a[2][0]的行下标越界。
16.执行下列程序后,count的值是( )
int a[2][3] = {{1, 5, 2}, {6, 3, 4}};
int i, j, count = 0;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
if (a[i][j] > 4) count++;
A.4
B.3
C.1
D.2
【答案】D
【解析】数组中大于4的元素是5和6,共2个,所以count为2。
17.下列定义中,二维数组行数为3、列数为2的是( )
A.int a[3,2];
B.int a(3)(2);
C.int a[3][2];
D.int a[2][3];
【答案】C
【解析】二维数组定义中第一个下标表示行数,第二个下标表示列数,int a[3][2]表示3行2列。
18.执行下列程序后,输出结果是( )
int a[2][2] = {{2, 4}, {6, 8}};
int i;
for (i = 0; i < 2; i++)
printf("%d", a[i][1]);
A.48
B.26
C.68
D.24
【答案】A
【解析】a[i][1]固定访问第2列,i为0和1时分别得到a[0][1]=4和a[1][1]=8,输出48。
19.执行下列程序后,max的值是( )
int a[2][3] = {{3, 8, 2}, {5, 1, 7}};
int i, j, max = a[0][0];
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
if (a[i][j] > max) max = a[i][j];
A.5
B.3
C.7
D.8
【答案】D
【解析】嵌套循环比较所有元素,最大值8大于其他元素,因此max为8。
20.执行下列语句后,a[1][1]的值是( )
int a[2][2] = {{1}, {2}};
A.1
B.0
C.随机值
D.2
【答案】B
【解析】二维数组部分初始化时,每行未列出的元素自动初始化为0;a[1][1]是第二行第二列,值为0。
二、简答题(共2题,每题10分,共20分)
1.阅读程序,写出程序的输出结果。
#include <stdio.h>
int main( )
{
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j, sum = 0;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
sum += a[i][j];
}
}
printf("%d %d
", a[1][2], sum);
return 0;
}
【答案】输出:6 21
【解析】a[1][2]是第二行第三列元素,值为6;嵌套循环累加全部元素,sum=1+2+3+4+5+6=21。
2.阅读程序,写出程序的输出结果。
#include <stdio.h>
int main( )
{
int a[2][2] = {{7, 3}, {9, 5}};
int i, j, max = a[0][0];
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
if (a[i][j] > max)
max = a[i][j];
}
}
printf("%d
", max);
return 0;
}
【答案】输出:9
【解析】程序按行列访问4个元素并逐一比较,初始max为7,比较到9时更新为9,之后没有更大值。
三、案例分析题(共1题,共10分)
1.下面程序用于输出二维数组a的2行3列元素,但程序中有一处错误,请指出并改正。
#include <stdio.h>
int main( )
{
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j;
for (i = 0; i <= 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d", a[i][j]);
}
}
return 0;
}
【答案】将for (i = 0; i <= 2; i++)改为for (i = 0; i < 2; i++)。
【解析】数组a有2行,行下标只能为0和1。原条件允许i等于2,访问a[2][j]会越界;改为i<2后正好访问两行。
四、综合应用题(共1题,共10分)
1.编写程序:输入一个2行3列的整数二维数组,求所有元素的和并输出。
【答案】
#include <stdio.h>
int main( )
{
int a[2][3];
int i, j, sum = 0;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &a[i][j]);
sum += a[i][j];
}
}
printf("%d
", sum);
return 0;
}
【解析】程序用外层循环控制2行,内层循环控制3列,依次读入并累加a[i][j],完成6个元素的求和后输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$