#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列
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/cefc1e178a82b901c4e99dc9798da9773812ef80?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)