1、数组(一)及答案解析(总分:40.00,做题时间:90 分钟)一、B选择题/B(总题数:22,分数:22.00)1.若有以下的说明和语句,则在执行 for语句后,*(*(pt+1)+2)表示的数组元素是_。 int t33,*pt3, k; for(k=0; k3 k+) ptk= j2;j+) printf(“%2d“,aij); printf(“/n“); 若运行时输入:1 2 3回车,则输出结果是_。(分数:1.00)A.产生错误信息B.1 0 2 0 0 0C.1 2 3 0 0 0D.1 0 2 0 3 010.以下叙述中,错误的是_。(分数:1.00)A.对于 double类型数组
2、,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数11.若有说明“int s34=0:”,则下面正确的叙述是_。(分数:1.00)A.只有元素 s00可得到初值 0B.此说明语句不正确C.数组 s中各元素都可得到初值,但其值不一定为 0D.数组 s中每个元素均可得到初值 012.以下正确的数组定义语句是_。(分数:1.00)A.int y14=1,2,3,4,5;B.float x3=1,2,3;C.long s23=
3、1,1,2,1,2,3;D.double t3=0);13.若已定义: int a=0,1,2,3,4,5,6,7,8,9,*p=a,i; 其中 0i9,则对 a数组元素不正确的引用是_。(分数:1.00)A.ap-aB.*( j=i;j+) printf(“%4c“,“); for(j=_;j4;j+) printf(“%4d“,numij); printf(“/n“); 若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是_。(分数:1.00)A.i-1B.iC.i+1D.4-i19.有以下程序 point(char*p) p+=3;
4、main() char b4=a,b,c,d,*p=b; point(p); printf(“%c/n“,*p); 程序运行后的输出结果是_。(分数:1.00)A.aB.bC.cD.d20.有以下程序 main() int x=1,3,5,7,2,4,6,0),i,j,k; for (i=o; i3; i+) for(j=2;j=i;j-) if(xj+1xj)k=xj; xj=x(j+1); xj+1=k; for(i=0;i3;i+) for(j=4;j7-i;j+) if(xjx(j+1) k=xj; xj=xj+1; xj+1=k; for (i=0;i8;i+) printf(“%d
5、“,xi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.75310246B.01234567C.76310462D.1357024621.有以下程序 #define N 20 fun(int a,int n,int m) int i,j; for(i=m;i=n;i-) ai+1=ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;i5;i+) printf(“%d“,ai); 程序运行后的输出结果是。(分数:1.00)A.10234B.12344C.12334D.1223422.有以下程
6、序 #include stdio.h main() int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL; *q=*(p+5); printf(“%d %d/n“,*p,*q); 程序运行后的输出结果是_。(分数:1.00)A.运行后报错B.6 6C.6 11D.5 10二、B填空题/B(总题数:9,分数:18.00)23.若有以下定义,则不移动指针 p,且通过指针 p引用值为 98的数组元素的表达式是 _。 int w10=23,54,10,33,47,98,72,80,61,*p=w;(分数:2.00)填空项 1:_24.以下程序运行后的输出结果是
7、_。 main() int p7=11,13,14,15,16,17,18; int i=0,j=0; while(i7 j+;while(j4); printf(“%d/n“,s); (分数:2.00)填空项 1:_28.下面程序的功能是:将一个 5行 5列矩阵(用二维数组表示)主次两条对角线上的元素依次赋值为1,2,3,4,5 和 5,4,3,2,1。空白处应填的是_。 main() int (a55,i; for(i=0;i=4;i+) _; _; (分数:2.00)填空项 1:_29.有如下程序 main() int a33=1,2,3,4,5,6,i,j,s=0; for(i=1;i
8、3;i+) for(j=0;j=i;j+)s+=aij; printf(“%d/n“,s); 该程序的输出结果是_。(分数:2.00)填空项 1:_30.以下程序中,fun()函数的功能是求 3行 4列二维数组每行元素中的最大值,请填空。 void fun(int,int,int(*)4,int*); main() int a34=12,41,36,28,19,33,15,27,3,27,19,1,b3,i; fun(3,4,a,b); for(i=0;i3;i+)printf(“%4d“,bi); printf(“/n“); void fun(int m,int n,int ar4,int
9、*br) int i,j,x; for(i=0;im;i+) x=ari0; for(j=0;jn;j+) if(xarij)x=arij; _=x; (分数:2.00)填空项 1:_31.以下程序中,函数 SumColumMin 的功能是:求出 M行 N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。 #define M 2 #define N 4 void SumColumMin(int aMN,int *sum) int i,j,k,s=0; for(i=0:iN;i+) k=0: for (j=1;jM;j+) if(akiaji k=j; s+=_
10、; _=s: main() int xMN=3,2,5,1,4,1,83,s; sumColumMin(_) printf(“%d/n“s): (分数:2.00)填空项 1:_数组(一)答案解析(总分:40.00,做题时间:90 分钟)一、B选择题/B(总题数:22,分数:22.00)1.若有以下的说明和语句,则在执行 for语句后,*(*(pt+1)+2)表示的数组元素是_。 int t33,*pt3, k; for(k=0; k3 k+) ptk= j2;j+) printf(“%2d“,aij); printf(“/n“); 若运行时输入:1 2 3回车,则输出结果是_。(分数:1.00
11、)A.产生错误信息B.1 0 2 0 0 0C.1 2 3 0 0 0D.1 0 2 0 3 0 解析:10.以下叙述中,错误的是_。(分数:1.00)A.对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出 B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数解析:11.若有说明“int s34=0:”,则下面正确的叙述是_。(分数:1.00)A.只有元素 s00可得到初值 0B.此说明语句不正确C.数组 s中各元素都可得到初值,但其值不一定为
12、 0D.数组 s中每个元素均可得到初值 0 解析:12.以下正确的数组定义语句是_。(分数:1.00)A.int y14=1,2,3,4,5;B.float x3=1,2,3;C.long s23=1,1,2,1,2,3;D.double t3=0); 解析:13.若已定义: int a=0,1,2,3,4,5,6,7,8,9,*p=a,i; 其中 0i9,则对 a数组元素不正确的引用是_。(分数:1.00)A.ap-aB.*( j=i;j+) printf(“%4c“,“); for(j=_;j4;j+) printf(“%4d“,numij); printf(“/n“); 若要按以下形式输
13、出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是_。(分数:1.00)A.i-1B.i C.i+1D.4-i解析:19.有以下程序 point(char*p) p+=3; main() char b4=a,b,c,d,*p=b; point(p); printf(“%c/n“,*p); 程序运行后的输出结果是_。(分数:1.00)A.a B.bC.cD.d解析:20.有以下程序 main() int x=1,3,5,7,2,4,6,0),i,j,k; for (i=o; i3; i+) for(j=2;j=i;j-) if(xj+1xj)k=xj; x
14、j=x(j+1); xj+1=k; for(i=0;i3;i+) for(j=4;j7-i;j+) if(xjx(j+1) k=xj; xj=xj+1; xj+1=k; for (i=0;i8;i+) printf(“%d“,xi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.75310246 B.01234567C.76310462D.13570246解析:21.有以下程序 #define N 20 fun(int a,int n,int m) int i,j; for(i=m;i=n;i-) ai+1=ai; main() int i,aN=1,2,3,4
15、,5,6,7,8,9,10; fun(a,2,9); for(i=0;i5;i+) printf(“%d“,ai); 程序运行后的输出结果是。(分数:1.00)A.10234B.12344C.12334 D.12234解析:22.有以下程序 #include stdio.h main() int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL; *q=*(p+5); printf(“%d %d/n“,*p,*q); 程序运行后的输出结果是_。(分数:1.00)A.运行后报错 B.6 6C.6 11D.5 10解析:二、B填空题/B(总题数:9,分数:18
16、.00)23.若有以下定义,则不移动指针 p,且通过指针 p引用值为 98的数组元素的表达式是 _。 int w10=23,54,10,33,47,98,72,80,61,*p=w;(分数:2.00)填空项 1:_ (正确答案:*(p+5)或 p5)解析:24.以下程序运行后的输出结果是_。 main() int p7=11,13,14,15,16,17,18; int i=0,j=0; while(i7 j+;while(j4); printf(“%d/n“,s); (分数:2.00)填空项 1:_ (正确答案:92)解析:28.下面程序的功能是:将一个 5行 5列矩阵(用二维数组表示)主次
17、两条对角线上的元素依次赋值为1,2,3,4,5 和 5,4,3,2,1。空白处应填的是_。 main() int (a55,i; for(i=0;i=4;i+) _; _; (分数:2.00)填空项 1:_ (正确答案:aii=i+1, ai4-i=5-i)解析:29.有如下程序 main() int a33=1,2,3,4,5,6,i,j,s=0; for(i=1;i3;i+) for(j=0;j=i;j+)s+=aij; printf(“%d/n“,s); 该程序的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:18)解析:30.以下程序中,fun()函数的功能是求 3行 4列
18、二维数组每行元素中的最大值,请填空。 void fun(int,int,int(*)4,int*); main() int a34=12,41,36,28,19,33,15,27,3,27,19,1,b3,i; fun(3,4,a,b); for(i=0;i3;i+)printf(“%4d“,bi); printf(“/n“); void fun(int m,int n,int ar4,int *br) int i,j,x; for(i=0;im;i+) x=ari0; for(j=0;jn;j+) if(xarij)x=arij; _=x; (分数:2.00)填空项 1:_ (正确答案:br
19、i)解析:31.以下程序中,函数 SumColumMin 的功能是:求出 M行 N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。 #define M 2 #define N 4 void SumColumMin(int aMN,int *sum) int i,j,k,s=0; for(i=0:iN;i+) k=0: for (j=1;jM;j+) if(akiaji k=j; s+=_; _=s: main() int xMN=3,2,5,1,4,1,83,s; sumColumMin(_) printf(“%d/n“s): (分数:2.00)填空项 1:_ (正确答案:aki, *sum , x,&s)解析: