第五章数组练习题及答案一、选择题1、判断字符串a和b是否相等,应当使用()A、if(a==b)B、if(a=b)C、if(strcpy(a,b))D、if(strcmp(a,b))2、以下正确的定义语句是()A、int a[1][4]={1,2,3,4,5};B、float x[3][]={{1},{2},{3}};C、long b[2][3]={{1},{1,2},{1,2,3}};D、double y[][3]={0};3、以下各组选项中,均能正确定义二维实型数组a的选项是()A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}};B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}};C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}};D、float a[3][4]; float a[3][ ]; float a[ ][4];4、下面程序的运行结果是()1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB 21—25 BBAAA 26—30 DBDDB#include "stdio.h"main(){ char str[]="SSSWLIA",c;int k;for(k=2;((c=str[k])!='\0');k++){ switch(c){case 'I':++k;break;case 'L':continue;default:putchar(c);continue;}putchar('*');}}A、SSW*B、SW*C、SW*AD、SW5、下面程序段是输出两个字符串中对应相等的字符。
横线处应填入()char x[]="programming";char y[]="Fortran";int i=0;while(x[i]!='\0'&&y[i]!='\0')if(x[i]==y[i]) printf("%c",《1》);else i++;A、x[i++]B、y[++i]C、x[i]D、y[i]6、有下面的程序段,则()char a[3],b[]="china";a=b;printf("%s",a);A、运行后将输出ChinaB、运行后将输出ChC、运行后将输出ChiD、编译出错7、下面程序的运行结果是()main(){ char ch[7]={"12ab56"};int i,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}A、1B、1256C、12ab56D、12568、定义如下变量和数组:则下面语句的输出结果是()int k;int a[3][3]={1,2,3,4,5,6,7,8,9,};for(k=0;k<3;k++)printf("%d",a[k][2-k]);A、3 5 7B、3 6 9C、1 5 9D、1 4 79、下面程序段的运行结果是()char c[5]={'a','b','\0','c','\0'};printf("%s",c);A、'a''b'B、abC、ab cD、abc10、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()A、2B、3C、4D、无确定值11、下面程序的运行结果是(){ int a[6],i;for(i=1;i<6;i++){ a[i]=9*(i-2+4*(i>3))%5;printf("%2d",a[i]);}}A、-4 0 4 0 4B、-4 0 4 0 3C、-4 0 4 4 3D、-4 0 4 4 012、下面程序的运行结果是()main(){int a[6][6],i,j;for(i=1;i<6;i++)for(j=1;j<6;j++)a[i][j]=(i/j)*(j/i);for(i=1;i<6;i++){ for(j=1;j<6;j++)printf("%2d",a[i][j]);printf("\n");}}A、1 1 1 1 1B、0 0 0 0 1C、1 0 0 0 0D、1 0 0 0 11 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 01 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 01 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 01 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 113、下述对C语言字符数组的描述中错误的是()A、字符数组可以存放字符串。
B、字符数组的字符串可以整体输入、输出。
C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值。
D、不可以用关系运算符对字符数组中的字符串进行比较。
14、判断字符串s1是否大于字符串s2,应当使用()A、if(s1>s2)B、if(strcmp(s1,s2))C、if(strcmp(s2,s1)>0)D、if(strcmp(s1,s2)>0)15、下面程序(每行程序前面的数字表示行号):()1 main()3 int a[3]={3*0};4 int i;5 for(i=0;i<3;i++) scanf("%d",&a[i]);6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 printf("%d\n",a[0]);8 }A、第3行有错误B、第7行有错误C、第5行有错误D、没有错误16、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
横线处应填入()main(){char s[80],c1,c2=' ';int i=0,num=0;gets(s);while(s[i]!='\0'){c1=s[i];if(i==0) c2=' ';else c2=s[i-1];if(《1》) num++;i++;}printf("%d",num);}A、c1==' '&&c2==' 'B、c1!=' '&&c2==' 'C、c1==' '&&c2!=' 'D、c1!=' '&&c2!=' '17、有字符数组a[80]和b[80],则正确的输出语句是()A、puts(a,b);B、printf("%s,%s",a[],b[]);C、putchar(a,b);D、puts(a),puts(b);18、下面描述正确的是()A、两个字符串所包含的字符个数相同时,才能比较字符串。
B、字符个数多的字符串比字符个数少的字符串大.C、字符串“STOP ”与“STOP”相等。
D、字符串“That”小于字符串“The”19、有两个字符数组a、b,则以下正确的输入语句是()A、gets(a,b);B、scanf("%s%s",a,b);C、scanf("%s%s",&a,&b);D、gets("a"),gets("b");20、以下不正确的定义语句是()A、double x[5]={2.0,4.0,6.0,8.0,1.0};B、int y[5]=}{0,1,2,3,4,5,6}C、char c1[]={'1','2','3','4','5'};D、char c2[]={'\x10','\xa','\x8'};21、调用函数时,若实参是一个数组名,则向函数对应的形参传送的是()A、数组的长度B、数组的首地址C、数组第一个元素的值D、整个数组元素的值22、下面程序段的运行结果是()char s[6]; s=”abcd”; printf(“\”%s\”\n”,s);A、“abcd”B、”abcd “C、\”abcd\”\nD、编译出错23、(多项选择)以下不能对二维数组a进行正确初始化的语句是()A、int a[2][]={{1,0,1},{5,2,3}};B、.int a[][3]={{1,2,3},{4,5,6}};C、int a[2][4]={{1,2,3},{4,5},{6}};D、int a[][3]={{1,0,1},{},{1,1}};24、(多项选择)若有说明:int a[3][4];则对a数组元素不能正确引用是()A.a[2][4] B、a[1,3] C、a[1+1][0] D、a(2)(1)25、(多项选择)若有说明“static int a[3][4]={0};”则下面正确的叙述是()A、只有元素:a[0][0]可得到初值0B、此说明语句不正确C、数组a中各元素都可得到初值,但其值不一定为0D、数组a中每个元素均可得到初值026、以下对一维整型数组的正确说明是()A、int a(1);B、int n=10,a[n];C、int n;scanf(“%d”,&n);int a[n];D、#define SIZE 10 int a[SIZE];27、有以下程序,其输出结果是()void swap1(int c[]){ int t;t=c[0];c[0]=c[1];c[1]=t;}void swap2(int c0,int c1){ int t;t=c0;c0=c1;c1=t;}main( ){ int a[2]={3,5},b[2]={3,5};swap1(a); swap2(b[0],b[1]);printf(“%d%d %d %d\n”,a[0],a[1],b[0],b[1]);}A、5 3 5 3B、5 3 3 5C、3 5 3 5D、3 5 5 328、以下程序执行后的输出结果是()int f(int b[][4]){ int i,j,s=0;for(j=0;j<4;j++){ i=j;if(i>2) i=3-j;s+=b[i][j];}return s;}main( ){int [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、1629、执行下列程序后输出的结果是()int a[3][3]={{1},{2},{3}};int b[3][3]={1,2,3};main(){printf(″﹪d \ n″,a[1][0] + b[0][0]);}A、0B、1C、2D、330、以下程序运行后,输出结果是()main(){ int y=18,i=O,j,a[8];do { a[i]=y%2;i++;y=y/2;}while(y>=1);for(j=i-1;j>=0;j--)printf(“%d”,a[j]);printf(“\n”);}A、1000B、10010C、00110D、10100二、填空题1、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。