Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 排序程序停止工作,没有任何错误_C_Sorting - Fatal编程技术网

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

C 排序程序停止工作,没有任何错误,c,sorting,C,Sorting,我键入以下代码对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); pri

我键入以下代码对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 main()
{
int n,a[n],i,j,temp;
printf(“输入输入的数量。\n”);
scanf(“%d”和“&n”);
printf(“输入输入\n”);
对于(i=0;i而言,问题在于:

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”在此处使用时未初始化始终是错误的。

prog.cc:6:12:警告:变长数组是C99功能[-Wvla扩展]prog.cc:6:13:警告:变量“n”在此处使用时未初始化[-Wuninitialized]
欢迎使用Stackoverflow。首先,您应该修复您的程序,并始终听取编译器的警告(和注释)!。其次,这并不难,而且可以节省您的提问时间;)