
c
1 2 | 1 2 3 4 5 6 7 8 9 3---+------------------------ 4 1 | 1 2 3 4 5 6 7 8 9 5 2 | ・ ・ ・ ・ ・ ・ ・ 6 3 | ・ ・ ・ ・ ・ ・ ・ 7 4 | ・ ・ ・ ・ ・ ・ ・ 8 5 | ・ ・ ・ ・ ・ ・ ・ 9 6 | ・ ・ ・ ・ ・ ・ ・ 10 7 | ・ ・ ・ ・ ・ ・ ・ 11 8 | ・ ・ ・ ・ ・ ・ ・ 12 9 | ・ ・ ・ ・ ・ ・ ・ 13
このように縦にかけられる数を、横にかける数を表示し、、それを線で区切るプログラムを作る課題(本)なのですが、やり方がわかりません。ヒントをください。生意気ですが、答えは言わないでほしいです・・・
C
1 int x, y; 2 for(y = 1; y <= 9; y++) { 3 for(x = 1; x <= 9; x++) { 4 printf("%3d", x * y); 5 } 6 putchar('\n'); 7 }
ここで行き詰っています。線の出し方がわかりません。
みなさんありがとうございます!
素晴らしいヒントを参考にして自分なりに考えてみたところこんなコードになりました。
C
1int i, x, y; 2 3 for (i = 1; i <= 9*2; i++) { 4 if (i == 1) { 5 printf(" |%3d", i); 6 } else if (i <= 9) { 7 printf("%3d", i); 8 } 9 if (i == 9*2) { 10 printf("---\n"); 11 } else if (i == 9*2-9) { 12 printf("\n---+"); 13 } else if (i > 9){ 14 printf("---"); 15 } 16 } 17 18 for (y = 1; y <= 9; y++) { 19 printf("%2d |", y); 20 for (x = 1; x <= 9; x++) { 21 printf("%3d", x * y); 22 } 23 putchar('\n'); 24 }
これで、一応うまくいったのですが、無駄なことが多くて、改善の余地がある気がします。
最初の for文に if文が2つあることが無駄。
もう少しコンピューター的にできそう。といったところです・・・
本当に助かりましたありがとうございました!

回答7件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/12/19 02:33