第 六 章 数组补充练习.docx

上传人:b****6 文档编号:7213816 上传时间:2023-01-21 格式:DOCX 页数:17 大小:22.32KB
下载 相关 举报
第 六 章 数组补充练习.docx_第1页
第1页 / 共17页
第 六 章 数组补充练习.docx_第2页
第2页 / 共17页
第 六 章 数组补充练习.docx_第3页
第3页 / 共17页
第 六 章 数组补充练习.docx_第4页
第4页 / 共17页
第 六 章 数组补充练习.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

第 六 章 数组补充练习.docx

《第 六 章 数组补充练习.docx》由会员分享,可在线阅读,更多相关《第 六 章 数组补充练习.docx(17页珍藏版)》请在冰豆网上搜索。

第 六 章 数组补充练习.docx

第六章数组补充练习

第六章数组

一、选择题:

1.在c语言中,一维数组的定义方式为:

类型说明符数组名(  )。

A.常量表达式B.整型表达式C.整型常量或整型表达式D.整型常量

2.以下对一维整型数组a的正确说明是    。

A.inta(10);B.intn=10,a[n];C.intn;D.#defineSIZE10

scanf(“%d”,&n);inta[SIZE];

inta[n];

3.在C语言中,引用数组元素时,其数组下标的数据类型允许是(  ).

A.整型常量或整型表达式B.整型常量

C.整型表达式D.任何类型的表达式

4.若有说明:

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

A.a[10]B.a[3.5]C.a(5)D.a[10-10]

5.以下能对一维数组a进行不正确初始化的语句是(   )

A.inta[]={0};B.inta[10]={0,0,0,0};

C.inta[10]={};D.inta[10]={10*1};

6.对以下说明语句的正确理解是    。

inta[10]={6,7,8,9,10};

A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]

C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确

7.下面程序    (每行程序前面的数字表示行号)。

1main()

2{

3floata[10]={0.0};

4inti;

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

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

7printf(“%f\n”,a[0]);

8}

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

8.下面程序中有错误的行是    (每行程序前面的数字表示行号)。

1main()

2{

3floata[3]={1};

4inti;

5scanf(“%d”,&a);

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

7printf(“a[0]=%d\n”,a[0]);

8}

A.3B.6C.7D.5

9.定义如下变量和数组:

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

10.下面程序的运行结果是    。

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

11.以下对二维数组a的正确说明是(  )。

A.doublea[1][4];B.inta[3][];C.floata(3,4);D.floata(3)(4);

12.若说明:

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

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

(2)

(1)

13.若有说明:

inta[3][4];则对a数组元素的非法引用是(   )

A.a[0][4]B.a[0][2*1]C.a[1][3]D.a[4-2][0]

14.若有说明:

inta[3][4];则下面正确的叙述是(   )。

A.数组a中每个元素均得到处置0B.只有元素a[0][0]可得到初值0

C.此说明语句不正确D.数组a中各元素都可得到初值,但其值不一定为0

15.若有说明:

inta[3][4];则数组a中的元素(   )

A.可在程序的编译阶段得到初值0B.可在程序的运行阶段得到初值0

C.不能得到确定的初值D.可在程序的编译或运行阶段得到初值0

16.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为(   )。

(假设a[0][0]位于数组的第一个位置上。

A.i*m+j+1B.i*m+jC.j*m+ID.i*m+j-1

17.以下能对二维数组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}};

18.以下不能对二维数组a进行不正确初始化的语句是    。

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};

19.若有说明:

inta[3][4]={0};则下面正确的叙述是    。

A.只有元素a[0][0]可得到初值0B.此说明语句不正确

C.数组a中各元素都可得到初值,但其值不一定为0D.数组a中每个元素均可得到初值0

20.若有说明:

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

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

二、填空题:

1.在C语言中,二维数组的定义方式为:

类型说明符数组名[【1】][【2】];

2.在c语言中,二维数组元素在内存中的存放顺序是(  )。

3.若有定义:

doublex[3][5];则x数组中行下标的下限为【1】,列下标的上限为【2】。

4.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:

()。

(假设a[0][0]位于数组的第一个位置上。

5.若有定义:

inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是【1】,a[2][1]得到的初值是【2】

三、阅读程序写结果

1.下面程序的运行结果是    。

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(“%3d”,a[i]);

}

2.下面程序的运行结果是    。

main()

{inta[10]={1,2,2,3,4,3,4,5,1,5};

intn=0,i,j,c,k;

for(i=0;i<10-n;i++)

{c=a[i];

for(j=i+1;j<10-n;j++)

if(a[j]==c)

{for(k=j;k<10-n;k++)

a[k]=a[k+1];

n++;

}

}

for(i=0;i<(10-n);i++)

printf(“%d”,a[i]);

printf(“\n”);

}

3.当从键盘输入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]);

}

4.以下程序的功能是    。

main()

{intnum[10]={10,1,-20,-203,-21,2,-2,-2,11,-21};

intsum=0,i;

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

{if(num[i]>0)

sum=num[i]+sum;

}

printf(“sum=%6d”,sum);

}

5.下面程序的运行结果是    。

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=(float)s/k;

printf(“Thenumberis:

%d.Theaverageis:

%f\n”,k,ave);

}

}

6.下面程序的运行结果是()。

main()

{inti,f[10];

f[0]=f[1]=1;

for(i=2;i<10;i++)

f[i]=f[i-2]+f[i-1];

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

{if(i%4==0)printf(“\n”);

printf(“%3d”,f[i];)

}

}

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

main()

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

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

