配列の添字はコンパイル時に決めないといけない(実行時にはもう変えられ ない)。
/* 間違っているプログラム */ #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]); ... }のようにします。