您好,欢迎访问三七文档
一、选择题(1)有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i9;i++)p[i]=i;for(i=0;i3;i++)printf(%d,a[1][i]);}程序运行后的输出结果是A)012B)123C)234D)345(2)有以下程序main(){inta[3][2]={0},(*ptr)[2],i,j;for(i=0;i2;i++){ptr=a+i;scanf(%d,ptr);ptr++;}for(i=0;i3;i++){for(j=0;j2;j++)printf(%2d,a[i][j]);printf(\n);}}若运行时输入:123回车,则输出结果为A)产生错误信息B)102000C)123000D)102030(3)有以下程序main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;for(i=0;i4;i++){for(j=1;j=i;j++)printf(%c,'');for(j=j4;j++)printf(%4d,num[i][j]);printf(\n);}}若要按以下形式输出数组右上半三角1234678111216则在程序下划线处应填入的是A)i-1B)iC)i+1D)4-i(4)以下能正确定义二维数组的是A)inta[][3];B)inta[][3]={2*3};C)inta[][3]={};D)inta[2][3]={{1},{2},{3,4}};(5)若有以下说明和语句,intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是A)p+1B)*(p+3)C)*(p+1)+3D)*(p[0]+2))(6)有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*p[0]+1)所代表的数组元素是A)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2](7)有以下程序intf(intb[][4]){inti,j,s=0;for(j=0;j4;j++){i=j;if(i2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};printf(“%d\n”,f(A));}执行后的输出结果是A)12B)11C)18D)16(8)以下不能正确定义二维数组的选项是A)inta[2][2]={{1},{2}};B)inta[][2]={1,2,3,4};C)inta[2][2]={{1},2,3};D)inta[2][]={{1,2},{3,4}};(9)若有定义:int*p[3];,则以下叙述中正确的是A)定义了一个基类型为int的指针变量p,该变量具有三个指针B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C)定义了一个名为*p的整型数组,该数组含有三个int类型元素D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素(10)有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i9;i++)p[i]=i+1;printf(%d\n,a[1][2]);}程序运行后的输出结果是A)3B)6C)9D)2(11)以下能正确定义数组并正确赋初值的语句是A)intN=5,b[N][N];B)inta[1][2]={{1},{3}};C)intc[2][]={{1,2},{3,4}};D)intd[3][2]={{1,2},{34}};(12)有以下程序main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i3;i++){printf(%d,m[k][i]);}}执行后输出结果是A)456B)258C)369D)789(13)有以下程序main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i3;i++)if(i2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf(%d\n,a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是A)7B)6C)8D)无确定值(14)有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0for(i=0;i4;i++)s+=aa[i][1];printf(“%d\n”,s);}程序运行后的输出结果是A)11B)19C)13D)20(15)若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+3(16)以下程序的输出结果是main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i3;i++)for(j=i;j=i;j++)t=t+b[i][b[j][j]];printf(%d\n,t);}A)3B)4C)1D)9(17)以下数组定义中不正确的是A)inta[2][3];B)intb[][3]={0,1,2,3};C)intc[100][100]={0};D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};(18)以下程序的输出结果是main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf(“%d%d%d%d\n”,a[0][3],a[1][2],a[2][1],a[3][0]);}A)0650B)1470C)5430D)输出值不定(19)以下程序的输出结果是A)1,5,9B)1,4,7C)3,5,7D)3,6,9main(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i3;i++)printf(“%d,”,x[i][2-i]);}(20)以下程序的输出结果是A)18B)19C)20D)21main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i3;i++)for(j=0;j=i;j++)s+=a[i][j];printf(“%dn”,s);}(21)若有以下的定义:intt[3][2];能正确表示t数组元素地址的表达式是A)&t[3][2]B)t[3]C)t[1]D)t[2](22)有如下程序main0{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i3;i++)for(j=0;ji;j++)s+=a[i][j]printf(“%d\n”,s);}该程序的输出结果是A)18B)19C)20D)21(23)下列程序执行后的输出结果是A)3B)6C)9D)随机数main(){inta[3][3],*p,i;p=&a[0][0];for(i=p;i9;i++)p[i]=i+1;printf(%d\n,a[1][2]);}(24)以下程序的输出结果是A)52B)51C)53D)97main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i4;i+=2)printf(%d,p[i]);}(25)若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是A)t[2][0]B)t[2][2]C)t[l][2]D)t[2][l]intt[3][3],*pt([3],k;for(k=0;k3;k++)pt[k]=&t[k][0];(26)以下程序的输出结果是A)14B)0C)6D)值不确定main(){intn[3][3],i,j;for(i=0;i3;i++)for(j=0;j3;j++)n[i][j]=i+j;for(i=0;i2;i++)for(j=0;j2;j++)n[i+1][j+1]+=n[i][j];printf(“%d\n”,n[i][j]);}(27)执行以下程序段后,m的值为inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));A)15B)14C)13D)12(28)若有以下定义和语句:intw[2][3],(*pw)[3];pw=w;则对w数组元素非法引用是A)*(w[0]+2)B)*(pw+1)[2]C)pw[0][0]D)*(pw[1]+2)(29)若有以下说明:intw[3][4]o={{0,1},{2,4},{5,8}};int(*p)[4]=w;则数值为4的表达式是A)*w[1]+1B)p++,*(p+1)C)w[2][2]D)p[1][1](30)若有以下的说明和语句:main(){intt[3][2],*pt[3],k;fpr(k=o;k3;k++)pt[k]=t[k];}则以一选项中能正确表示t数组元素地址的表达式是A)&t[3][2]B)*pt[0]C)*(pt+1)D)&pt[2](31)定义如下变题和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是for(i=0;i3;i++)printf(%d,x[i][2-1]);A)159B)147C)357D)369(32)设有以下定义:inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*prt)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是A)*((*prt+1)[2])B)*(*(p+5))C)(*prt+1)+2D)*(*(a+1)+2)(33)下面程序的输出是A)23B)26C)33D)36intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf(%d,*p);}}(34)下面程序的输出是A)60B)68C)99D)108main(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(*p)[4]=a,i,j,k=0;for(i=0;i3;i++)for(j=0;j2;j++)k=k+*(*(p+i)+j);printf(%d\n,k);}(35)若有以下说明和语句,请选出哪个是对c数组元素的正确引用intc[4][5],(*cp)[5];cp=c;A)cp+1B)*(cp+3)C)*(cp+1)+3D)*(*cp+2)(36)设有说明int(*ptr)[m];其中的标识符ptr是【36】。A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量二、填空题:(1)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。#defineN4voidrotate(inta[][N],intb[][N]){inti,j;for(i=0;iN;i++){b[i][N-1]=【1】;【2】=a[N-1][i];}}(2)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值.请填空.voidfun(int,int,int(*)[4],int*)main(){in
本文标题:二维数组与指针
链接地址:https://www.777doc.com/doc-2739221 .html