如:数组定义语句为:int i,j,a[2][3]={{1,2},{4}};
4.可以省略第一维的定义,但不能省略第二维的定义。 如:int a[ ][3]={1,2,3,4,5,6};
依次运行以上程序,比较这四种定义方式的不同之处。
(二)求一个4×4矩阵的主对角线元素之和,填空并运行程序。
编程提示: 1.定义一个4行4列的二维数组a。
2.可利用双重循环的嵌套为该二维数组的各个数组元素赋值,一般格式为: for(i=0; i<4; i++) for(j=0; j<4; j++) scanf(\
3.用循环求和,并注意矩阵对角上线元素的特征是:行下标和列下标相同。 4.输出对角线元素之和。
/* c7-3.c 求一个4×4矩阵的主对角线元素之和*/ #include \void main( )
{ int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,sum=0;
for(i=0; i<4; i++)
_____; /*把对角线元素的和放在变量sum中 */ printf(\ /*输出对角线元素的和*/ }
(三)打印出以下的杨辉三角(要求打印出10行) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1
编程提示:
1.杨辉三角的特点是:第1列和对角线上的元素为1,其它各元素的值都是上一行上一列元素和上一行前一列元素之和。
2.定义一个10×10的二维数组a。
3.先用一个单层循环为第一列和对角线上的元素赋值。如: for(i=0; i<10; i++) { a[i][i]=1;a[i][0]=1; } 4.再用一个双重循环嵌套为其它元素赋值。 for( ; i<10; i++)
30
for( ; ; j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; 想一想,划横线的地方应当填入什么内容?
5.计算之后再用一个双重循环嵌套输出杨辉三角。注意各层循环变量的初值和终值怎样确定。
(四)统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩。填空并运行程序。
/* c7-4.c 学生成绩处理 */ #include \void main( )
{ int stu[3][4],i,j,t[3]; float sum=0,a[3];
for(i=0; i<3; i++) /* 输入三个学生的4门课程考试成绩 */ for(j=0; j<4; j++)
scanf(\ for(i=0; i<3; i++) { t[i]=0;
for(j=0; j<4; j++)
{ sum+=stu[i][j]; /* sum存放三个学生的4门课程总成绩 */ t[i]+=stu[i][j]; /* t[i]存放第i个学生的4门课程成绩 */ }
printf(\输出第i个学生的总成绩 */ ;
printf(\存放第i个学生的4门课程平均成绩*/ }
printf(\}
(五)已知二维数组a中的元素为: 4 4 34 37 3 12 5 6 5
求二维数组a中的最大值和最小值。程序的输出应为:The max is: 37 The min is: 3
填空并运行程序。
/* c7-5.c 求二维数组中元素的最大值与最小值 */ #include \void main( )
{ int a[3][3]={4,4,34,37,3,12,5,6,5},i,j,max,min; max=a[0][0];
; for( i=0; i<3; i++) for( j=0; j<3; j++)
31
{ if ( max < a[i][j] ) max = a[i][j]; if ( min > a[i][j] ) min = a[i][j]; }
printf(\ printf(\ }
(六)以下程序是查找二维数组a的最大元素及其下标,填空并运行程序。 /* c7-6.c 求二维数组中元素的最大值及其下标 */ #include \void main() { int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};
int i,j,max,l,c; /* max存放最大值,l、c分别存放行和列的下标 */ max=a[0][0]; for(i=0; i<4; i++) for(j=0; j<4; j++)
相关推荐: