编写一个变长数组的小程序。
C99之前,数组的长度要求是常量表达式,例如
int a[10];
或者用宏定义数组的长度
#define N 10
int a[N];
C99中引入了变长数组,即数组的长度也可以使用变量或含有变量的表达式。
int n;
scanf("%d",&n);
int a[n]; //C99 only
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
变长数组应用
从键盘输入一个整数n,然后输入n个整数,计算这n个整数的中位数。
#include <stdio.h>
#include <stdlib.h>
int comp(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
double Median(int a[],int n)
{
qsort(a,n,sizeof(int),comp);
if(n%2==1)
return a[n/2];
else
return (a[n/2-1]+a[n/2])/2.0;
}
int main()
{
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
double x=Median(a,n);
printf("%f\n",x);
return 0;
}