while(ia[i])i++;

for(j=n-1;j>=i;j--)

a[j+1]=a[j];

a[i]=k;

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

printf(“%3d”,a[i]);

}

8.下面程序的运行结果是    。

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

{i=i-m/2-1;m=m/2;}

elseif(x>a[i])

{i=i+m/2+1;m=m/2;}

elsebreak;

}

printf(“Theindexis:

%d”,i);

}

9.下面程序的运行结果是    。

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”);

}

}

10.下面程序的运行结果是    。

main()

{inta[5][5],i,j,n=1;

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

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

a[i][j]=n++;

printf(“Theresultis:

\n”);

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

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

printf(“%4d”,a[i][j]);

printf(“\n”);

}

}

11.下面程序的运行结果是    。

main()

{inti,j,a[2][3]={{2,4,6},{8,10,12}};

printf(“Theoriginalarrayis:

\n”);

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

{for(j=0;j<3;j++)

printf(“%4d”,a[i][j]);

printf(“\n”);

}

printf(“\ntheresultis:

\n”);

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

{

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

printf(“%4d”,a[j][i]);

printf(“\n”);

}

}

12.下面程序的运行结果是    。

main()

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

inti,j;

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

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

a[4][j]+=a[i][j];

printf(“Theresultis:

\n”);

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

printf(“%3d”,a[4][i]);

}

13.下面程序的运行结果是    。

main()

{inti,j,row,col,min;

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

min=a[0][0];

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

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

if(a[i][j]

{min=a[i][j];row=i;col=j;}

printf(“min=%d,row=%d,col=%d\n”,min,row,col);

}

四、完善程序:

1.下面程序以每行4个数据的形式输出a数组,请填空。

#defineN20

main()

{inta[N],i;

for(i=0;i

for(i=0;i

{if(【2】)【3】

printf(“%3d”,a[i]);

}

printf(“\n”);

}

2.设数组a包括10个整型元素。

下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。

请填空。

main()

{inta[10],b[10],i;

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

scanf(“%d”,&a[i]);

for(【1】;i<10;i++)

【2】

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

{printf(“%3d”,b[i]);

if(【3】==0)printf(“\n”);

}

}

3.下面程序中数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素输出数组b。

请填空。

main()

{inta[10],b[10],i;

for(i=0;【1】;i++)

scanf(“%d”,&a[i]);

for(i=1;【2】;i++)

b[i]=a[i]-a[i-1];

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

{printf(“%3d”,b[i]);

if(【3】)printf(“\n”);

}

}

4.下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。

请填空。

main()

{inta[5],max,min,i,j,k;

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

scanf(“%d”,&a[i]);

min=a[0];

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

if(a[i]

max=a[0];

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

if(a[i]>max){max=a[i];【2】;}

【3】

printf(“\nThepositionofminis:

%3d\n”,k);

printf(“Thepositionofmaxis:

%3d\n”,j);

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

printf(“%5d”,a[i]);

}

5.下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一二维数组b中,并按矩阵形式输出a和b。

请填空。

例如:

arraya:

arrayb:

456645

123312

main()

{inta[2][3]={4,5,6,1,2,3},b[2][3];

inti,j;

printf(“arraya:

\n”);

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

{for(j=0;j<3;j++)

{printf(“%5d”,a[i][j]);

【1】;

}

printf(“\n”);

}

for(【2】;i++)b[i][0]=a[i][2];

printf(“arrayb:

\n”);

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

{for(j=0;j<3;j++)

printf(“%5d”,b[i][j]);

【3】;

}

}

6.设数组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\n”,k,ave);}

}

7.以下程序的功能是求数组num中小于零的数据之和。

请填空。

main()

{intnum[20]={10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,

-2,-234,-90,22,90,-45,20};

intsum=0,i;

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

{if(【1】)

sum=【2】;

}

printf(“sum=%6d”,sum);

}

8.以下程序可求出所有的水仙花数。

(提示:

所谓水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。

例如:

407=4×4×4+0×0×0+7×7×7,故407是一个水仙花数。

)请填空。

main()

{intx,y,z,a[8],m,i=0;

printf(“Thespecialnumbersare(inthearrangeof1000):

\n”);

for(【1】;m++)

{x=m/100;

y=【2】;

z=m%10;

if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)

{【3】;i++;}

}

for(x=0;x

printf(“%6d”,a[x]);

}

9.下面程序可求出矩阵a的主对角线上的元素之和。

请填空。

main()

{inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

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

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

if(【1】)sum=sum+【2】;

printf(“sum=%d\n”,sum);

}

10.下面程序可求出矩阵a的两条对角线上的元素之和。

请填空。

main()

{inta[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;

for(i=0;I<3;I++)

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

if(i==j)sum1=sum1+a[i][j];

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

for(【1】;【2】;j--)

if((i+j)==2)sum2=sum2+a[i][j];

printf(“sum1=%d,sum2=%d\n”,sum1,sum2);

}

11.以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。

请填空。

main()

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

intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};

inti,j,c[3][4];

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

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

c[i][j]=【1】;

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

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

printf(“%3d”,c[i][j]);

【2】;

}

}

五、编程

1.数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。

试编程。

2,若有说明:

inta[2][3]={{1,2,3},{4,5,6}};现要将a的行和列的元素互换后存到另一个二维数组b中。

试编程。

3.通过循环按行顺序为一个5*5的二维数组a赋1到25的自然数,然后输出初数组的左下半三角。

试编程。

 

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

当前位置:首页 > 高等教育 > 研究生入学考试

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

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