第5章习题解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第5章数组【习题5-1】现有一实型一维数组A[12],其各元素值在内存中排列的顺序为:1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5,请按下列要求编写程序求答案。(1)数组中元素值最小的数组元素。(2)数组中元素值最大的数组元素。(3)数组中某数组元素值等于另外两个数组元素值之和的等式。(4)数组中某数组元素值等于另外两个数组元素值之差的等式。程序如下:/*c5_1.c*/#includestdio.hvoidmain(){doublea[12]={1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5};inti,j,k;doublemax,min;min=a[0];for(i=0;i12;i++)if(mina[i])min=a[i];printf(min=%lf\n,min);max=a[0];for(i=0;i12;i++)if(maxa[i])max=a[i];printf(max=%lf\n,max);for(i=0;i12;i++)for(j=0;j12;j++)for(k=0;k12;k++){if(i==j||j==k||k==i)continue;if(a[i]+a[j]==a[k])printf(%lf+%lf=%lf\n,a[i],a[j],a[k]);}for(i=0;i12;i++)for(j=0;j12;j++)for(k=0;k12;k++){if(i==j||j==k||k==i)continue;if(a[i]-a[j]==a[k])printf(%lf-%lf=%lf\n,a[i],a[j],a[k]);}}【习题5-2】现有一实型二维数组A[4][3],其各元素值在内存中排列的顺序为:4.0,28.0,15.5,−9.5,−23.0,8.0,56.0,2.0,28.0,7.0,6.2,5.0请按下列要求写出各题的答案。(1)数组中元素值最小的数组元素。(2)数组中元素值最大的数组元素。(3)数组中某数组元素值等于另外两个数组元素值之积的等式。(4)数组中某数组元素值等于另外两个数组元素值之商的等式。答案:(1)−23.0(2)56.0(3)(略)(4)(略)【习题5-3】完成下列各数组的数组说明语句。(1)定义一个有100个数组元素的整型一维数组r。(2)定义一个有100行100列的实型二维数组s。(3)定义一个整型三维数组t,第一维长度为3,第二维长度为4,第三维长度为5。(4)定义一个实型四维数组q,第一维长度为6,第二维长度为5,第三维长度为4,第四维长度为3。答案:(1)intr[100];(2)floats[100][100];(3)intt[3][4][5];(4)floatq[6][5][4][3];【习题5-4】说明下面各数组定义的含义,并指出对各数组元素所赋的值。(1)floata[10]={3.,4.5,6.0,8.4,-32.8,3.2,56.0,4.5,2.3,1.5};(2)intb[10]={3,5,0,12,34,7,8,9,41,88};(3)floatc[2][4]={1.,2.,3.,4.,5.,6.,7.,8.};(4)intd[3][3]={{1,2,3},{4,5,6},{7,8,9}};(5)inte[][4]={1,2,3,4,5,6,7,8,9,10,11,12};答案:(1)(略)(2)(略)(3)(略)(4)(略)(5)(略)【习题5-5】按下列要求完成对各数组的初始化数组语句。(1)实型一维数组A[12],其各元素值在内存中排列的顺序为:1.0,15.5,9.5,-23.0,8.4,66.5,7.1,22.0,54.5,-34.0,11.3,32.0(2)整型二维数组A[3][3],其各元素值在内存中排列的顺序为:1,2,3,4,5,6,7,8,9(3)实型三维数组A[2][3][2],其各元素值在内存中排列的顺序为:1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.0答案:floata[12]={1.0,15.5,9.5,-23.0,8.4,66.5,7.1,22.0,54.5,-34.0,11.3,32.0};inta[3][3]={1,2,3,4,5,6,7,8,9};floata[2][3][2]={1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.0};【习题5-6】用数组定义语句和scanf语句完成5.4题中各小题相应的功能。程序如下:/*c5_6.c*/(略)【习题5-7】有一整型二维数组a[10][10],按下列要求写出下列各题C语言程序段。(1)按行输出所有的数组元素。(2)按列输出所有的数组元素。(3)输出主对角线上的所有元素。(4)输出副对角线上的所有元素。(5)输出上三角阵(包含主对角线元素)的所有元素。(6)输出上三角阵(包含副对角线元素)的所有元素。(7)输出下三角阵(包含主对角线元素)的所有元素。(8)输出下三角阵(包含副对角线元素)的所有元素。程序如下:/*c5_7.c*/#includestdio.hvoidmain(){inta[10][10];inti,j,k;for(i=0;i10;i++)for(j=0;j10;j++)a[i][j]=i*10+j;printf(==1==\n);for(i=0;i10;i++){for(j=0;j10;j++)printf(%3d,a[i][j]);printf(\n);}printf(\n);printf(==2==\n);fori=0;i10;i++){for(j=0;j10;j++)printf(%3d,a[j][i]);printf(\n);}printf(\n);printf(==3==\n);for(i=0;i10;i++){for(j=0;j10;j++)if(i==j)printf(%3d,a[i][j]);elseprintf();printf(\n);}printf(\n);printf(==4==\n);for(i=0;i10;i++){for(j=0;j10;j++)if(i+j==10-1)printf(%3d,a[i][j]);elseprintf();printf(\n);}printf(\n);printf(==5==\n);for(i=0;i10;i++){for(j=0;j10;j++)if(i=j)printf(%3d,a[i][j]);elseprintf();printf(\n);}printf(\n);printf(==6==\n);for(i=0;i10;i++){for(j=0;j10;j++)if(j10-i)printf(%3d,a[i][j]);elseprintf();printf(\n);}printf(\n);printf(==7==\n);for(i=0;i10;i++){for(j=0;j10;j++)if(i=j)printf(%3d,a[i][j]);elseprintf();printf(\n);}printf(\n);printf(==8==\n);for(i=0;i10;i++){for(j=0;j10;j++)if(j=9-i)printf(%3d,a[i][j]);elseprintf();printf(\n);}printf(\n);}【习题5-8】阅读、分析下列程序,并写出运行相应程序后的输出结果。(1)#includestdio.hvoidmain(){staticinta[10]={1,1,1,1,1,1,1,1,1,1};inti,j;for(i=0;i10;i++)for(j=0;ji;j++)a[i]=a[i]+a[j];for(i=0;i10;i++)printf(%d\n,a[i]);}(2)#includestdio.hvoidmain(){staticinta[200];inti,j,n;for(i=0;i200;i++)a[i]=0;n=100;for(i=0;in;i++)for(j=0;jn;j++)a[j]=a[i]+1;printf(%d\n,a[n-1]);}(3)#includestdio.hvoidmain(){inta,b=0;staticintc[10]={1,2,3,4,5,6,7,8,9,0};for(a=0;a10;++a)if((c[a]%2)==0)b+=c[a];printf(%d,b);}(4)#includestdio.hvoidmain(){inta,b=0;staticintc[10]={1,2,3,4,5,6,7,8,9,0};for(a=0;a10;++a)if((a%2)==0)b+=c[a];printf(%d,b);}(5)#includestdio.hmain(){inta,b=0;intc[10]={1,2,3,4,5,6,7,8,9,0};for(a=0;a10;++a)b+=c[a];printf(%d,b);}(6)#includestdio.hintc[10]={1,2,3,4,5,6,7,8,9,0};voidmain(){inta,b=0;for(a=0;a10;++a)if((c[a]%2)==1)b+=c[a];printf(%d,b);}(1)结果:1248163264128256512(2)结果:199(3)结果:20(4)结果:25(5)结果:45(6)结果:25【习题5-9】编写一个程序,完成5.1题的要求。程序如下:/*c5_9.c*/#includestdio.hvoidmain(){doublea[12]={1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5};inti,j,k;doublemax,min;min=a[0];for(i=0;i12;i++)if(mina[i])min=a[i];printf(min=%lf\n,min);max=a[0];for(i=0;i12;i++)if(maxa[i])max=a[i];printf(max=%lf\n,max);for(i=0;i12;i++)for(j=0;j12;j++)for(k=0;k12;k++){if(i==j||j==k||k==i)continue;if(a[i]+a[j]==a[k])printf(%lf+%lf=%lf\n,a[i],a[j],a[k]);}for(i=0;i12;i++)for(j=0;j12;j++)for(k=0;k12;k++){if(i==j||j==k||k==i)continue;if(a[i]-a[j]==a[k])printf(%lf-%lf=%lf\n,a[i],a[j],a[k]);}}【习题5-10】编写一个程序,完成5.2题的要求。程序如下:/*c5_10.c*/(略)【习题5-11】对给定的整型一维数组a[100]赋值,要求给奇数下标值的元素赋负值,偶数下标值的元素赋正值。程序如下:/*c5_11.c*/#includestdio.hvoidmain(){inta[100];inti,j,k;for(i=0;i100;i++)if(i%2==1)a[i]=-1;elsea[i]=1;}【习题5-12】给整型二维数组b[3][4]输入12个数据,计算并输出数组中所有正数之和、所有负数之和。程序如下:/*c5_12a.c*/#includestdio.hvoidmain(){staticintb[3][4];inti,j,sum1=0,sum2=0;

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功