gpt4 book ai didi

c - 排序程序停止工作,没有任何错误

转载 作者:行者123 更新时间:2023-11-30 16:28:53 24 4
gpt4 key购买 nike

我输入了以下代码来对 int 数组的组件进行排序。它没有显示任何错误,但突然停止工作。该错误通常发生在输入 7-8 个输入后,这表明 program.exe 已停止工作。它有与代码相关的内容吗?

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

int main()
{
int n,a[n],i,j,temp;
printf("Enter number of inputs.\n");
scanf("%d",&n);
printf("Enter inputs\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("Numbers in descending order are:\n");
for(i=0;i<n;i++)
{
printf("%d\n",a[i]);
}
return 0;
}

最佳答案

问题出在这里:

int n, a[n], i, j, temp;

声明是按顺序完成的。如果您以更易读的方式(但等效形式)编写此内容,您将得到以下内容:

int n;
int a[n]; // here the variable n has not yet been initialized
// it contains an indeterminate value, and therefore the a array
// will have an indeterminate size and the program will have
// so called "undefined behaviour " (google that)
int i;
...

您应该像这样编写程序的开头:

int main()
{
int n,i,j,temp;
printf("Enter number of inputs.\n");
scanf("%d",&n);
int a[n]; // now n has a determinate value
printf("Enter inputs\n");

免责声明:为简洁起见,未进行任何错误检查。

始终在启用警告的情况下进行编译并听取它们。其中许多实际上是错误的。特别是警告此处使用变量'somevar'未初始化始终是一个错误。

关于c - 排序程序停止工作,没有任何错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52168801/

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