内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第19卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(十)二维数组的定义和使用
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第19卷
二维数组的定义和使用 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.以下程序段的输出结果是( )
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,s=0;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
s+=a[i][j];
printf("%d
",s);
A.11 B.12 C.13 D.14
【答案】A
2.下列二维数组初始化语句中,正确的是( )
A.int a[][3]={8,0,7,0,3,1,2,5};
B.int a[][]={{9,3,1},{8,4,2},{3,5,7}};
C.flota a[2][3]={{1,2},{3,4},{5,6}};
D.float a[3][]={{1,2,3},{4,5,6},{7,8,9}};
【答案】A
3.若有说明int a[5][4],则对数组元素正确引用的是( )
A.a[3+1][2*2]; B.a(2+1)(0); C.a[2+2,3]; D.a[2*2][3];
【答案】D
4.以下执行程序段后,m的值为( )
int a[2][3]={{1,2,3},{4,5,6}};int m,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
A.15 B.14 C.13 D.12
【答案】A
5.执行以下程序段的输出结果是( )
int a[6][6],i,j,sum=0;
for(i=1;i<6;i++)
for(j= 1;j<6;j++)a[i][j]=(i+j)/2;
for(i=1;i<6;i++)
{for(j=1;j<6;j++)sum+=a[i][j];}
printf("%2d",sum);
A.69 B.150 C.70 D.68
【答案】A
6.执行以下程序段的输出结果是( )
int i,sum=0;
int b[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
for(i=0;i<4;i++)sum=sum+b[i][1];printf("%d",sum);
A.30 B.31 C.32 D.33
【答案】C
7.执行以下程序段的输出结果是( )
int i,j,a[5][5];
for(i=1;i<5;i++) {a[i][i]=1; a[i][1]=1; }
for(i=3;i<5;i++)
for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];
for(j=1;j<=4;j++) printf("%d",a[4][j]);
A.1331 B.1441 C.1551 D.1313
【答案】A
8.执行以下程序段后的输出结果是( )
int a[ ][4]={1,2,3,4,5,6,7,8,9},i,j,s=0;
for (i=1;i<2;i++)
for(j=0;j<=i;j++) s+=a[i][j];printf("%d
",s%2);
A.0 B.-1 C.1 D.有有语法错误
【答案】C
9.执行以下程序段的输出结果是( )
int i,t[][4]={9,8,7,6,5,4,3,2,1},sum=0;
for(i=0;i<2;i++)sum+=t[2-i][i];printf("%d",sum);
A.5 B.8 C.15 D.7
【答案】A
10.执行以下程序段的输出结果是( )
int m[][3]={1,4,7,2,5,8,3,6,9};int i,j,k=0;
for(i=0;i<4;i++){ printf("%d ",m[k][i]); }
A.5 8 3 6 B.1472 C.4 7 2 5 D.1 4 7 2
【答案】D
11.执行以下程序段的输出结果是( )
char w[][10]={"ABCD","EFGH","IJLK","MNOP"},k;
for(k=1;k<3;k++) printf("%s-",w[k]);
A.ABCD-EFGH-IJLK- B.EFGH-IJLK
C.EGGHIJLK D.EFGH-IJLK-
【答案】D
12.执行以下程序段的输出结果是( )
int n[4][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++) n[i][j]=i+j;
for(i=0;i<3;i++)
for(j=0;j<3;j++) n[i+1][j+1]+=n[i][j];printf("%d
",n[i][j]);
A.10 B.12 C.16 D.18
【答案】B
13.以下程序段的功能是( )
int num[4][4]={{1,2,3,4},{5,6,7,8}, {9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{ for(j=1;j<=i;j++) printf("%4c",' ');
for(j=j-1;j<4;j++) printf("%4d",num[i][j]);
printf("
");}
A.输出数组num右上半角 B.输出数组num左上半角
C.输出数组num右下半角 D.输出数组num左下半角
【答案】A
14.执行以下程序段的输出结果是( )
int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1];
printf("%d
",s);
A.28 B.29 C.30 D.32
【答案】C
15.执行以下程序段的输出结果是( )
int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++) sum+=a[i][2-i];
printf("%d",sum);
A.21 B.17 C.8 D.47
【答案】A
16.执行以下程序段的输出结果是( )
int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for(k=0;k<3;k++)
printf("%d",a[k][2-k]);
A.357 B.369 C.159 D.147
【答案】A
17.执行以下程序段时输入:2 4 6<回车>,则输出结果是( )
int x[3][2]={0},i;
for(i=0;i<3;i++)
scanf("%d",x[i]);
printf("%3d%3d%3d
",x[0][0],x[0][1],x[1][0]);
A.2 0 4 B.2 0 0 C.2 4 0 D.2 4 6
【答案】A
18.执行以下程序段的输出结果是( )
int i,t[ ][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)
printf("%d,",t[2-i][i]);
A.7,5,3, B.3,6,9 C.7,5,1, D.3,5,7,
【答案】D
19.若有定义:int a[2][3];,则以下选项中对a数组元素正确引用的是( )
A.a[2][!1] B.a[2][3] C.a[0][3] D.a[1>2][!1]
【答案】D
20.若有定义语句:int m[ ][3]={1,2,3,4,5,6,7}; 则与该语句等价的是( )
A.int m[ ][3]={{1,2,3},{4,5,6},{7}};
B.int m[ ][3]={{1,2},{3,4},{5,6,7}};
C.int m[ ][3]={{1,2,3},{4,5},{6,7}};
D.int m[ ][3]={{1},{2,3,4},{5,6,7}};
【答案】A
二、程序设计题(本大题共4小题,每题10分,共40分)
21.请设计一个程序,实现以下功能:
(1)定义一个二维整型数组 matrix[3][4],并通过用户输入为数组的每个元素赋值。
(2)计算数组中所有元素的平均值,并输出结果。
【答案】#include <stdio.h>
int main() {
int matrix[3][4];
// 输入元素值
printf("请输入二维数组matrix[3][4]的元素值:
");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
scanf("%d", &matrix[i][j]);
}
}
int sum = 0;
int count = 0;
// 计算总和
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
sum += matrix[i][j];
count++;
}
}
// 计算平均值
double average = (double) sum / count;
printf("平均值: %.2f
", average);
return 0;
}
【详解】程序首先定义了一个二维整型数组 matrix[3][4]。
接下来,通过嵌套的循环结构,使用 scanf 函数分别为二维数组的每个元素赋值。
然后,定义了两个变量 sum 和 count,用于计算数组中所有元素的总和和元素的个数。通过再次使用嵌套的循环结构遍历二维数组,累加每个元素值至 sum 中,并递增计数器 count 的值。
最后,利用总和 sum 和元素个数 count 计算平均值,并使用 printf 函数输出结果,保留两位小数。
22.求一个3*3矩阵对角线元素之和
【答案】#include"stdio.h"
main(){
float a[3][3],sum=0;
int i,j;
for(i=0;i<3;i++)//外循环
{for(j=0;j<3;j++)//内循环
scanf("%f",&a[i][j]);//键入数据值
}
for(i=0;i<3;i++)
{sum=sum+a[i][i];}//对角线i=i
printf("对角线之和%6.2f",sum);
return 0;
}
23.用户输入二维数组的阶数(假设为方阵)和各个元素,计算主对角线和副对角线元素之和(如果是奇数阶矩阵,中间元素只加一次)并输出。
【答案】#include <stdio.h>
int main() {
int n;
printf("请输入二维数组的阶数(方阵): ");
scanf("%d", &n);
int arr[n][n];
printf("请输入 %d 行 %d 列的整数:
", n, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &arr[i][j]);
}
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i][i];
sum += arr[i][n - 1 - i];
}
if (n % 2 == 1) {
int mid = n / 2;
sum -= arr[mid][mid];
}
printf("对角线元素之和为: %d
", sum);
return 0;
}
24.用户输入二维数组的行数和列数以及各个元素,找出每行的最大值并输出。
【答案】#include <stdio.h>
int main() {
int rows, cols;
printf("请输入二维数组的行数和列数: ");
scanf("%d %d", &rows, &cols);
int arr[rows][cols];
printf("请输入 %d 行 %d 列的整数:
", rows, cols);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
scanf("%d", &arr[i][j]);
}
}
for (int i = 0; i < rows; i++) {
int max = arr[i][0];
for (int j = 1; j < cols; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
}
printf("第 %d 行的最大值是: %d
", i + 1, max);
}
return 0;
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第19卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(十)二维数组的定义和使用
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第19卷
二维数组的定义和使用 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.以下程序段的输出结果是( )
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,s=0;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
s+=a[i][j];
printf("%d
",s);
A.11 B.12 C.13 D.14
2.下列二维数组初始化语句中,正确的是( )
A.int a[][3]={8,0,7,0,3,1,2,5};
B.int a[][]={{9,3,1},{8,4,2},{3,5,7}};
C.flota a[2][3]={{1,2},{3,4},{5,6}};
D.float a[3][]={{1,2,3},{4,5,6},{7,8,9}};
3.若有说明int a[5][4],则对数组元素正确引用的是( )
A.a[3+1][2*2]; B.a(2+1)(0); C.a[2+2,3]; D.a[2*2][3];
4.以下执行程序段后,m的值为( )
int a[2][3]={{1,2,3},{4,5,6}};int m,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
A.15 B.14 C.13 D.12
5.执行以下程序段的输出结果是( )
int a[6][6],i,j,sum=0;
for(i=1;i<6;i++)
for(j= 1;j<6;j++)a[i][j]=(i+j)/2;
for(i=1;i<6;i++)
{for(j=1;j<6;j++)sum+=a[i][j];}
printf("%2d",sum);
A.69 B.150 C.70 D.68
6.执行以下程序段的输出结果是( )
int i,sum=0;
int b[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
for(i=0;i<4;i++)sum=sum+b[i][1];printf("%d",sum);
A.30 B.31 C.32 D.33
7.执行以下程序段的输出结果是( )
int i,j,a[5][5];
for(i=1;i<5;i++) {a[i][i]=1; a[i][1]=1; }
for(i=3;i<5;i++)
for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];
for(j=1;j<=4;j++) printf("%d",a[4][j]);
A.1331 B.1441 C.1551 D.1313
8.执行以下程序段后的输出结果是( )
int a[ ][4]={1,2,3,4,5,6,7,8,9},i,j,s=0;
for (i=1;i<2;i++)
for(j=0;j<=i;j++) s+=a[i][j];printf("%d
",s%2);
A.0 B.-1 C.1 D.有有语法错误
9.执行以下程序段的输出结果是( )
int i,t[][4]={9,8,7,6,5,4,3,2,1},sum=0;
for(i=0;i<2;i++)sum+=t[2-i][i];printf("%d",sum);
A.5 B.8 C.15 D.7
10.执行以下程序段的输出结果是( )
int m[][3]={1,4,7,2,5,8,3,6,9};int i,j,k=0;
for(i=0;i<4;i++){ printf("%d ",m[k][i]); }
A.5 8 3 6 B.1472 C.4 7 2 5 D.1 4 7 2
11.执行以下程序段的输出结果是( )
char w[][10]={"ABCD","EFGH","IJLK","MNOP"},k;
for(k=1;k<3;k++) printf("%s-",w[k]);
A.ABCD-EFGH-IJLK- B.EFGH-IJLK
C.EGGHIJLK D.EFGH-IJLK-
12.执行以下程序段的输出结果是( )
int n[4][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++) n[i][j]=i+j;
for(i=0;i<3;i++)
for(j=0;j<3;j++) n[i+1][j+1]+=n[i][j];printf("%d
",n[i][j]);
A.10 B.12 C.16 D.18
13.以下程序段的功能是( )
int num[4][4]={{1,2,3,4},{5,6,7,8}, {9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{ for(j=1;j<=i;j++) printf("%4c",' ');
for(j=j-1;j<4;j++) printf("%4d",num[i][j]);
printf("
");}
A.输出数组num右上半角 B.输出数组num左上半角
C.输出数组num右下半角 D.输出数组num左下半角
14.执行以下程序段的输出结果是( )
int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1];
printf("%d
",s);
A.28 B.29 C.30 D.32
15.执行以下程序段的输出结果是( )
int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++) sum+=a[i][2-i];
printf("%d",sum);
A.21 B.17 C.8 D.47
16.执行以下程序段的输出结果是( )
int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for(k=0;k<3;k++)
printf("%d",a[k][2-k]);
A.357 B.369 C.159 D.147
17.执行以下程序段时输入:2 4 6<回车>,则输出结果是( )
int x[3][2]={0},i;
for(i=0;i<3;i++)
scanf("%d",x[i]);
printf("%3d%3d%3d
",x[0][0],x[0][1],x[1][0]);
A.2 0 4 B.2 0 0 C.2 4 0 D.2 4 6
18.执行以下程序段的输出结果是( )
int i,t[ ][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)
printf("%d,",t[2-i][i]);
A.7,5,3, B.3,6,9 C.7,5,1, D.3,5,7,
19.若有定义:int a[2][3];,则以下选项中对a数组元素正确引用的是( )
A.a[2][!1] B.a[2][3] C.a[0][3] D.a[1>2][!1]
20.若有定义语句:int m[ ][3]={1,2,3,4,5,6,7}; 则与该语句等价的是( )
A.int m[ ][3]={{1,2,3},{4,5,6},{7}};
B.int m[ ][3]={{1,2},{3,4},{5,6,7}};
C.int m[ ][3]={{1,2,3},{4,5},{6,7}};
D.int m[ ][3]={{1},{2,3,4},{5,6,7}};
二、程序设计题(本大题共4小题,每题10分,共40分)
21.请设计一个程序,实现以下功能:
(1)定义一个二维整型数组 matrix[3][4],并通过用户输入为数组的每个元素赋值。
(2)计算数组中所有元素的平均值,并输出结果。
22.求一个3*3矩阵对角线元素之和
23.用户输入二维数组的阶数(假设为方阵)和各个元素,计算主对角线和副对角线元素之和(如果是奇数阶矩阵,中间元素只加一次)并输出。
24.用户输入二维数组的行数和列数以及各个元素,找出每行的最大值并输出。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$