|
发表于 2023-12-6 17:27:23
|
显示全部楼层
本楼为最佳答案
楼上的不对。
您的代码在计算矩阵上三角部分的和时有一个错误。在计算上三角的循环中,您应该使用for(j=i; j<n; j++)而不是 for(j=0;j>=i;j++)。因为上三角的部分是从主对角线(i == j)开始,到该行的最后一个元素(j < n)。让我们一起来修复这个问题:
- #include <stdio.h>
- int main() {
- int n, i, j, shangsanjiao = 0, xiasanjiao = 0;
- scanf("%d", &n);
- if (n <= 1 || n >= 10) {
- printf("N must be greater than 1 and less than 10.\n");
- return 1;
- }
- int a[n][n];
- for (i = 0; i < n; i++) {
- for (j = 0; j < n; j++) {
- scanf("%d", &a[i][j]);
- }
- }
- for (i = 0; i < n; i++) {
- for (j = 0; j <= i; j++) {
- xiasanjiao += a[i][j];
- }
- }
- for (i = 0; i < n; i++) {
- for (j = i; j < n; j++) { // 正确的上三角循环
- shangsanjiao += a[i][j];
- }
- }
- printf("%d %d\n", shangsanjiao, xiasanjiao);
- return 0;
- }
复制代码
现在,这段代码应该能够正确地计算出矩阵的上三角和下三角元素的和,并且打印出来。我还增加了一个检查,以确保输入的N的值在1和10之间。
求最佳答案 |
|