

10個の数値を入力しながら表示するプログラムを作りたいのですが

[code]

    #include <stdio.h>
    int main(void)
    
    {
    int a[10],i;
    for(i=1;i<=10;i++)
    {
    scanf("%d",&a[i])
    printf("%d\n",a[i]);
    }
    return(0);
    
[/code]

となっているのですが、どこを訂正すればよいのでしょうか？  
教えていただけると嬉しいです。


CC BY-SA 4.0
2020-11-11T03:31:56.343
71856
2020-11-11T10:28:00.573
2020-11-11T10:28:00.573
32986
42681
question
c
10個の数値を入力しながら表示するプログラムを作りたい


> int a[10];

として宣言されている配列のアクセスできる範囲は、  
a[0] ～ a[9] までの１０個に限られます。

あなたのコードではこれに則っていませんね。


CC BY-SA 4.0
2020-11-11T04:04:16.883
71857
2020-11-11T04:04:16.883
27481
71856
answer


閉じ括弧 `}` が１つ不足しているのでそれを補ったならコンパイル・実行できるようになります。で、それ以外の問題点としては既にコメント/回答ある通り
`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()` はバッファリングを行う関係で１行で複数要素を読み取れてしまう  
\- １行につき１数値だけ読みたいなら違う方策が必要  
などなど「プログラマが勝手に期待しているのと違う動作」をする要因はいくつも思いつきます。「正しいプログラム」であっても「設計者の意図と違う動作をする」ことは普通にあり、あなたが気に入らない動作がどこなのかは説明してもらわないと一般論で終わってしまうでしょう。


CC BY-SA 4.0
2020-11-11T06:29:30.853
71864
2020-11-11T06:29:30.853
8589
71856
answer