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

C语言矩阵对角线元素求和结果输出为0问题排查

代码问题定位与修复

核心错误点

  • 矩阵赋值索引错误:双重循环中你错误使用宏定义的row、col(固定值为3)作为数组下标,而非循环变量i、j。3x3数组的合法下标范围是0~2,Matriz[row][col]实际是访问Matriz[3][3],属于数组越界的未定义行为,你生成的随机值完全没有写入矩阵的合法位置,矩阵所有元素保留初始化的0值,因此主对角线求和结果为0。
  • 随机种子未初始化:rand()函数默认使用固定种子,每次运行程序生成的随机矩阵都会完全相同,若需要每次结果不同需手动设置随机种子。

修复后的完整代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 引入time头文件用于设置随机种子
#define col 3
#define row 3
#define MIN 200
#define MAX 600

int main()
{
    int Matriz[col][row] = {0};
    int i, j;
    int sum = 0;
    // 设置随机种子,保证每次运行生成不同随机数
    srand((unsigned int)time(NULL));

    for (i = 0; i < row; i++)
    {
        for (j = 0; j < col; j++)
        {
            // 修正索引为循环变量i、j
            Matriz[i][j] = MIN + (rand() % (MAX - MIN + 1));
            printf("%5d", Matriz[i][j]);
        }
        printf("\n");
    }

    for (i = 0; i < row; i++)
    {
        sum = sum + Matriz[i][i];
    }
    printf("主对角线元素和:%d", sum);
    return 0;
}

补充说明

如果不需要每次运行生成不同的随机矩阵,可以删除srand相关代码和time.h头文件引用,仅修正索引错误即可解决求和结果为0的问题。

内容的提问来源于stack exchange,提问作者user17038012

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:48:00