C语言 3×3数组矩阵求对角线之和

本文介绍了一个简单的C语言程序,用于计算3×3数组矩阵的对角线元素之和。通过双重循环遍历数组,实现对主对角线和副对角线元素的累加。

C语言 3×3数组矩阵求对角线之和

这是比较简单的一个数组,这个数组是自己输入数据。因为数组列下标和行下标都是从0开始,所以循环从行下标开始遍历,在循环里进行列遍历,然后进行二维数组的加法

#include<stdio.h>
#include <stdlib.h>
void main()
{
    int a[3][3]={{1,2,3},{2,4,6},{3,6,9}};
    int m,n,sum;
    for(m=0;m<3;m++)
    {
        for(n=0;n<3;n++)
        sum=a[0][0]+a[0][2]+a[1][1]+a[2][0]+a[2][2];
    }
    printf("%d",sum);
	system("pause");
}

在C语言中,创建3*3数组计算对角之和有不同的情况,下面分别介绍主对角线、副对角线以及两条对角线之和的实现方法。 ### 主对角线之和 主对角线上的元素行号等于列号,即`i = j`。以下是计算主对角线元素之和的代码示例: ```c #include <stdio.h> int main() { int a[3][3], i, j, sum = 0; // 给二维数组元素 printf("请输入3*3矩阵元素:\n"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { scanf("%d", &a[i][j]); } } // 计算主对角线之和 for (i = 0; i < 3; i++) { sum = sum + a[i][i]; } printf("主对角线之和为:%d\n", sum); return 0; } ``` 上述代码通过双重循环从用户输入获取3*3矩阵元素,再使用单重循环计算主对角线元素之和,最后输出结果。其思路来源于将1~9九个自然数存入一个3×3的二维数组计算主对角线元素之和的分析与代码实现[^4]。 ### 副对角线之和对角线上的元素行号与列号之和等于矩阵的阶数减1(对于3*3矩阵,即`i + j = 2`)。以下是计算对角线元素之和的代码示例: ```c #include <stdio.h> int main() { int a[3][3], i, j, sum = 0; // 给二维数组元素 printf("请输入3*3矩阵元素:\n"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { scanf("%d", &a[i][j]); } } // 计算对角线之和 for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { if (i + j == 2) { sum += a[i][j]; } } } printf("副对角线之和为:%d\n", sum); return 0; } ``` 此代码同样先获取用户输入矩阵元素,然后通过双重循环判断元素是否在副对角线上,若是则累加到总中,最后输出对角线元素之和。参考了C语言实验中从左下角到右上角这条对角线上的元素之和的代码逻辑[^2]。 ### 两条对角线之和计算两条对角线之和,可结合上述两种情况。不过要注意,当矩阵阶数为奇数时,主、副对角线会有一个公共元素计算时会重复相加,需要减去该元素。以下是计算两条对角线之和的代码示例: ```c #include <stdio.h> int main() { int a[3][3], i, j, sum = 0; // 给二维数组元素 printf("请输入3*3矩阵元素:\n"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { scanf("%d", &a[i][j]); } } // 计算主对角线之和 for (i = 0; i < 3; i++) { sum = sum + a[i][i]; } // 计算对角线之和 for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { if (i + j == 2) { sum += a[i][j]; } } } // 减去重复元素矩阵阶数为奇数时) if (3 % 2 == 1) { sum -= a[1][1]; } printf("两条对角线之和为:%d\n", sum); return 0; } ``` 该代码先分别计算主、副对角线之和,再根据矩阵阶数判断是否有重复元素,若有则减去,最后输出两条对角线元素之和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值