编写一个C语言程序,计算5×5的矩阵的主对角线之和与次对角线之和并

编写一个C语言程序,计算5×5的矩阵的主对角线之和与次对角线之和并且输出此矩阵中的最大值和最小值。要求输出矩阵,并且输出最后结果。
例如:
矩阵为:

其主对角线之和为60,次对角线之和为60,最大值为24,最小值为0.

#include <stdio.h>

#define LEN 50 /*数组长度*/

/*录入矩阵内容*/ 
void inputMatrix (int matrix[LEN][LEN], int row, int col) {
int i,j;
printf ("请输入%d行%d列的矩阵:\n", row, col); 
for (i=0; i<row; i++) {
printf ("第%d行:", i+1);
for (j=0; j<col; j++) {
scanf ("%d", &matrix[i][j]);
}
}
putchar ('\n');
return 1;
}

/*打印矩阵内容*/ 
int printMatrix (int matrix[LEN][LEN], int row, int col) {
int i,j;
for (i=0; i<row; i++) {
for (j=0; j<col; j++) {
printf ("%d\t", matrix[i][j]);
}
putchar ('\n');
}
putchar ('\n');
return 1;
}

/*计算处理矩阵内容*/ 
int calcMatrix (int matrix[LEN][LEN], int row, int col) {
int mainDiagonalSum, diagonalSum, max, min;
int i,j;

if (row!=col) /*非正方形矩阵返回错误*/
return 0;

mainDiagonalSum = diagonalSum = 0;
max = min = matrix[0][0];

for (i=0; i<row; i++) {
for (j=0; j<col; j++) {
if (i==j) /*主对角线*/
mainDiagonalSum += matrix[i][j];
if (i+j==row-1) /*次对角线*/
diagonalSum += matrix[i][j];
if (matrix[i][j]>max) /*求最大值*/
max = matrix[i][j];
if (matrix[i][j]<min) /*求最小值*/
min = matrix[i][j];
}
}

printf ("主对角线之和:\t%d\n", mainDiagonalSum);
printf ("次对角线之和:\t%d\n", diagonalSum);
printf ("最大值:\t%d\n", max);
printf ("最小值:\t%d\n", min);
putchar ('\n');

return 1; 
}

int main (void) {
int matrix[LEN][LEN], row, col;

row = col = 5; /*定义矩阵行列数*/

inputMatrix (matrix, row, col); /*录入矩阵内容*/ 
printMatrix (matrix, row, col); /*打印矩阵内容*/
calcMatrix (matrix, row, col); /*计算处理矩阵内容*/

return 0;
}

运行结果

为了简便,以下运行示意将矩阵设为3行3列,上方源代码为题主要求的5行5列

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-03
Harry pointed out the