第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*/ #include
double a[12]={1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5}; int i,j,k; double max,min; min=a[0]; for(i=0;i<12;i++) if(min>a[i]) min=a[i]; printf(\ max=a[0]; for(i=0;i<12;i++) if(max
if(i==j||j==k||k==i) continue; if(a[i]+a[j]==a[k])
printf(\ }
for(i=0;i<12;i++) for(j=0;j<12;j++) for(k=0;k<12;k++) {
if(i==j||j==k||k==i) continue; if(a[i]-a[j]==a[k])
printf(\ }
}
【习题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)int r[100]; (2)float s[100][100]; (3)int t[3][4][5];
(4)float q[6][5][4][3];
【习题5-4】说明下面各数组定义的含义,并指出对各数组元素所赋的值。 (1)float a[10]={3.,4.5,6.0,8.4,-32.8,3.2,56.0,4.5,2.3,1.5}; (2)int b[10]={3,5,0,12,34,7,8,9,41,88}; (3)float c[2][4]={1.,2.,3.,4.,5.,6.,7.,8.}; (4)int d[3][3]={{1,2,3},{4,5,6},{7,8,9}}; (5)int e[ ][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 答案:
float 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}; int a[3][3]={1,2,3,4,5,6,7,8,9};
float 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}; 【习题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*/ #include
int a[10][10]; int i,j,k; for(i=0;i<10;i++) for(j=0;j<10;j++) a[i][j]=i*10+j; printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) printf(\ printf(\ }
printf(\ printf(\ fori=0;i<10;i++) {
for(j=0;j<10;j++)
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(i==j)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(i+j==10-1)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(i<=j)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(j<10-i)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(i>=j)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(j>=9-i)
printf(\ else
printf(\ printf(\ }
printf(\}
【习题5-8】阅读、分析下列程序,并写出运行相应程序后的输出结果。
(1)#include \ void main()
{ static int a[10]={1,1,1,1,1,1,1,1,1,1}; int i,j;
for(i=0;i<10;i++) for(j=0;j