You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言计算方阵对角线元素和差 样例输出结果异常排查

问题排查与修复方案

原代码存在的问题

  • 核心问题:变量r、c未初始化就被使用。代码中已经读取了方阵阶数n,但没有给代表行数的r和代表列数的c赋值,二者是内存中的随机垃圾值,导致后续数组定义、循环遍历的边界完全错误,无法正确读取元素和计算对角线和。
  • 潜在问题:调用abs函数需要引入<stdlib.h>头文件,部分编译器缺少该头文件会出现编译错误或计算异常。

修复后的代码

#include<stdio.h>
#include<stdlib.h> // 引入abs函数依赖的头文件
int main()
{
    int n,r,c,i,j;
    scanf("%d",&n);
    r = n; // 方阵行数等于阶数n
    c = n; // 方阵列数等于阶数n
    int ar[r][c],sumd1=0,sumd2=0;
    for( i=0; i<r; i++)
    {
        for(j=0; j<c ; j++)
        {
            scanf("%d",&ar[i][j]);
        }
    }
    for( i=0; i<r; i++)
    {
        for(j=0; j<c ; j++)
        {
            if(i == j)
                sumd1 = sumd1+ar[i][j];
            if(i ==  c-j-1)
                sumd2 = sumd2 + ar[i][j];
        }
    }
    printf("%d",abs(sumd1 - sumd2));
    return 0;
}

样例验证

输入给定测试用例:

3                   
11 2 4
4 5 6
10 8 -12

计算逻辑:

  • 左上到右下对角线元素和:11 + 5 + (-12) = 4
  • 右上到左下对角线元素和:4 + 5 + 10 = 19
  • 差值绝对值:|4 - 19| = 15,和预期输出一致。

内容的提问来源于stack exchange,提问作者Ch Divya sree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:09:02