【问题标题】:problem with matrix in c printing 0 at the summ of the diagonal elementsc中矩阵的问题在对角元素的夏天打印0
【发布时间】:2021-11-22 10:01:52
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#define col 3
#define row 3
#define MIN 200
#define MAX 600

int main()
{
int Matriz[col][row] = {0};
int i, j;
int choose;
int sum = 0;

for (i = 0; i < row; i++) // primeira matriz com valores randomicos
{
    for (j = 0; j < col; j++)
    {
        Matriz[row][col] = MIN + (rand() % (MAX - MIN + 1));
        printf("%5d", Matriz[row][col]);
    }
    printf("\n");
}

for (i = 0; i < row; i++)
{
    sum = sum + Matriz[i][i];
}
printf("%d", sum);
}

// 我的代码将对角线的总和打印为 0 这是我的问题,我做错了什么?很抱歉,我第一次使用 stackoverflow 也有点困惑

【问题讨论】:

    标签: arrays c matrix


    【解决方案1】:

    在您的代码中

    for (j = 0; j < col; j++)
    {
        Matriz[row][col] = MIN + (rand() % (MAX - MIN + 1));
        printf("%5d", Matriz[row][col]);
    }
    

    rowcol 不是计数器,请分别使用 ij

    此外,通过使用row (3) 和col (3) 作为索引,您就是off-by-one,因为C 使用基于0 的数组索引。因此,它会在您的代码中调用undefined behavior

    【讨论】:

    • 哦,谢谢,天哪,我怎么能错过那个 D:
    【解决方案2】:

    您只在矩阵中设置一个元素:

    Matriz[row][col] = ... 应该是Matriz[i][j] = ...

    【讨论】:

      猜你喜欢
      • 2020-01-29
      • 2018-05-18
      • 2015-07-21
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多