• ベストアンサー

99表

以下99表のプログラムですが、 for文の所どういう、解読がされているか教えてください。 自分では、xとyが、一づつ増えているので、 1x1 2x2 3x3 4x4 . . . のような計算かとおもったのですが。 おねがいしましす。 #include <stdio.h> int main(void) { int x,y; for (x = 1;x <= 9;x++) { for (y = 1;y <= 9;y++) { printf(" %2d ", x * y); } printf("\n"); } return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • shippo
  • ベストアンサー率38% (1216/3175)
回答No.2

for文が入れ子になっているので、xとyの値は同時には増えません。 xの内側にyのfor文ですので、x=1のときにyが1~9まで増えて行き、次にxが1つ増えyがまた1~9まで増える。。。 というを繰り返します。 羅列すると、、、 x=1,y=1 x=1,y=2 x=1,y=3 . . . x=1,y=9 x=2,y=1 x=2,y=2 x=2,y=3 . . . x=9,y=7 x=9,Y=8 x=9,y=9 といった感じになります。

startover
質問者

お礼

すばやい回答ありがとうございます。 xの内側にyのfor文ですので、x=1のときにyが1~9まで増えて行き、次にxが1つ増えyがまた1~9まで増える。。。 こんがらかって、for文という事をわすれてますした。 すごくよく解りました。 ありがとうございました。

その他の回答 (3)

  • nerosuke
  • ベストアンサー率33% (39/115)
回答No.4

No3です。 補足です。 書き忘れましたが他の皆さんが回答してくれているみたいですね。 一応・・・ x=1×y=1 ... x=1×y=9 //これを9の段まで繰り返し 2×1 ... 2×9 3×1 ... 3×9 4×1 ... 4×9 5×1 ... 5×9 6×1 ... 6×9 7×1 ... 7×9 8×1 ... 8×9 9×1 ... 9×9

  • nerosuke
  • ベストアンサー率33% (39/115)
回答No.3

九九の表ですから、1の段から9の段まで表示しています。 1×1から9×9まで。 for (x = 1;x <= 9;x++) { //行を並べています 1×x ~ 9×x まで すなわち段です。(1の段 2の段・・・) for (y = 1;y <= 9;y++) { //列を並べています。 y×1 ~y×9 まで printf(" %2d ", x * y); } printf("\n"); // 改行してます。 } こんな感じです。 ちなみに普通は行にy 列にxを使いますから変数の使い方が逆です。 まあ間違いではないですが一般論です。

startover
質問者

お礼

ご回答ありがとうございます。 for (x = 1;x <= 9;x++) { //行を並べています  for (y = 1;y <= 9;y++) { //列を並べています。 なるほどそういう事だったんですね。 X,Yの使い方も教えて頂きありがとうございました。

  • okg00
  • ベストアンサー率39% (1322/3338)
回答No.1

for (x = 1;x <= 9;x++) { の意味は xを9回だけ{}の中をくり返すということです。 この例では二重になっていますので、 x=1{ y=1, ・・・ y=9} x=2{ y=1, ・・・ y=9} とxを変えながら9回くり返します。 結局、プリント文は9x9の81回くり返されます。

startover
質問者

お礼

すばやい回答ありがとうございます。 for (x = 1;x <= 9;x++) { の意味は xを9回だけ{}の中をくり返すということです。 なるほど、そういことだったんですね。 すっきり解りました。 ありがとうございました。

関連するQ&A