《计算机编程语言—C语言》第52卷:二维数组的定义及应用 - 知识点训练卷 湖南省计算机应用考纲百套卷

2025-06-16
| 2份
| 19页
| 120人阅读
| 3人下载

内容正文:

编写说明:《计算机应用考纲百套卷》依据湖南省《计算机应用类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,共62份,第二部分是常考题训练卷,共18份,第三个部分是专业综合训练卷,参考历年计算机应用类专业真题试卷,编写了20份。 本试卷是《计算机应用考纲百套卷》的第52卷,知识点:①二维数组的定义;②二维数组的初始化及引用;③二维数组的应用; 湖南省《计算机应用考纲百套卷》 《计算机编程语言-C语言》 第52卷: 二维数组的定义及应用 知识点训练卷 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共20小题,每小题2分,共40分) 1.对于二维数组arry[20][24],下列表达地址的方式有误的一项是( ) A.*(arry[6]+7) B.*(arry+8)+9 C.arry[15] D.&arry[19][1] 【答案】A 2.已知:int b[3][3]={1,2,3,4,5,6,7,8};,则b[2][1]的值是( ) A.4 B.5 C.6 D.8 【答案】D 3.已知:int a[ ][3]= {1,2,3,4,5,6,7,8};,则数组a的第一维大小是( ) A.2 B.3 C.4 D.不定值 【答案】B 4.下列关于二维数组的定义中,不正确的一项是( ) A.int b[2][2]={{3},{4}}; B.int b[2][2]={{1,2},{2,3}}; C.int b[ ][2]={2,3,4,5}; D.int b[2][ ]={{1,2},{3,4}}; 【答案】D 5.若二维数组a有m列,则在a[i][j]前面的元素个数为( ) A.j*m+i B.i*m+j C.i*m+j-1 D.i*m+j+1 【答案】B 6.设有定义:int a[3][6];,按照在内存中的存放顺序,数组a的第10个元素是( ) A.a[0][4] B.a[1][3] C.a[0][3] D.a[1][4] 【答案】B 7.下列选项中,对于二维数组的定义中,正确的一项是( ) A.int a[4][ ]={1,2,3,4,5,6}; B.int a[ ][3]; C.int a[ ][3]={1,2,3,4,5,6}; D.int a[ ][ ]={{1,2,3},{4,5,6}}; 【答案】C 8.执行以下程序段的输出结果是( ) main( ) { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d ",a[0][3],a[1][2],a[2][1],a[3][0]);getch();} A.0650 B.1470 C.5430 D.0560 【答案】A 9.执行以下程序段的输出结果是( ) main( ) { int m[ ][3]={1,4,7,2,5,8,3,6,9};int i,k=2; for(i=0;i<3;i++) printf("%d",m[k-1][i]);getch();} A.456 B.258 C.369 D.789 【答案】B 10.设有定义:int a[2][4];,则引用数组元素正确的是( ) A.a[0][3] B.a[0][4] C.a[2][2] D.a[2][2+1] 【答案】A 11.执行以下程序段的输出结果是( ) main( ) {char p[5][10]={"abc","aabcdef","acdjjke","andc","add"}; printf("%d ",strlen(p[4]));getch();} A.3 B.7 C.4 D.5 【答案】A 12.设有定义:int a[ ][3]={1,2,3,4,5,6,7,8};,则a数组的行数为( ) A.1 B.2 C.3 D.无确定值 【答案】C 13.下列定义语句中,能正确定义二维数组的一项是( ) A.int a[ ][3]; B.int a[ ][3]={2*3}; C.int a[ ][3]={ }; D.int a[2][3]={{1},{2},{3,4}}; 【答案】B 14.执行以下程序段的输出结果是( ) main( ) {int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d",x[i][2-i]);getch();} A.159 B.147 C.357 D.369 【答案】C 15.执行以下程序段的输出结果是( ) main( ) {int a[3][3]={{1,2},{3,4},{5,6}};int i,j,s=0; for(i=0;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d ",s);getch();} A.17 B.18 C.19 D.20 【答案】C 16.执行以下程序段的输出结果是( ) main( ) {char ch[3][5]={"AAAA","BBB","CC"}; printf( "%s ", ch[1] );getch();} A.AAAA B.CC C.BBBC D.BBB 【答案】D 17.执行以下程序段的输出结果是( ) main( ) {int a[3][3],i,j; for(i=0;i<9;i++) (&a[0][0])[i]=i+1; printf("%d ",a[1][2]);getch();} A.1 B.2 C.4 D.6 【答案】D 18.执行以下程序段的输出结果是( ) main( ) {int a[3][4];int i, j , count = 0; for( i = 0; i < 3; i++ ) for(j = 0;j < 4; j++ ) {a[i][j]=i-j; if (a[i][j]<0) count++;} printf("%d",count );getch();} A.1 B.3 C.5 D.6 【答案】D 19.设有定义:int a[ ][4]={0,0};则下列叙述不正确的一项是( ) A.二维数组a的每个元素都可以得到初值0 B.二维数组a的第一维大小为1 C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D.只有元素a[0][0]和a[0][1]可以得到初值0,其余元素均得不到初值0 【答案】D 20.设有定义:int a[3][4];则全局数组a中各元素( ) A.可以在程序的运行阶段得到初值0 B.可以在程序的编译阶段得到初值0 C.可以在程序的编译或运行阶段得到初值0 D.不能得到确定的初值 【答案】A 二、程序运行结果题(本题共6题,每题4分,共24分) 21. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> # define N 4 void fun(int a[][N],int b[]) {int i; for (i=0;i<N;i++) b[i]=a[i][i]-a[i][N-1-i];} main( ) { int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i; fun(x, y); for (i=0;i<N;i++) printf("%d,",y[i]); printf(" ");getch();} 【答案】-3,-1,1,3, 22. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> main( ) { int b[3][3]={1,1,2,0,1,1,0,1,0},i,j,t=0; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf("%d ",t); getch();} 【答案】2 23. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> #define N 4 main( ) { int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i; for(i=0;i<N;i++) y[i]=x[i][i]-x[i][N-1-i]; for(i=0;i<N;i++) printf("%d,",y[i]); printf(" ");getch();} 【答案】-3,-1,1,3, 24. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> main( ) {int i,c;char num[ ][4]={'C','D','E','F','A','C','B','D'}; for(i=0;i<4;i++) {c=num[0][i]+num[1][i]-2*'A'; printf("%3d",c);}getch();} 【答案】 2 5 5 8 25. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> main( ) {char ch[2][5]={"1998","1995"},*p[2]; int i,j,s=0; for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++) for(j=1;j<=3;j+=2) s=10*s+p[i][j]-'0'; printf("%d",s);getch();} 【答案】9895 26. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> #include<string.h> main( ) {char a[5][10]={"china","beijing","you","tiananmen","welcome"}; int i,j; char t[10]; for ( i=0; i<4; i++) for (j=i+1; j<5; j++) if( strcmp(a[i], a[j])>0) {strcpy(t,a[i]); strcpy(a[i],a[j]); strcpy(a[j],t); } puts(a[3]);getch();} 【答案】welcome 三、程序填空题(本题共2题,每空4分,共24分) 27.下列程序的功能是:从键盘输入一个N×N的矩阵A,求矩阵B(B=A+A’),即将矩阵A与其转置矩阵A’相加,结果存放在矩阵B中。如1图所示。请填空。 图 1 #include<stdio.h> #include<conio.h> #define N 3 main() {int a[N][N],b[N][N],c[N][N];int i,j; printf("请输入矩阵A: "); for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); for(i=0;i<N;i++) for(j=0;j<N;j++) {c[i][j]=【1】; b[i][j]=【2】;} printf("输出B矩阵为: "); for(i=0;i<N;i++) {for(j=0;j<N;j++) printf("%7d",【3】); printf(" ");} getch();} 【答案】①a[j][i] ②a[i][j]+c[i][j] ③b[i][j] 28.下列程序的功能是:从键盘上输入一个M×N的二维数组,求该数组各行的平均值,并将计算结果放到一个一维数组中,然后输出。请填空。 #include<stdio.h> #include<conio.h> #define N 4 #define M 3 main() {int i,j;float a[M][N],b[M],sum; printf("请输入%d*%d的矩阵:",M,N); for(i=0;i<M;i++) {【1】; for(j=0;j<N;j++) {scanf("%f",&a[i][j]); sum=【2】;} b[i]=【3】;} for(i=0;i<M;i++) printf("%7.2f",b[i]); getch();} 【答案】①sum=0 ②sum+a[i][j] ③sum/N 四、程序改错题(本题共1题,每空4分,共12分) 29.已知矩阵A和矩阵B,求矩阵C(C=A×B)。矩阵乘法的规则:矩阵A的每一行的各个元素分别与矩阵B的每一列的各个元素对应相乘后相加,作为矩阵C相应的行列元素(如图2所示)。程序中有三处错误,请改正。 图 2 L1 #include<stdio.h> L2 #include<conio.h> L3 main() L4 { L5 int A[3][4]={{1,4,5,6},{-2,5,7,8},{6,-7,5,2}}; L6 int B[4][3]={{-1,7,9},{2,-8,6},{6,8,4},{8,9,-7}}; L7 int C[4][4]={0},i,j,k; L8 for(i=0;i<3;i++) L9 for(j=0;j<3;j++) L10 for(k=0;k<4;k++) L11 C[i][j]*=A[i][k]*B[k][j]; L12 for(i=0;i<3;i++) L13 {for(j=0;j<3;j++) L14 printf("%4d",C[j][i]); L15 printf(" ");} L16 getch();} 【答案】 ①L7 int C[3][3]={0},i,j,k; ②L11 C[i][j]+=A[i][k]*B[k][j]; ③L14 printf("%4d",C[i][j]); 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$ 编写说明:《计算机应用考纲百套卷》依据湖南省《计算机应用类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,共62份,第二部分是常考题训练卷,共18份,第三个部分是专业综合训练卷,参考历年计算机应用类专业真题试卷,编写了20份。 本试卷是《计算机应用考纲百套卷》的第52卷,知识点:①二维数组的定义;②二维数组的初始化及引用;③二维数组的应用; 湖南省《计算机应用考纲百套卷》 《计算机编程语言-C语言》 第52卷: 二维数组的定义及应用 知识点训练卷 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共20小题,每小题2分,共40分) 1.对于二维数组arry[20][24],下列表达地址的方式有误的一项是( ) A.*(arry[6]+7) B.*(arry+8)+9 C.arry[15] D.&arry[19][1] 2.已知:int b[3][3]={1,2,3,4,5,6,7,8};,则b[2][1]的值是( ) A.4 B.5 C.6 D.8 3.已知:int a[ ][3]= {1,2,3,4,5,6,7,8};,则数组a的第一维大小是( ) A.2 B.3 C.4 D.不定值 4.下列关于二维数组的定义中,不正确的一项是( ) A.int b[2][2]={{3},{4}}; B.int b[2][2]={{1,2},{2,3}}; C.int b[ ][2]={2,3,4,5}; D.int b[2][ ]={{1,2},{3,4}}; 5.若二维数组a有m列,则在a[i][j]前面的元素个数为( ) A.j*m+i B.i*m+j C.i*m+j-1 D.i*m+j+1 6.设有定义:int a[3][6];,按照在内存中的存放顺序,数组a的第10个元素是( ) A.a[0][4] B.a[1][3] C.a[0][3] D.a[1][4] 7.下列选项中,对于二维数组的定义中,正确的一项是( ) A.int a[4][ ]={1,2,3,4,5,6}; B.int a[ ][3]; C.int a[ ][3]={1,2,3,4,5,6}; D.int a[ ][ ]={{1,2,3},{4,5,6}}; 8.执行以下程序段的输出结果是( ) main( ) { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d ",a[0][3],a[1][2],a[2][1],a[3][0]);getch();} A.0650 B.1470 C.5430 D.0560 9.执行以下程序段的输出结果是( ) main( ) { int m[ ][3]={1,4,7,2,5,8,3,6,9};int i,k=2; for(i=0;i<3;i++) printf("%d",m[k-1][i]);getch();} A.456 B.258 C.369 D.789 10.设有定义:int a[2][4];,则引用数组元素正确的是( ) A.a[0][3] B.a[0][4] C.a[2][2] D.a[2][2+1] 11.执行以下程序段的输出结果是( ) main( ) {char p[5][10]={"abc","aabcdef","acdjjke","andc","add"}; printf("%d ",strlen(p[4]));getch();} A.3 B.7 C.4 D.5 12.设有定义:int a[ ][3]={1,2,3,4,5,6,7,8};,则a数组的行数为( ) A.1 B.2 C.3 D.无确定值 13.下列定义语句中,能正确定义二维数组的一项是( ) A.int a[ ][3]; B.int a[ ][3]={2*3}; C.int a[ ][3]={ }; D.int a[2][3]={{1},{2},{3,4}}; 14.执行以下程序段的输出结果是( ) main( ) {int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d",x[i][2-i]);getch();} A.159 B.147 C.357 D.369 15.执行以下程序段的输出结果是( ) main( ) {int a[3][3]={{1,2},{3,4},{5,6}};int i,j,s=0; for(i=0;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d ",s);getch();} A.17 B.18 C.19 D.20 16.执行以下程序段的输出结果是( ) main( ) {char ch[3][5]={"AAAA","BBB","CC"}; printf( "%s ", ch[1] );getch();} A.AAAA B.CC C.BBBC D.BBB 17.执行以下程序段的输出结果是( ) main( ) {int a[3][3],i,j; for(i=0;i<9;i++) (&a[0][0])[i]=i+1; printf("%d ",a[1][2]);getch();} A.1 B.2 C.4 D.6 18.执行以下程序段的输出结果是( ) main( ) {int a[3][4];int i, j , count = 0; for( i = 0; i < 3; i++ ) for(j = 0;j < 4; j++ ) {a[i][j]=i-j; if (a[i][j]<0) count++;} printf("%d",count );getch();} A.1 B.3 C.5 D.6 19.设有定义:int a[ ][4]={0,0};则下列叙述不正确的一项是( ) A.二维数组a的每个元素都可以得到初值0 B.二维数组a的第一维大小为1 C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D.只有元素a[0][0]和a[0][1]可以得到初值0,其余元素均得不到初值0 20.设有定义:int a[3][4];则全局数组a中各元素( ) A.可以在程序的运行阶段得到初值0 B.可以在程序的编译阶段得到初值0 C.可以在程序的编译或运行阶段得到初值0 D.不能得到确定的初值 二、程序运行结果题(本题共6题,每题4分,共24分) 21. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> # define N 4 void fun(int a[][N],int b[]) {int i; for (i=0;i<N;i++) b[i]=a[i][i]-a[i][N-1-i];} main( ) { int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i; fun(x, y); for (i=0;i<N;i++) printf("%d,",y[i]); printf(" ");getch();} 22. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> main( ) { int b[3][3]={1,1,2,0,1,1,0,1,0},i,j,t=0; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf("%d ",t); getch();} 23. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> #define N 4 main( ) { int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i; for(i=0;i<N;i++) y[i]=x[i][i]-x[i][N-1-i]; for(i=0;i<N;i++) printf("%d,",y[i]); printf(" ");getch();} 24. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> main( ) {int i,c;char num[ ][4]={'C','D','E','F','A','C','B','D'}; for(i=0;i<4;i++) {c=num[0][i]+num[1][i]-2*'A'; printf("%3d",c);}getch();} 25. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> main( ) {char ch[2][5]={"1998","1995"},*p[2]; int i,j,s=0; for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++) for(j=1;j<=3;j+=2) s=10*s+p[i][j]-'0'; printf("%d",s);getch();} 26. 下列程序的运行结果是 #include<stdio.h> #include<conio.h> #include<string.h> main( ) {char a[5][10]={"china","beijing","you","tiananmen","welcome"}; int i,j; char t[10]; for ( i=0; i<4; i++) for (j=i+1; j<5; j++) if( strcmp(a[i], a[j])>0) {strcpy(t,a[i]); strcpy(a[i],a[j]); strcpy(a[j],t); } puts(a[3]);getch();} 三、程序填空题(本题共2题,每空4分,共24分) 27.下列程序的功能是:从键盘输入一个N×N的矩阵A,求矩阵B(B=A+A’),即将矩阵A与其转置矩阵A’相加,结果存放在矩阵B中。如1图所示。请填空。 图 1 #include<stdio.h> #include<conio.h> #define N 3 main() {int a[N][N],b[N][N],c[N][N];int i,j; printf("请输入矩阵A: "); for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); for(i=0;i<N;i++) for(j=0;j<N;j++) {c[i][j]=【1】; b[i][j]=【2】;} printf("输出B矩阵为: "); for(i=0;i<N;i++) {for(j=0;j<N;j++) printf("%7d",【3】); printf(" ");} getch();} 28.下列程序的功能是:从键盘上输入一个M×N的二维数组,求该数组各行的平均值,并将计算结果放到一个一维数组中,然后输出。请填空。 #include<stdio.h> #include<conio.h> #define N 4 #define M 3 main() {int i,j;float a[M][N],b[M],sum; printf("请输入%d*%d的矩阵:",M,N); for(i=0;i<M;i++) {【1】; for(j=0;j<N;j++) {scanf("%f",&a[i][j]); sum=【2】;} b[i]=【3】;} for(i=0;i<M;i++) printf("%7.2f",b[i]); getch();} 四、程序改错题(本题共1题,每空4分,共12分) 29.已知矩阵A和矩阵B,求矩阵C(C=A×B)。矩阵乘法的规则:矩阵A的每一行的各个元素分别与矩阵B的每一列的各个元素对应相乘后相加,作为矩阵C相应的行列元素(如图2所示)。程序中有三处错误,请改正。 图 2 L1 #include<stdio.h> L2 #include<conio.h> L3 main() L4 { L5 int A[3][4]={{1,4,5,6},{-2,5,7,8},{6,-7,5,2}}; L6 int B[4][3]={{-1,7,9},{2,-8,6},{6,8,4},{8,9,-7}}; L7 int C[4][4]={0},i,j,k; L8 for(i=0;i<3;i++) L9 for(j=0;j<3;j++) L10 for(k=0;k<4;k++) L11 C[i][j]*=A[i][k]*B[k][j]; L12 for(i=0;i<3;i++) L13 {for(j=0;j<3;j++) L14 printf("%4d",C[j][i]); L15 printf(" ");} L16 getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

《计算机编程语言—C语言》第52卷:二维数组的定义及应用 - 知识点训练卷   湖南省计算机应用考纲百套卷
1
《计算机编程语言—C语言》第52卷:二维数组的定义及应用 - 知识点训练卷   湖南省计算机应用考纲百套卷
2
《计算机编程语言—C语言》第52卷:二维数组的定义及应用 - 知识点训练卷   湖南省计算机应用考纲百套卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。