gpt4 book ai didi

c - 求方阵的最大对角元素

转载 作者:行者123 更新时间:2023-11-30 14:43:40 24 4
gpt4 key购买 nike

我正在尝试找到最大值。方阵的对角元素(以 2x2 矩阵为例;假设 n = 2)。

我的逻辑基于将 [i][i][i + 1][i + 1] 进行比较(对角矩阵的第一个元素与下一个对角线元素)。

输入示例:

2

1 2 3 4

示例输出:

首先我们打印出完整的矩阵:

1 2

3 4

然后我们只打印对角元素:

对角元素:1 4

最大。对角矩阵元素:4206628 - 这是我不确定为什么会出现问题的地方。在本例中,最大对角线元素应为 4

#include <stdio.h>

int main()
{

int i, j, n, max = 0;

scanf("%d", &n);

int MAT[n][n];

for (i = 0; i < n; i++){
for (j = 0; j < n; j++){
scanf("%d", &MAT[i][j]);
}
}

for (i = 0; i < n; i++){
for (j = 0; j < n; j++){
printf("%d\t", MAT[i][j]);
}
printf("\n");
} printf("\n");

for (i = 0; i < n; i++){

printf("%d\t", MAT[i][i]);
printf("\n");


if (MAT[i][i] > MAT[i + 1][i + 1]){
max = MAT[i][i];
} else max = MAT[i + 1][i + 1];

}

printf("\nMax. diagonal matrix element: %d", max);

return 0;
}

最佳答案

问题似乎来自于else max = MAT[i + 1][i + 1]。由于 MAT[i + 1][i + 1] 并不总是被定义(想象一下当 i = 1 时,你超出了数组长度),一个随机值是从内存中读出。我解决这个问题的方法是改变改变 max 值的条件。

if (MAT[i][i] > max) // replacing max when the current value is bigger
{
max = MAT[i][i];
}
// else not necessary

如果数组填充有负数,则使用此代码段将不起作用,因为 max 初始化为 0

关于c - 求方阵的最大对角元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53823827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com