c语言,如何用scanf赋值给数组的个数n

#include<stdio.h>
main()
{
int n,i,j,temp;
int a[n];
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(j=1;j<=n-1;j++)
{ for (i=0;i<n-j;i++)
if (a[i]>a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
for(i=1;i<n+1;i++)
printf("%5d",a[i] );
printf("\n");
}
怎么用scanf赋值给n?

这个是不行的,c语言中,数组的大小必须明确给出,不能用变量,但是可以用指针
如int *a=(int *)malloc(sizeof(int)*n);
这样就动态的申请了一块大小为n的数组并赋值给了a
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-12
n必须为常量才能用a【n】,尽管有些时候编译器能通过 但是这样是不合规定的
相似回答