第六章数组一、选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。(0级)A)整型常量B)整型常量或整型表达式C)整型表达式D)任何类型的表达式2.以下对一维整型数组a的正确说明是。(0级)A)inta(10);B)intn=10,a[n];C)intn;scanf(“%d”,&n);inta[n];D)#defineSIZE10inta[SIZE];以下能对一维数组a进行正确初始化的语句是。(0级)A)inta[10]=(0,0,0,0,0);B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};4.不是给数组的第一个元素赋值的语句是。(0级)A)inta[2]={1};B)inta[2]={1*2};C)inta[2];scanf(“%d”,a);D)a[1]=1;5.下面程序的运行结果是。(1级)main(){inta[6],i;for(i=1;i6;i++){a[i]=9*(i-2+4*(i3))%5;printf(%2d,a[i]);}}A)-40404B)-40403C)-40443D)-404406.下列定义正确的是。(1级)A)staticinta[]={1,2,3,4,5}B)intb[]={2,5}C)inta(10)D)int4e[4]7.若有说明inta[][4]={0,0};则下列叙述不正确的是。(0级)A)数组a的每个元素都可以得到初值0B)二维数组a的第一维的大小为1C)因为对二维数组a的第二维大小的值除以初值个数的商为1,故数组a的行数为1D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值8.设有charstr[10],下列语句正确的是。(1级)A)scanf(%s,&str);B)printf(%c,str);C)printf(%s,str[0]);D)printf(%s,str);9.下列说法正确的是。(0级)A)在C语言中,可以使用动态内存分配技术定义元素个数可变的数组B)在C语言中,数组元素的个数可以不确定,允许随机变动C)在C语言中,数组元素的数据类型可以不一致D)在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数10.假设array是一个有10个元素的整型数组,则下列写法中正确的是。(1级)A)array[0]=10B)array=0C)array[10]=0D)array[-1]=011.执行以下程序段后,a的值是。(1级)staticinta[]={5,3,7,2,1,5,4,10};inta=0;k;for(k=0;k8;k+=2)a+=*(a+k);A)17B)27C)13D)有语法错误,无法确定12.分析下列程序main(){intn[3],i,j,k;for(i=0;i3;i++)n[i]=0;k=2;for(i=0;ik;i++)for(j=0;jk;j++)n[j]=n[i]+1;printf(%d\n,n[1]);}上述程序运行后,输出的结果是。(1级)A)2B)1C)0D)313.若有以下定义:inta[5]={5,4,,3,2,1};charb=‘a’,c,d,e;则下面表达式中数值为2的是。(02~03第一学期试题)A)a[3]B)a[e–c]C)a[d-b]D)a[e-b]14.下面几个字符串处理表达式中能用来把字符串str2连接到字符串str1后的一个是:。(01~02第二学期试题)A)strcat(str1,str2);B)strcat(str2,str1);C)strcpy(str1,str2);D)strcmp(str1,str2);15.设有两字符串“Beijing”、“China”分别存放在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为:。(03试题)A)strcpy(str1,str2);B)strcpy(str1,“China”);C)strcat(str1,“China”);D)strcat(“Beijing”,str2);16.若有二维数组a[m][n],则数组中a[I][j]之前的元素的个数为。(03试题)A)j*m+IB)I*n+jC)I*m+j+1D)I*n+j+117.若有如下定义:inta[3][3]={1,2,3,4,5,6,7,8,9},i;则下列语句的输出结果是:。(03试题)for(i=0;i=2;i++)printf(“%d”,a[i][2-i]);A)357B)369C)159D)14718.下列字符串赋值语句中,不能正确把字符串Cprogram赋给数组的语句是:。(往届试题)A)chara[]={‘C’,‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’};B)chara[10];strcpy(a2,“Cprogram”);C)chara[10];a=“Cprogram”;D)chara[10]={“Cprogram”};19.以下不能对二维数组a进行正确初始化的语句是。(04~05第二学期试题)A)inta[2][3]={0};B)inta[][3]={{1,2},{0}};C)inta[2][3]={{1,2},{3,4},{5,6}};D)inta[][3]={1,2,3,4,5,6};20.下面程序的运行结果是。(04~05第二学期试题)charc[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};printf(“%s”,c);}A)‘a’‘b’B)ab\0c\0C)abcD)ab21.判断字符串a和b是否相等,应当使用。(04~05第二学期试题)A)if(a==b)B)if(a=b)C)if(strcpy(a,b))D)if(strcmp(a,b))22.有字符数组a[80]和b[80],则正确的输出语句是。(04~05第二学期试题)A)puts(a,b);B)printf(“%s,%s”,a[],b[]);C)putchar(a,b);D)puts(a),puts(b);23.若有如下定义和语句:chars[12]=“abook!”;printf(“%d”,strlen(s));则输出结果是:。(往届试题)A)12B)10C)7D)624.以下能对二维数组a进行正确说明和初始化的语句是:。(往届试题)A)inta()(3)={(1,0,1),(2,4,5)};B)inta[2][]={{3,2,1},{5,6,7}};C)inta[][3]={{3,2,1},{5,6,7}};D)inta(2)()={(1,0,1),(2,4,5)};25.若有说明:inta[3][4]={0};则下面正确的叙述是:。(往届试题)A)只有元素a[0][0]可以得到初值0B)此说明语句不正确C)数组a中每个元素均可得到初值0D)数组a每个元素均可得到初值,但值不一定为0二、填空题1.数组名定名规则和变量名相同,遵循定名规则。(0级)2.对于一维数组的定义“类型说明符数组名[常量表达式]”,其中常量表达式可以包括和,不能包含。(0级)3.在C语言中,引用数组只能通过数组元素来实现,而不能通过整体引用来实现。(0级)4.在定义数组时对数组元素赋以初值,需要在数组的类型说明符前加关键字。(0级)5.如果要使一个内部数组在定义时每个元素初始化值为0,但不进行逐个赋值,将其说明成存储类型即可。6.C语言规定,只有定义为存储类型和存储类型的数组才能初始化。(0级)7.定义变量时,如果对数组元素全部赋初值,则数组长度。(0级)8.在C语言中,二维数组中元素排列的顺序是。(0级)9.对与数组a[m][n]来说,使用数组的某个元素时,行下标的最大值是,列下标的最大值是。(0级)10.在C语言中,将字符串作为处理。(0级)11.在C语言中,数组的首地址是。(0级)三、程序填空题1.以下程序可求出所有水仙花数(指3位正整数中各位数字立方和等于该数本身,如153=13+53+33),请填空。(往届试题)main(){intx,y,z,a[10],m,i=0;printf(“shuixianhuanshu:\n”);for(___(1)____;m1000;m++){x=m/100;y=____(2)____;z=m%10;if(m==x*x*x+y*y*y*y+z*z*z){____(3)_____;i++;}}for(x=0;xi;x++)printf(“%6d”,a[x]);}2.打印以下杨辉三角形.(要求打印出10行)(01~02第二学期试题)main(){inta[10][10],i,j;1for(i=0;i10;i++)11{__(1)______(2)___}121for(i=2;i10;i++)1331for(j=1;ji;j++)14641a[i][j]=___(3)___;………for(i=0;i10;i++){for(j=1;j=i;j++)printf(“%5d”,a[i][j]);printf(“\n”);}}3.用起泡法对十个数由大到小排序。(01~02第二学期试题)main(){inta[11],i,j,t;printf(“input10numbers:\n”);for(i=1;i11;i++)scanf(“%d”,&a[i]);printf(“\n”);for(j=1;j=9;j++)for(i=1;_(1)__;i++)if(__(2)___){___(3)___a[i]=a[i+1];__(4)__}printf(“thesortednumbers:\n”);for(i=1;i11;i++)printf(“%d”,a[i]);}4.下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素输出数组b。请填空。(往届试题)main(){inta[10],b[10],ifor(i=0;i10;i++)scanf(“%d”,&a[i]);for(i=1;____(1)___;i++)b[i]=____(2)_____;for(i=1;i10;i++){printf(“%3d”,b[i]);if(___(3)___)printf(“\n”);}}5.以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。请填空:(往届试题)main(){inta[3][4]={{7,5,-2,3},{1,0,-3,4},{6,8,0,2}};intb[3][4]={{5,-1,7,6},{-2,0,1,4},{2,0,8,6}};inti,j,c[3][4];for(i=0;i3;i++)for(j=0;j4;j++)c[i][j]=___(1)____;for(i=0;i3;i++){for(j=0;j4;j++)printf(“%3d”,c[i][j]);____(2)___;}}四、读程序写结果题1.下列程序的执行结果是。(1级)main(){inti,test,p[17],head;for(i=0;i16;i++)p[i]=i+1;p[16]=0;test=0;while(test!=p[test]){for(i=1;i3;i++){head=test;test=p[head];}p[head]=p[head];}printf(\n%5d,test);}2.下列程序的运行结果是。(01~02第二学期试题)main(){inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];inti,j;for(i=0;i3;i++)for(j=0;j4;j++)b[j][i]=a[i][j];for(i=0;i4;i++){for(j=0;j3;j++)printf(“%5d”,b[i][j]);printf(“\n”);}}3.下列程序的运行结果是。(01~02第二学期试题)main(){inta[21