入力を受け付け、その数値を出力する以下のコードで出力結果が意図しないものになります。
以下にコードを書きます。
C
1#include<stdio.h> 2int main(void){ 3int a[20],i,j; 4/*入力受付部分*/ 5scanf("%d",&j); 6for(i=0;i<j;i++){ 7 scanf("%d",&a[i]); 8 } 9/*出力部分*/ 10for(i=0;i<j;i++){ 11 printf("\n%d",a[i]); 12 } 13}
こちらの意図すること
※ただ入力された数値を表示するだけのプログラムですが、意図的にfor文を使ったりしています。※
さて、自分の理解は
「1 1」という入力をした場合
j=1となり、入力部分のforループ内の処理は「i=0」「i<1」という条件より1回のみ実行される。
そして、この時点でi=0なのでa[0]に1が代入される。
そして、出力部分でもforループを使っていて、これも上記同様の条件により、ループ内処理が実行されるのは1回のみ。
そしてi=0という初期化をしているので、出力結果はa[i]すなわちa[0]の値なので、つまり1になるというものなのですが、
実際の出力結果は「326482」など、こちらが意図していたものとは違うものとなってしまいます。
この原因が検討もつきません。
また、出力部分のprintfを
printf("\n%d",a[i]);
から
printf("\n%d",a[0]);
に書き換えてみても同様です。
どなたか心当たりのある方は教えていただけますと助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/31 17:00
2018/08/31 17:15
2018/08/31 17:18
2018/08/31 17:41
2018/08/31 17:45