- ベストアンサー
C言語 for文を使った一例について
#include<stdio.h> main () { int i ; int j ; for(i = 0 ; i<5 ; i++){ /*行数の制御部*/ for(j = 0; j<(i+1) ; j++){ /* *の制御部*/ printf("*"); } printf("\n"); } return; } このプログラムを実行すると * ** *** **** ***** が表示されます。 for(j = 0; j<(i+1) ; j++){ ↑ printf("*");} ↑ 「*」の制御部となりますが、 何故「*」が1行目で1個表示されているのに 2行目では2個表示されているのですか? 行数と「*」は同じになると思われますが。 上記の質問の回答の程宜しくお願いします。
- みんなの回答 (15)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (14)
- rentahero
- ベストアンサー率53% (182/342)
回答No.15
- php504
- ベストアンサー率42% (926/2160)
回答No.14
- Ancient_ENG
- ベストアンサー率61% (11/18)
回答No.13
- Trick--o--
- ベストアンサー率20% (413/2034)
回答No.12
- Hayashi_Trek
- ベストアンサー率44% (366/818)
回答No.11
- gimmick
- ベストアンサー率49% (134/270)
回答No.10
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
回答No.9
- Hayashi_Trek
- ベストアンサー率44% (366/818)
回答No.8
- edomin
- ベストアンサー率32% (327/1003)
回答No.7
- gimmick
- ベストアンサー率49% (134/270)
回答No.6
- 1
- 2
補足
わかりやすい説明で、ほぼ理解することができました。 i i+1 j j<i+1 処理 --------------------------- 0 1 0 true *を表示 ←(1) 0 1 1 false for(j)を抜ける(そして改行) for(i)でiを++する。 1 2 0 true *を表示 ←(2) 1 2 1 true *を表示 1 2 2 false for(j)を抜ける(そして改行) ・ ・ ・ わからない点があるのですが、←矢印で 示している部分になります。 (1)では、初期値がi=0 , j=0なので *は一つだけ表示されるのはわかります。 (2)で、「1 2 0 true *を表示」の部分において j=0となっていますが、「0 1 1 false for(j)を抜ける」になるとjはインクリメントされ、 初期値が j=1となり、j=0にはならなく、*が表示されないと 思われます。 何故「0」があるのかを教えて頂けませんか。