该程序不适用于n> 9 ...当n是静态表达式时,它工作正常

时间:2013-12-27 16:26:26

标签: c arrays

如果我们取n> 9那么它就不会用arr [n]输入元素,其中n> 9。 如果n是常数,程序工作正常.. 程序中有什么不对。 请帮忙... 我遵守并使用mingw shell在Windows中运行它

/* Binary Search Program */

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


int main()
{
    int n,arr[n],i,j,temp;
    printf("Enter The number of elements in array : ");
    scanf("%d",&n);
    printf("Enter the %d elements of array :\n",n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }

    printf("The Unsorted array is :\n");
    for(i=0;i<n;i++)
    {
        printf("%d\n",arr[i]);
    }
    /* BOUBBLE SORTING */

    for(j=0;j<n-1;j++)
    {
        for(i=0;i<n-1-j;i++)
        {
            if(arr[i]>arr[i+1])
            {
                temp=arr[i+1];
                arr[i+1]=arr[i];
                arr[i]=temp;
            }
        }
    }
    printf("The sorted array is :\n");
    for(i=0;i<n;i++)
    {
        printf("%d\n",arr[i]);
    }

    return 0;
}

3 个答案:

答案 0 :(得分:6)

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

arr的大小具有不确定的值,因为n未初始化。

arr来电后声明scanf("%d",&n)

答案 1 :(得分:3)

您正在使用可变长度数组。在运行时编译器在输入n之前声明arr[n]时不知道n。输入arr后,您必须声明n

试试这个

int n,i,j,temp;
printf("Enter The number of elements in array : ");
scanf("%d",&n);
int arr[n];  

答案 2 :(得分:0)

在新块开头的scanf("%d",&n);下声明数组arr或使用n * sizeof(int)字节分配内存