数组练习试题和答案.docx

上传人:b****8 文档编号:28801290 上传时间:2023-07-19 格式:DOCX 页数:33 大小:25.86KB
下载 相关 举报
数组练习试题和答案.docx_第1页
第1页 / 共33页
数组练习试题和答案.docx_第2页
第2页 / 共33页
数组练习试题和答案.docx_第3页
第3页 / 共33页
数组练习试题和答案.docx_第4页
第4页 / 共33页
数组练习试题和答案.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

数组练习试题和答案.docx

《数组练习试题和答案.docx》由会员分享,可在线阅读,更多相关《数组练习试题和答案.docx(33页珍藏版)》请在冰豆网上搜索。

数组练习试题和答案.docx

数组练习试题和答案

第五章数组练习题及答案

一、选择题

1、判断字符串a和b是否相等,应当使用()

A、if(a==b)B、if(a=b)C、if(strcpy(a,b))D、if(strcmp(a,b))

2、以下正确的定义语句是()

A、inta[1][4]={1,2,3,4,5};B、floatx[3][]={{1},{2},{3}};

C、longb[2][3]={{1},{1,2},{1,2,3}};D、doubley[][3]={0};

3、以下各组选项中,均能正确定义二维实型数组a的选项是()

A、floata[3][4];floata[][4];floata[3][]={{1},{0}};

B、floata(3,4);floata[3][4];floata[][]={{0},{0}};

C、floata[3][4];staticfloata[][4]={{0},{0}};autofloata[][4]={{0},{0},{0}};

D、floata[3][4];floata[3][];floata[][4];

4、下面程序的运行结果是()

1—5DDCBA6—10BDABB11—15CCCBC16—20DDCBB21—25BBAAA26—30DBDDB

#include"stdio.h"

main()

