質問: 10個の数値を入力しながら表示するプログラムを作りたいのですが ``` #include int main(void) { int a[10],i; for(i=1;i<=10;i++) { scanf("%d",&a[i]) printf("%d\n",a[i]); } return(0); ``` となっているのですが、どこを訂正すればよいのでしょうか? 教えていただけると嬉しいです。
回答: 閉じ括弧 `}` が1つ不足しているのでそれを補ったならコンパイル・実行できるようになります。で、それ以外の問題点としては既にコメント/回答ある通り `a[10]` という要素は存在しませんので `for (i=1; i<=10; i++)` を `for (i=0; i<10; i++)` にすれば「入力しながら表示する」は正しく達成できます。 ( `printf("a[%d]=%d\n", i, a[i]);` などのほうが混乱を招かないかもしれないです) が: - Visual Studio (っつか `MSVC`) では `scanf` に対して warning C4996 が発生する - 誤って非数値文字 (`a` とか `.` とか) を入力すると以下全部失敗する - `scanf()` はバッファリングを行う関係で1行で複数要素を読み取れてしまう - 1行につき1数値だけ読みたいなら違う方策が必要 などなど「プログラマが勝手に期待しているのと違う動作」をする要因はいくつも思いつきます。「正しいプログラム」であっても「設計者の意図と違う動作をする」ことは普通にあり、あなたが気に入らない動作がどこなのかは説明してもらわないと一般論で終わってしまうでしょう。