teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

入力部分のscanfの後ろのa[i]を&a[i]に修正しました

2018/08/31 17:01

投稿

gregolio122
gregolio122

スコア14

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
  /*入力受付部分*/
9
9
  scanf("%d",&j);
10
10
  for(i=0;i<j;i++){
11
- scanf("%d",a[i]);
11
+ scanf("%d",&a[i]);
12
12
  }
13
13
  /*出力部分*/
14
14
  for(i=0;i<j;i++){

3

こちらの意図すること の一部を修正しました

2018/08/31 17:01

投稿

gregolio122
gregolio122

スコア14

title CHANGED
File without changes
body CHANGED
@@ -18,15 +18,20 @@
18
18
  ```
19
19
 
20
20
  ### こちらの意図すること
21
- ただ入力された数値を表示するだけのプログラムに配列変数用いていたり、その配列要素数を20にしていたり、謎のループを用いていたりする部分には追求しないということで一つお願いいたします。
21
+ ただ入力された数値を表示するだけのプログラムですが、意図的for文使ったりしています。
22
22
 
23
23
  さて、自分の理解は
24
24
  「1 1」という入力をした場合
25
25
  j=1となり、入力部分のforループ内の処理は「i=0」「i<1」という条件より1回のみ実行される。
26
26
  そして、この時点でi=0なのでa[0]に1が代入される。
27
27
  そして、出力部分でもforループを使っていて、これも上記同様の条件により、ループ内処理が実行されるのは1回のみ。
28
- そしてi=0という初期化をしているので、出力結果はa[0]、つまり1になるというものなのですが、
28
+ そしてi=0という初期化をしているので、出力結果はa[i]すなわちa[0]の値なので**つまり1になる**というものなのですが、
29
29
  実際の出力結果は「326482」など、こちらが意図していたものとは違うものとなってしまいます。
30
30
  この原因が検討もつきません。
31
+ また、出力部分のprintfを
32
+ printf("\n%d",**a[i]**);
33
+ から
34
+ printf("\n%d",**a[0]**);
35
+ に書き換えてみても同様です。
31
36
 
32
37
  どなたか心当たりのある方は教えていただけますと助かります。

2

コードの修正と、こちらの意図することの一部文章の修正

2018/08/31 16:59

投稿

gregolio122
gregolio122

スコア14

title CHANGED
File without changes
body CHANGED
@@ -5,13 +5,14 @@
5
5
  #include<stdio.h>
6
6
  int main(void){
7
7
  int a[20],i,j;
8
+ /*入力受付部分*/
8
9
  scanf("%d",&j);
9
10
  for(i=0;i<j;i++){
10
11
  scanf("%d",a[i]);
11
12
  }
12
-
13
+ /*出力部分*/
13
14
  for(i=0;i<j;i++){
14
- printf("\n%d",a[0]);
15
+ printf("\n%d",a[i]);
15
16
  }
16
17
  }
17
18
  ```
@@ -21,10 +22,11 @@
21
22
 
22
23
  さて、自分の理解は
23
24
  「1 1」という入力をした場合
24
- j=1となり、forループ内の処理は「i=0」「i<1」という条件より1回のみ実行される。
25
+ j=1となり、入力部分のforループ内の処理は「i=0」「i<1」という条件より1回のみ実行される。
25
26
  そして、この時点でi=0なのでa[0]に1が代入される。
27
+ そして、出力部分でもforループを使っていて、これも上記同様の条件により、ループ内処理が実行されるのは1回のみ。
26
- ので、出力結果は1になるというものなのですが、
28
+ そしてi=0という初期化をしているので、出力結果はa[0]、つまり1になるというものなのですが、
27
- 実際の出力結果「326482」など、期待したものとは違うものとなってしまいます。
29
+ 実際の出力結果「326482」など、こちらが意図ていたものとは違うものとなってしまいます。
28
30
  この原因が検討もつきません。
29
31
 
30
32
  どなたか心当たりのある方は教えていただけますと助かります。

1

コードを書き間違えていたので修正しました

2018/08/31 16:53

投稿

gregolio122
gregolio122

スコア14

title CHANGED
File without changes
body CHANGED
@@ -6,10 +6,13 @@
6
6
  int main(void){
7
7
  int a[20],i,j;
8
8
  scanf("%d",&j);
9
- for(i=0;i<j,i++){
9
+ for(i=0;i<j;i++){
10
10
  scanf("%d",a[i]);
11
11
  }
12
+
13
+ for(i=0;i<j;i++){
12
- printf("\n%d",a[0]);
14
+ printf("\n%d",a[0]);
15
+ }
13
16
  }
14
17
  ```
15
18