谭浩强C程序设计习题6-3思考

Posted teamcolt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谭浩强C程序设计习题6-3思考相关的知识,希望对你有一定的参考价值。

  题目:求一个3×3的整数矩阵对角线元素总和。

  首先要考虑的是二维数组的对角线特征,从二维矩阵不难看出,一般二维矩阵会有两条对角线,一条从左上往右下,这里我称之为正对角线;另一条从左下往右上,这里我称之为反对角线(可能专业术语不是这样叫,下文的各种名词也不保证其专业性)。然后这里假定要求的二维矩阵都是正矩阵,即行列数量都是相等的矩阵。观察矩阵,可以看出,正对角线的元素行列位置都是相等的,即i==j;反对角线行列位置相加和为N-1。对于奇数矩阵,正反对角线在中心位置有一个元素重合,求和时要减去该元素,偶数矩阵则不需要。下面是代码:

 1 #include<stdio.h>
 2 #define N 3
 3 int main()
 4 {
 5     int i, j, sum1 = 0, sum2 = 0,sum = 0;
 6     int num[N][N] = { {1,2,3},{4,5,6},{7,8,9} };          //初始化二维数组
 7     /*求正对角线的和*/
 8     for(i = 0; i<N; i++)
 9         for (j = 0; j < N; j++)
10         {
11             if (i == j)                                  //正对角线的数二维下标相等
12                 sum1 += num[i][j];
13         }
14     /*求反对角线的和*/
15     for(i = 0; i<N; i++)
16         for (j = 0; j < N; j++)
17         {
18             if (j == N - i - 1)                          //反对角线的数二维下标和为N-1
19                 sum2 += num[i][j];
20         }
21     if (N % 2 == 1)
22         sum = sum1 + sum2 - num[N / 2][N / 2];           //如果行列个数为奇数,则总和多加了一个最中间的数,需要减去
23     else                                                 //如果行列个数为偶数,则总对角线的和是正反对角线的和相加 
24         sum = sum1 + sum2;
25     printf("二维数组:");
26     /*输出二维数组*/
27     for (i = 0; i < N; i++)
28     {
29         printf("
");
30         for (j = 0; j < N; j++)
31             printf("%d	", num[i][j]);
32     }
33     printf("
");
34     /*输出对角线总和*/
35     printf("的对角线和为:%d
", sum);
36     return 0;
37 }

  代码宏定义#define N 3是为了修改时方便把3×3矩阵拓展到其他矩阵来,虽然题目没作要求,但需要养成一个这样的良好习惯。

  下面来学习一下配套学习指导的做法:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a[3][3], sum = 0;
 5     int i, j;
 6     printf("enter data:
");
 7     for(i = 0; i<3; i++)
 8         for(j = 0; j<3; j++)
 9             scanf("%3d",&a[i][j];
10     for(i = 0; i<3; i++)
11         sum = sum + a[i][i];
12     printf("sum = %6d
",sum);
13     return 0;
14 }

  看完答案发现还是我想太多了。不过sum+=a[i][i]一重循环就行了,我怎么还要搞个二重循环出来,难受。

以上是关于谭浩强C程序设计习题6-3思考的主要内容,如果未能解决你的问题,请参考以下文章

谭浩强C程序设计习题6-5思考

谭浩强C程序设计习题6-2思考

谭浩强版C语言程序设计(第三版)课后习题完整答案附源码--高等教育出版社

谭浩强版C语言程序设计(第三版)课后习题完整答案附源码--高等教育出版社

请问谁有c语言程序设计(第二版)课后习题答案,谭浩强的

谭浩强版本C语言课后习题第四章