内容正文:
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第9卷,按《C语言程序设计》范围和要求编写。具体内容为:
理解二维数组的定义及初始化。
掌握二维数组元素的引用
山东省《软件与应用技术类考纲百套卷》 第9卷
《C语言程序设计》
二维数组的定义、初始化及引用 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下二维数组定义语句中,正确的是( )
A. int a [n][m];
B. int a (3,4);
C. int a [3.0][4];
D. int a [3][4];
2.以下二维数组初始化语句中,正确的是( )
A. int a [2][3]={1,2,3,4};
B. int a [2][3]={1,2,3,4,5,6,7};
C. int a [][]={1,2,3,4};
D. int a [2][3]={1,,3};
3.若有定义int a[3][4]={{1,2},{3,4},{5,6}};,则数组元素a[1][2]的值是( )
A. 2
B. 3
C. 0
D. 6
4.在 C 语言中,二维数组名a代表的是( )
A. 数组全部元素的值
B. 数组第一个元素的值
C. 数组最后一行的首地址
D. 数组第一行的首地址
5.若有定义int a[2][3]={0};,则数组元素a[1][1]的值是( )
A. 0
B. 1
C. 2
D. 随机值
6.若有定义int a[][3]={1,2,3,4,5,6};,则数组 a 的行数是( )
A. 1
B. 2
C. 3
D. 不确定
7.若有定义int a[3][4];,以下数组元素引用中,错误的是( )
A. a [0][0]=1;
B. a [2][3]=12;
C. a [3][0]=13;
D. a [1][2]=a [0][1]+a [2][3];
8.执行以下程序段后,输出结果是( )
int a[2][2]={{1,2},{3,4}};
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
printf("%d",a[i][j]);
A. 1234
B. 1324
C. 4321
D. 1243
9.以下二维数组定义语句中,错误的是( )
A. int n=2,m=3,a [n][m];
B. int a [2*3][4];
C. int a [5+5][10];
D. int a [10][10];
10.若有定义int a[2][3]={{1},{2,3}};,以下说法正确的是( )
A. 数组 a 有 6 个元素,全部被初始化
B. 数组 a 的元素 a [0][1] 和 a [0][2] 的值为 0
C. 数组 a 的行数为 3
D. 数组元素 a [1][2] 的值为 3
11.若有定义int a[3][3];,执行语句a[1][2]=10;后,以下说法正确的是( )
A. 数组 a 的所有元素值都是 10
B. 数组 a 的第 1 行第 2 列元素值为 10
C. 数组 a 的第 2 行第 3 列元素值为 10
D. 数组 a 的行数变为 2
12.执行以下程序段后,sum 的值是( )
int a[2][2]={{1,2},{3,4}},sum=0;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
sum+=a[i][j];
A. 5
B. 7
C. 9
D. 10
13.以下字符二维数组定义语句中,正确的是( )
A. char str [2][5]={{'a','b'},{'c','d'}};
B. char str [2][5]={"abcde","fghij"};
C. char str [][]={"abc","def"};
D. char str [2][5]={"abcdef"};
14.若有定义int a[2][3];,未对数组元素进行初始化,则以下说法正确的是( )
A. 所有元素值都是 0
B. 所有元素值都是随机值
C. 第一行元素值为 0,其他为随机值
D. 最后一列元素值为 0,其他为随机值
15.若有定义int a[2][2]={{1,2},{3,4}};,则表达式a[0][1]+a[1][0]的值是( )
A. 3
B. 4
C. 5
D. 6
16.执行以下程序段后,输出结果是( )
int a[2][3]={{1,2,3},{4,5,6}};
for(int j=0;j<3;j++)
for(int i=0;i<2;i++)
printf("%d",a[i][j]);
A. 123456
B. 142536
C. 654321
D. 362514
17.以下二维数组初始化语句中,正确的是( )
A. int a [2][3]={{1,2,3},{4,5,6}};
B. int a [2][3]={1,2,3,4,5,6,7};
C. int a [][3]={};
D. int a [2][3.0]={1,2,3};
18.若有定义int a[3][4]={{0}};,则数组中值为 0 的元素个数是( )
A. 1
B. 4
C. 12
D. 0
19.若有定义int a[2][2]={{1,3},{2,4}};,则以下表达式值为真的是( )
A. a [0][0]>a [0][1]
B. a [1][0]==3
C. a [1][1]==4
D. a [0][1]<a [1][0]
20.执行以下程序段后,输出结果是( )
int a[2][3]={{1,2,3},{4,5,6}};
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
if(a[i][j]%2==0)
printf("%d",a[i][j]);
A. 135
B. 246
C. 123456
D. 654321
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,程序运行后的结果为________
#include <stdio.h>
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j,max=a[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(a[i][j]>max)
max=a[i][j];
}
}
printf("max=%d
",max);
return 0;
}
2.阅读以下 C 语言程序,程序运行后的结果为________
#include <stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
b[j][i]=a[i][j];
}
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",b[i][j]);
}
printf("
");
}
return 0;
}
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输入 3 行 3 列的整数矩阵,计算并输出主对角线元素的和(主对角线是行下标等于列下标元素)。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
int main()
{
int a[3][3],i,j,sum=0;
printf("请输入3行3列矩阵:
");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",____1____);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(____2____)
{
____3____;
}
}
}
printf("主对角线元素的和为:%d
",____4____);
return 0;
}
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个C语言程序,要求输入 2 行 3 列的整数矩阵,计算并输出该矩阵所有元素的和。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第9卷,按《C语言程序设计》范围和要求编写。具体内容为:
理解二维数组的定义及初始化。
掌握二维数组元素的引用
山东省《软件与应用技术类考纲百套卷》 第9卷
《C语言程序设计》
二维数组的定义、初始化及引用 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下二维数组定义语句中,正确的是( )
A. int a [n][m];
B. int a (3,4);
C. int a [3.0][4];
D. int a [3][4];
【答案】D
【解析】二维数组定义格式为类型名 数组名[行常量表达式][列常量表达式];,长度必须是整型常量。
2.以下二维数组初始化语句中,正确的是( )
A. int a [2][3]={1,2,3,4};
B. int a [2][3]={1,2,3,4,5,6,7};
C. int a [][]={1,2,3,4};
D. int a [2][3]={1,,3};
【答案】A
【解析】初始化元素个数不能超过数组总长度,B 错误;不能同时省略行和列长度,C 错误;不能连续出现逗号,D 错误;A 是部分初始化,未初始化元素自动赋值为 0。
3.若有定义int a[3][4]={{1,2},{3,4},{5,6}};,则数组元素a[1][2]的值是( )
A. 2
B. 3
C. 0
D. 6
【答案】C
【解析】二维数组下标从 0 开始,a [1] 对应第二行 {3,4,0,0},a [1][2] 是该行第三个元素,未显式初始化自动为 0。
4.在 C 语言中,二维数组名a代表的是( )
A. 数组全部元素的值
B. 数组第一个元素的值
C. 数组最后一行的首地址
D. 数组第一行的首地址
【答案】D
【解析】二维数组名是指向第一行的常量指针,代表整个二维数组的首地址,即第一行的首地址。
5.若有定义int a[2][3]={0};,则数组元素a[1][1]的值是( )
A. 0
B. 1
C. 2
D. 随机值
【答案】A
【解析】初始化列表中有一个元素 0,其余所有未显式初始化的元素都会自动赋值为 0。
6.若有定义int a[][3]={1,2,3,4,5,6};,则数组 a 的行数是( )
A. 1
B. 2
C. 3
D. 不确定
【答案】B
【解析】二维数组初始化时可以省略第一维长度,系统会根据元素总数和列数自动计算行数:6 个元素 ÷3 列 = 2 行。
7.若有定义int a[3][4];,以下数组元素引用中,错误的是( )
A. a [0][0]=1;
B. a [2][3]=12;
C. a [3][0]=13;
D. a [1][2]=a [0][1]+a [2][3];
【答案】C
【解析】二维数组行下标范围是 0 到行数 - 1,列下标范围是 0 到列数 - 1。a [3][0] 行下标越界,会导致运行错误。
8.执行以下程序段后,输出结果是( )
int a[2][2]={{1,2},{3,4}};
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
printf("%d",a[i][j]);
A. 1234
B. 1324
C. 4321
D. 1243
【答案】A
【解析】按行优先遍历二维数组,依次输出 a [0][0]=1、a [0][1]=2、a [1][0]=3、a [1][1]=4。
9.以下二维数组定义语句中,错误的是( )
A. int n=2,m=3,a [n][m];
B. int a [2*3][4];
C. int a [5+5][10];
D. int a [10][10];
【答案】A
【解析】二维数组的行和列长度都必须是编译时确定的常量表达式,不能用变量 n 和 m。
10.若有定义int a[2][3]={{1},{2,3}};,以下说法正确的是( )
A. 数组 a 有 6 个元素,全部被初始化
B. 数组 a 的元素 a [0][1] 和 a [0][2] 的值为 0
C. 数组 a 的行数为 3
D. 数组元素 a [1][2] 的值为 3
【答案】B
【解析】按行初始化时,第一行只初始化了第一个元素 1,其余两个元素自动为 0;第二行初始化了前两个元素 2、3,第三个元素自动为 0。
11.若有定义int a[3][3];,执行语句a[1][2]=10;后,以下说法正确的是( )
A. 数组 a 的所有元素值都是 10
B. 数组 a 的第 1 行第 2 列元素值为 10
C. 数组 a 的第 2 行第 3 列元素值为 10
D. 数组 a 的行数变为 2
【答案】C
【解析】a [1][2] 对应数组的第 2 行(行下标 1)第 3 列(列下标 2),赋值后该元素值为 10,其他元素不变。
12.执行以下程序段后,sum 的值是( )
int a[2][2]={{1,2},{3,4}},sum=0;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
sum+=a[i][j];
A. 5
B. 7
C. 9
D. 10
【答案】D
【解析】程序功能是计算二维数组所有元素的和,1+2+3+4=10。
13.以下字符二维数组定义语句中,正确的是( )
A. char str [2][5]={{'a','b'},{'c','d'}};
B. char str [2][5]={"abcde","fghij"};
C. char str [][]={"abc","def"};
D. char str [2][5]={"abcdef"};
【答案】A
【解析】字符串 "abcde" 包含 6 个字符(含结束符 '\0'),B、D 数组长度不足;C 不能同时省略行和列长度。
14.若有定义int a[2][3];,未对数组元素进行初始化,则以下说法正确的是( )
A. 所有元素值都是 0
B. 所有元素值都是随机值
C. 第一行元素值为 0,其他为随机值
D. 最后一列元素值为 0,其他为随机值
【答案】B
【解析】局部二维数组未初始化时,所有元素值为随机的垃圾值;全局二维数组未初始化时元素值为 0。
15.若有定义int a[2][2]={{1,2},{3,4}};,则表达式a[0][1]+a[1][0]的值是( )
A. 3
B. 4
C. 5
D. 6
【答案】C
【解析】a [0][1]=2,a [1][0]=3,两者之和为 5。
16.执行以下程序段后,输出结果是( )
int a[2][3]={{1,2,3},{4,5,6}};
for(int j=0;j<3;j++)
for(int i=0;i<2;i++)
printf("%d",a[i][j]);
A. 123456
B. 142536
C. 654321
D. 362514
【答案】B
【解析】按列优先遍历二维数组,依次输出第 1 列 1、4,第 2 列 2、5,第 3 列 3、6。
17.以下二维数组初始化语句中,正确的是( )
A. int a [2][3]={{1,2,3},{4,5,6}};
B. int a [2][3]={1,2,3,4,5,6,7};
C. int a [][3]={};
D. int a [2][3.0]={1,2,3};
【答案】A
【解析】按行初始化,每行元素用花括号括起来,元素个数正好等于数组总长度,正确。B 元素过多;C 不能省略所有元素;D 列长度不能是浮点数。
18.若有定义int a[3][4]={{0}};,则数组中值为 0 的元素个数是( )
A. 1
B. 4
C. 12
D. 0
【答案】C
【解析】初始化第一行第一个元素为 0,该行其余 3 个元素自动为 0,第二、三行所有元素也自动为 0,共 12 个元素全为 0。
19.若有定义int a[2][2]={{1,3},{2,4}};,则以下表达式值为真的是( )
A. a [0][0]>a [0][1]
B. a [1][0]==3
C. a [1][1]==4
D. a [0][1]<a [1][0]
【答案】C
【解析】a [1][1]=4,因此 a [1][1]==4 表达式值为 1(真)。
20.执行以下程序段后,输出结果是( )
int a[2][3]={{1,2,3},{4,5,6}};
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
if(a[i][j]%2==0)
printf("%d",a[i][j]);
A. 135
B. 246
C. 123456
D. 654321
【答案】B
【解析】程序功能是输出二维数组中的偶数元素,数组中的偶数是 2、4、6。
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,程序运行后的结果为________
#include <stdio.h>
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j,max=a[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(a[i][j]>max)
max=a[i][j];
}
}
printf("max=%d
",max);
return 0;
}
【答案】max=9
2.阅读以下 C 语言程序,程序运行后的结果为________
#include <stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
b[j][i]=a[i][j];
}
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",b[i][j]);
}
printf("
");
}
return 0;
}
【答案】
1 4
2 5
3 6
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输入 3 行 3 列的整数矩阵,计算并输出主对角线元素的和(主对角线是行下标等于列下标元素)。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
int main()
{
int a[3][3],i,j,sum=0;
printf("请输入3行3列矩阵:
");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",____1____);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(____2____)
{
____3____;
}
}
}
printf("主对角线元素的和为:%d
",____4____);
return 0;
}
【答案】
1.&a[i][j]
2.i==j
3.sum+=a[i][j](或sum=sum+a[i][j])
4.sum
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个C语言程序,要求输入 2 行 3 列的整数矩阵,计算并输出该矩阵所有元素的和。
【答案】
#include <stdio.h>
int main()
{
int a[2][3],i,j,sum=0;
printf("请输入2行3列矩阵:
");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
sum+=a[i][j];
}
}
printf("矩阵所有元素的和为:%d
",sum);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$