gpt4 book ai didi

c - 简单 C 程序的奇怪输出以查找数组中最大的连续子数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:57 25 4
gpt4 key购买 nike

我是 C 的新手,我只是在玩,看看我是否可以重新创建一个简单的子数组添加程序(找到数组中最大的连续子数组)。我遇到了一个奇怪的问题,如果我将 n 定义为整数并将其用作我的 for 循环中的条件,我将得到绝对的垃圾。

请原谅这个奇怪的代码,我几乎只是复制并粘贴了一个我正在胡闹的文件(很多额外的 printfs 等)。如果我运行它,对于 for 循环中的每个 printf 调用,我都会得到“4196053”或类似的输出。即使在第一次 printf 调用中(在进入循环之前),它似乎也被搞砸了。

#include <stdio.h>

int maxI (int a, int b)
{
int max = (a >= b) ? a : b;
return max;
}


int main (void)
{
int array[] = { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5};
int n = 11;
int maxSoFar, i = 0;
int maxHere = 0;
printf ("%i\n", maxSoFar); //why is it screwing up here?

for (i = 0; i < n; i++) {
printf ("%i\n", maxSoFar);
maxHere = maxI(maxHere + array[i], 0);
maxSoFar = maxI(maxSoFar, maxHere);
}
printf ("The max is %i.\n", maxSoFar);
return 0;
}

如果我只是在条件中使用 11 而不是变量,它就可以正常工作。有人知道这里发生了什么吗?

最佳答案

maxSoFar 有一些任意数据,所以你需要先初始化它

int maxSoFar = 0, i = 0;
^^Initialize to zero

关于c - 简单 C 程序的奇怪输出以查找数组中最大的连续子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626725/

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