如果我们取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;
}
答案 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)
字节分配内存