{charstr[]="SSSWLIA",c;

intk;

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、SW

5、下面程序段是输出两个字符串中对应相等的字符。

横线处应填入()

charx[]="programming";

chary[]="Fortran";

inti=0;

while(x[i]!

='\0'&&y[i]!

='\0')

if(x[i]==y[i])printf("%c",《1》);

elsei++;

A、x[i++]B、y[++i]C、x[i]D、y[i]

6、有下面的程序段,则()

chara[3],b[]="china";

a=b;

printf("%s",a);

A、运行后将输出ChinaB、运行后将输出Ch

C、运行后将输出ChiD、编译出错

7、下面程序的运行结果是()

main()

{charch[7]={"12ab56"};

inti,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、1

2

5

6

8、定义如下变量和数组:

则下面语句的输出结果是()

intk;

inta[3][3]={1,2,3,4,5,6,7,8,9,};

for(k=0;k<3;k++)

printf("%d",a[k][2-k]);

A、357B、369C、159D、147

9、下面程序段的运行结果是()

charc[5]={'a','b','\0','c','\0'};

printf("%s",c);

A、'a''b'B、abC、abcD、abc

10、若有说明:

inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()

A、2B、3C、4D、无确定值

11、下面程序的运行结果是()

main()

{inta[6],i;

for(i=1;i<6;i++)

{a[i]=9*(i-2+4*(i>3))%5;

printf("%2d",a[i]);

}

}

A、-40404B、-40403C、-40443D、-40440

12、下面程序的运行结果是()

main()

{inta[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、11111B、00001C、10000D、10001

11111000100100001010

11111001000010000100

11111010000001001010

11111100000000110001

13、下述对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、下面程序(每行程序前面的数字表示行号):

()

1main()

2{

3inta[3]={3*0};

4inti;

5for(i=0;i<3;i++)scanf("%d",&a[i]);

6for(i=1;i<3;i++)a[0]=a[0]+a[i];

7printf("%d\n",a[0]);

8}

A、第3行有错误B、第7行有错误C、第5行有错误D、没有错误

16、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。

横线处应填入()

main()

{chars[80],c1,c2='';

inti=0,num=0;

gets(s);

while(s[i]!

='\0')

{c1=s[i];

if(i==0)c2='';

elsec2=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、doublex[5]={2.0,4.0,6.0,8.0,1.0};B、inty[5]=}{0,1,2,3,4,5,6}

C、charc1[]={'1','2','3','4','5'};D、charc2[]={'\x10','\xa','\x8'};

21、调用函数时,若实参是一个数组名,则向函数对应的形参传送的是()

A、数组的长度  B、数组的首地址

C、数组第一个元素的值    D、整个数组元素的值

22、下面程序段的运行结果是()

chars[6];s=”abcd”;printf(“\”%s\”\n”,s);

A、“abcd”B、”abcd“C、\”abcd\”\nD、编译出错

23、(多项选择)以下不能对二维数组a进行正确初始化的语句是()

  A、inta[2][]={{1,0,1},{5,2,3}};  B、.inta[][3]={{1,2,3},{4,5,6}};

C、inta[2][4]={{1,2,3},{4,5},{6}}; D、inta[][3]={{1,0,1},{},{1,1}};

24、(多项选择)若有说明:

inta[3][4];则对a数组元素不能正确引用是()

A.a[2][4]  B、a[1,3]C、a[1+1][0]D、a

(2)

(1)

25、(多项选择)若有说明“staticinta[3][4]={0};”则下面正确的叙述是()

  A、只有元素:

a[0][0]可得到初值0B、此说明语句不正确

  C、数组a中各元素都可得到初值,但其值不一定为0  

D、数组a中每个元素均可得到初值0

26、 以下对一维整型数组的正确说明是()

A、inta

(1);  B、intn=10,a[n];

C、intn;scanf(“%d”,&n);inta[n];  D、#defineSIZE10inta[SIZE];

27、有以下程序,其输出结果是()

voidswap1(intc[])

{intt;

 t=c[0];c[0]=c[1];c[1]=t;

}

voidswap2(intc0,intc1)

{ intt;

  t=c0;c0=c1;c1=t;

}

main()

{inta[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、5353 B、5335C、3535 D、3553

28、以下程序执行后的输出结果是()

intf(intb[][4])

{inti,j,s=0;

 for(j=0;j<4;j++)

 { i=j;

if(i>2) i=3-j;

s+=b[i][j];

}

 returns;

}

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、12 B、11 C、18 D、16

29、执行下列程序后输出的结果是()

inta[3][3]={{1},{2},{3}};

intb[3][3]={1,2,3};

main()

{printf(″﹪d\n″,a[1][0]+b[0][0]);}

A、0B、1C、2D、3

30、以下程序运行后,输出结果是()

main()

{inty=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、1000  B、10010  C、00110  D、10100

二、填空题

1、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。

请填空。

(填空时数组元素请用数组表示方法)

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10};

intk,s,i;floatave;

for(k=s=i=0;i<10;i++)

{if(a[i]%2!

=0)《1》;

s+=《2》;k++;

}

if(k!

=0){ave=s/k;printf("%d,%f",k,ave);}

}

2、下面程序的运行结果是()

main()

{intnum_list[]={6,7,8,9};

intk,j,b,u=0,m=4,w;

w=m-1;

while(u<=w)

{j=num_list[u];

k=2;b=1;

while(k<=j/2&&b)b=j%++k;

if(b)printf("%d",num_list[u++]);

else{num_list[u]=num_list[w];num_list[w--]=j;}

}

}

3、下面程序的功能是将字符数组a[6]={'a','b','c','d','e','f'}变为a[6]={'f','a','b','c','d','e'}。

请填空。

(注:

填空时数组元素请用数组表示方法)

main()

{chart,a[6]={'a','b','c','d','e','f'};

inti;

《1》;

for(《2》;i>0;i--)a[i]=a[i-1];

a[0]=t;

for(i=0;i<=5;i++)printf("%c",a[i]);

}

4、下面程序的运行结果是()

main()

{inti;

chara[]="Time",b[]="Tom";

for(i=0;a[i]!

='\0'&&b[i]!

='\0';i++)

if(a[i]==b[i])

if(a[i]>='a'&&a[i]<='z')printf("%c",a[i]-32);

elseprintf("%c",a[i]+32);

elseprintf("*");

}

5、下面程序的运行结果是()

main()

{inti=1;n=3,j,k=3;

inta[5]={1,4,5};

while(i<=n&&k>a[i])i++;

for(j=n-1;j>=i;j--)a[j+1]=a[j];

a[i]=k;

for(i=0;i<=n;i++)printf("%2d,",a[i]);

}

6、当从键盘输入18并回车后,下面程序的运行结果是()

main()

{intx,y,i,a[8],j,u,v;

scanf("%d",&x);

y=x;i=0;

do

{u=y/2;a[i]=y%2;i++;y=u;

}while(y>=1);

for(j=i-1;j>=0;j--)printf("%d",a[j]);

}

7、下面程序的运行结果是()

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10};

intk,s,i;

floatave;

for(k=s=i=0;i<10;i++)

{if(a[i]%2==0)continue;

s+=a[i];k++;}

if(k!

=0){ave=s/k;printf("Thenumberis:

%d,Theaverageis:

%f\n",k,ave);}

}

8、若有以下输入(表示回车),则下面程序的运行结果是()

31232221130

main()

main()

{inta[4],x,i;

for(i=1;i<=3;i++)

a[i]=0;

scanf("%d",&x);

while(x>0)

{a[x]+=1;scanf("%d",&x);}

for(i=1;i<=3;i++)printf("a[%d]=%d,",i,a[i]);

}

9、当运行以下程序时,从键盘输入:

BOOK

CUT

GAME

PAGE表示回车),则下面程序的运行结果是()

#include"stdio.h"

#include"string.h"

main()

{inti;

charstr[10],temp[10]="Control";

for(i=0;i<4;i++)

{gets(str);

if(strcmp(temp,str)<0)strcpy(temp,str);

}

puts(temp);

}

10、当运行以下程序时,从键盘输入

girl

boy表示回车),则下面程序的运行结果是()

#include"stdio.h"

#include"string.h"

main()

{chara[2][80],t;

inti,j,m,n,le,max;

for(i=0;i<=1;i++)gets(a[i]);

t=a[0][0];

for(i=0;i<=1;i++)

{le=strlen(a[i]);

for(j=0;j<=le;i++)

if(a[i][j]>t){max=a[i][j];m=i;n=j;}

}

printf("%c%d%d\n",max,m,n);

}

11、下面程序的功能是在三个字符串中找出最小的。

请填空(注:

填空时请用数组元素表示方法)。

#include"stdio.h"

#include"string.h"

main()

{chars[20],str[3][20];

inti;

for(i=0;i<3;i++)gets(str[i]);

strcpy(s,(《1》)str[0]:

str[1]);

if(strcmp(str[2],s)<0)strcpy(s,str[2]);

printf("%s\n",《2》);

}

12、下面程序段的运行结果是()

charch[]="600";

inta,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++)s=10*s+ch[a]-'0';

printf("%d",s);

13、下面程序的运行结果是()

main()

{inta[3][3],i,j;

for(i=1;i<3;i++)

for(j=1;j<3;j++)a[i][j]=(i/j)*(j/i);

for(i=1;i<3;i++)

for(j=1;j<3;j++)printf("%d,",a[i][j]));

}

14、下面程序段将输出computer,请填空。

charc[]="It'sacomputer";

for(i=0;i<=《1》;i++)

printf("%c",c[i《2》]);

15、下面程序的运行结果是()

main()

{inta[9]={0,6,12,18,42,44,52,67,94};

intx=52,i,n=9,m;

i=n/2+1;m=n/2;

while(m!

=0)

{if(x

elseif(x>a[i]){i=i+m/2+1;m=m/2;}

elsebreak;

}

printf("%d",i);

}

三、判断题

1、有以下说明语句:

inta[10]={6,7,8,9,10};则将5个初值依次赋给a[1]至a[5]。

()

2、若有说明:

inta[][4]={0,0};则只有元素a[0][0]和a[0][1]可得到初值0。

()

3、inta[]={0};是对一维数组a进行正确初始化的语句。

()

4、有以下语句是正确的。

chars[10];s="China";()

5、若有说明:

inta[3][4]={0};则数组a中每个元素均可得到初值0。

()

6、floata[3,4];是对二维数组a的正确定义。

()

7、在C语言中,引用数组元素时,其数组下标的数据类型允许是整型常量或整型表达式。

()

8、以下是对一维整型数组a的正确定义:

intn;scanf("%d",&n);inta[n];()

9、若有定义:

inta[10];则a[10]是对a数组元素的正确引用。

()

10、若有以下定义:

staticinta[3][4];则数组a中各元素不能得到确定的值。

()

11、inta[][3]={{1,2},{3}};是能对二维数组a进行正确的初始化的语句。

()

12、有以下定义和语句:

chars1[10]="China";printf("%d",strlen(s1));输出结果为5。

()

四、程序填空

1、将一个数列头尾颠倒。

设该数列为1,3,5,7,9,11,13,15,17,19。

要求19,17,15,13,11,9,7,5,3,1次序存放并输出。

要求写一函数实现对包含任意个数据的颠倒处理。

voidf2(chara[],intn)

{inti,t;

for(《1》;i

{t=a[i];a[i]=a[n-i];a[n-i]=t;}

}

2、编写串连接函数strcat。

(注:

填空请用数组表示方法)

voidstrcat(chars1[],chars2[])

{inti,j;

for(i=0;《1》;i++);

for(j=0;《2》;j++)s1[i+j]=s2[j];

s1[i+j]=《3》

}

3、下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。

请填空。

(注:

填空请用数组表示方法)

main()

{inta[3]={5,9,19};

intb[5]={12,24,26,37,48};

intc[10],i=0,j=0,k=0;

while(i<3&&j<5)

if(a[i]>b[j]){《1》;k++;j++;}

else{《2》;k++;i++;}

while(i<3){《3》;i++;k++;}

while(j<5){《4》;k++;j++;}

}

4、用冒泡法进行排序函数如下,请填空。

voidbubble(inta[],intn)

{inti,j,t,temp;

for(《1》;i<=n-1;i++)

{t=n《2》;

for(j=0;j<=t-1;j++)

if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}

}

}

5、下面程序的功能是输入5个整数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1