|  | 
 
5鱼币 
| 编程输入整数N(1<N<10),然后再输入N*N个整数(N阶矩阵)按顺序存放在一个N行N列的二维数组中。要求输出矩阵上三角元素的和、下三角元素的和(主对角线属于上三角和下三角共有元素)。 这是我写的答案,没有输出,麻烦看看是哪里出错了。
 #include <stdio.h>
 int main()
 {
 int n,i,j,shangsanjiao=0,xiasanjiao=0;
 scanf("%d",&n);
 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=0;j>=i;j++)
 {
 shangsanjiao+=a[i][j];
 }
 printf("%d %d",shangsanjiao,xiasanjiao);
 return 0;
 }
 
楼上的不对。
 您的代码在计算矩阵上三角部分的和时有一个错误。在计算上三角的循环中,您应该使用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之间。
 
 求最佳答案
  | 
 
最佳答案
查看完整内容 楼上的不对。
您的代码在计算矩阵上三角部分的和时有一个错误。在计算上三角的循环中,您应该使用for(j=i; j=i;j++)。因为上三角的部分是从主对角线(i == j)开始,到该行的最后一个元素(j < n)。让我们一起来修复这个问题:
现在,这段代码应该能够正确地计算出矩阵的上三角和下三角元素的和,并且打印出来。我还增加了一个检查,以确保输入的N的值在1和10之间。
求最佳答案 |