• 締切済み

C言語で困っています

C言語で 100:1 99:2 98:3 .......ループ 1:100とやりたいんですが このやりかたがわかりません goto文などを使うのでしょうか? 一応コードは #include <stdio.h> int main(void) { int i,a; for(i=100; i>=1; i--){ for(a=1; a<=100; a++){ printf("%d:\n",i); break; printf("%d",a); } } return 0; } です まったくこれだと右側が出力されなくてだめみたいです どなたかお知恵をください お願いします

みんなの回答

回答No.3

for(i=100; i>=1; i--){ } これだと i は 100 -> 99 -> 98 -> 97 -> .... --> 3 --> 2 --> 1 となってループを終了しますよね。 i=100 のとき 101-i の値は 1 (なぜなら 101-100 だから) i=99 のとき 101-i の値は 2 (なぜなら 101-99 だから) i=98 のとき 101-i の値は 3 (なぜなら 101-98 だから) i=97 のとき 101-i の値は 4 (なぜなら 101-97 だから) ... i=3 のとき 101-i の値は 98 (なぜなら 101-3 だから) i=2 のとき 101-i の値は 99 (なぜなら 101-2 だから) i=1 のとき 101-i の値は 100 (なぜなら 101-1 だから) printf("%d:%d\n", i, 101-i); ここで 100-i としてますが、これは i の値自体が増えたり減ったりしているわけではないのです。

gorajue
質問者

お礼

理解はできました そんな使い方があったとは勉強不足でした。 やさしいCなどで学んでいるんですが 回答者さんはどんな本で勉強していたんでしょうか? おすすめの本などがあったら教えて下さい

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

for文は1つで良いかと思います for ( i=100; i > 0; i++ ) {   printf( "%d:%d\n", i, 101-i ); } といった具合ですよ

回答No.1

何がやりたいのかよくわからないんですけど 100:1 99:2 98:3 ... 1:100 と表示したいだけなら for(i=100; i>=1; i--){ printf("%d:%d\n", i, 101-i); } これではダメなんでしょうか???

gorajue
質問者

補足

返答ありがとうございます printf("%d:%d\n", i, 101-i);なんですが 何故101-iなのかが良くわかりません。 -iなのにちゃんと繰り上がっていますが なんでちゃんと+されているんですか? 101-iの部分を詳しく教えて下さいお願いします