内容正文:
编写说明:《计算机应用考纲百套卷》依据湖南省《计算机应用类专业知识考试标准》编写,本套试卷共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();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$