配列の添字はコンパイル時に決めないといけない(実行時にはもう変えられ ない)。
/* 間違っているプログラム */
#include <stdio.h>
main()
{
double a[n];
int n;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%lf", &a[i]);
....
}
のようなプログラムは駄目だということになる。このプログラムの修正の方法
は二通りあって、
#include <stdio.h>
#define MAXN 1000
main()
{
double a[MAXN];
int n;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%lf", &a[i]);
...
}
#include <stdio.h>
main()
{
double *a;
int n;
scanf("%d", &n);
if ((a = (double *)malloc(sizeof(double) * n)) == NULL) {
fprintf(stderr, "必要なメモリーが確保できませんでした\n");
exit(1);
}
for (i = 0; i < n; i++)
scanf("%lf", &a[i]);
...
}
のようにします。