题目:求3*3矩阵的主对角线和副对角线元素之和
#include<stdio.h>
int sumOfMainDiagonal(int arr[3][3]);
int sumOfViceDiagonal(int arr[3][3]);
int main() {
int arr[3][3] = {0};//初始化整个数组为0
printf("请初始化一个3*3的矩阵:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
scanf_s("%d", &arr[i][j]);
}
}
//打印这个矩阵
printf("以下是初始化完成的矩阵:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%2d", arr[i][j]);
}
printf("\n");
}
int sum_main = sumOfMainDiagonal(arr);
printf("这个矩阵的主对角线元素之和为:%d", sum_main);
int sum_vice = sumOfViceDiagonal(arr);
printf("这个矩阵的副对角线元素之和为:%d", sum_vice);
return 0;
}
/// <summary>
/// 计算3*3矩阵的主对角线元素之和
/// </summary>
/// <param name="arr">3*3二维数组</param>
/// <returns></returns>
int sumOfMainDiagonal(int arr[3][3]) {
int sum = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == j) {
sum += arr[i][j];
}
}
}
或者也可以这样做
//for (int i = 0; i < 3; i++) {
// sum += arr[i][i]; // 直接访问对角线上的元素
//}
return sum;
}
/// <summary>
/// 3*3矩阵副对角线元素之和
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
int sumOfViceDiagonal(int arr[3][3]) {
int sum = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
if (i + j == 2) {
sum += arr[i][j];
}
}
}
}