gpt4 book ai didi

c - 莫名其妙的段错误:11

转载 作者:行者123 更新时间:2023-11-30 18:29:39 26 4
gpt4 key购买 nike

我有下面的代码来实现最大子序列长度搜索。我无法检查程序是否正确,因为运行我的程序会产生段错误。

程序编译良好。

请告诉我我在这里做错了什么:

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>

int main()
{
int a[6]={1,-2,4,33,0,-6}; //THE ACTUAL SEQUENCE
int count_a[6]={1,1,1,1,1,1}; //ARRAY TO KEEP COUNT OF MAXIMUM LENGTHS FROM POINT OF VIEW OF EACH ELEMENT OF ARRAY A
int i=0;
int j=0;
int k=0;
for(k=1;k<6;k++)
{
j=k;
printf("k's value:%d\t",j); //JUST FOR TESTING
while(1)
{
if(a[i]<a[j])
{
if(count_a[j]<(1+count_a[i]))
{
count_a[j]=1+count_a[i];
}
}
if(j-1==1)
{
break;
}
else
{
i++;
}
}
i=0;
}


/* THIS IS FOR ME TO CHECK WHETHER THE LENGTH VALUES HAVE BEEN UPDATED IN THE COUNT_A ARRAY*/
for(k=0;k<6;k++)
{
printf("%d\t",count_a[k]);
}
return 0;
}

最佳答案

您遇到了无限循环。 j=k; 那么 while(1) 只能在 if(j-1==1) 时终止。在第一次迭代中,k 设置为 1,因此 j 也设置为 1。永远不会中断,因为 1-1!=1。您的 jwhile(1) 循环内永远不会改变。

i++ 始终是选项。当 i 变大时,它会尝试从数组 count_a[i] 外部读取,从而导致段错误。

关于c - 莫名其妙的段错误:11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35999297/

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