• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:File Edit Options Buffers Tools C H)

九九の表示をwhile文で表示

このQ&Aのポイント
  • 九九の表示をwhile文で実行する際にエラーが発生する問題があります
  • a++の位置が適切でない可能性があります
  • エラーの原因を特定し、修正する方法を教えてください

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

  • ベストアンサー
回答No.4

巷では for() バージョンばかりなので、while() をやってみようということのようですが、a と b と c と printf() に手を加えると...縦と横が同じ出力結果となるこんな感じ。 http://karetta.jp/book-node/c-for-beginners/228245 結果としては、怪しげな c(?)をなくすと見通しが良くなりますよね。 # include<stdio.h> int main(void) { int a,b; // ← cを削除 printf("九九の表示(while文)\n"); a=1; while(a<=9){ printf("%dの段:",a); b=1; // ←初期化のため、ここに移動 while(b<=9) printf(" %2d",a*b++); // ← cを削除し、連続出力 printf("\n"); // ←連続出力もここまで a++; // ←内ループの後に加算のため、ここに移動 } return 0; }

longagodsg
質問者

お礼

forをつかわないでやってみようとのことでwhileに挑戦してみました おかげで解決しましたありがとうございました!

その他の回答 (3)

回答No.3

 「a++;」の位置もおかしいけど、aのループの中でbが初期化されていないのも問題です。  普通、こういうのはwhile文じゃなくfor文で作るものなのですが。for文で置き換えてみれば問題点は明らかになると思います。 (学校か何かの課題だったら、for文はまだやってないのかもしれませんが)

longagodsg
質問者

お礼

forをつかわないでやってみようとのことでwhileに挑戦してみました ありがとうございました

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>a++;をbの処理が終わった後実行したいのですが、bのwhile文終了 }のあとに置くと1の段で終了してしまいます^^; ステップ実行なりで追いかけられませんか? 終了しているのではなく、 「2の段」、「3の段」…としか表示されないのではないですか? printf("%d\n",c); が実行されるループの条件はなんでしたかね?

longagodsg
質問者

お礼

たしかに段の表示だけでした

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> a++;あたりの位置がおかしいと思うのですが そうですね。 ヒントとしては、printfを移動して、 c=a*b; printf("%d x %d = %d\n",a,b, c); /* ここに移動+変更 */ とすると、何が起っているか判ると思います。 期待する変化と実際の変化を見比べて、aが変化するべきときは何時か、を考えればわかると思います。

longagodsg
質問者

お礼

ありがとうございます a++;をbの処理が終わった後実行したいのですが、bのwhile文終了 }のあとに置くと1の段で終了してしまいます^^;

関連するQ&A