ここから本文です

#include <stdio.h> int main( void ) { int i, x, y; printf("¥n-----¥...

r15********さん

2013/4/319:17:43

#include <stdio.h>

int main( void )
{
int i, x, y;

printf("¥n-----¥n");
printf( "| |" );

for ( i = 1; i <= 9; i++ ) {
prin

tf( "%3d |", i );
}

printf( "¥n-------¥n" );

for ( x = 1; x <= 9; x++ ) {
printf( "%3d |", x );
for ( y = 1; y <= 9; y++ ) {
printf( "%3d", x*y );
}
printf( "¥n---¥n" );
}
return 0;
}

上記プログラムだと10×5や10×10の表にすると、毎回横の罫線を入力するので面倒です。
そこで、毎回自動で罫線をぴったり表の形にするには、どのようにプログラムをすればよろしいでしょうか。

お願いいたします。

閲覧数:
554
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

qwe********さん

2013/4/413:14:10

#include <stdio.h>
#define XX 9
#define YY 9

int main( void )
{
int x,y;

printf("\n-----\n");
printf("____|");

for(x=1;x<=XX;x++)printf("%3d |",x);
printf("\n---\n");

for(y=1;y<=YY;y++){
printf("%3d |",y);
for(x=1;x<=XX;x++)printf("%3d |",x*y);
printf("\n---\n");
}

return 0;
}

x*yが3桁に収まるのであれば、上記で対応出来ます。

質問した人からのコメント

2013/4/4 19:54:48

降参 参考になりました。
ありがとうございます。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tre********さん

2013/4/321:48:27

/*r1530nさん へ

こんな感じでどうでしょうか?

※知恵袋では、連続スペースが1つにまとめられてしまうので、
ずれているように見えますが、実際の出力は線がそろっています。

---------実行結果----------

+---+---+---+---+---+---+---+---+---+---+---+
| | 1| 2| 3| 4| 5| 6| 7| 8| 9| 10|
+---+---+---+---+---+---+---+---+---+---+---+
| 1| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10|
+---+---+---+---+---+---+---+---+---+---+---+
| 2| 2| 4| 6| 8| 10| 12| 14| 16| 18| 20|
+---+---+---+---+---+---+---+---+---+---+---+
| 3| 3| 6| 9| 12| 15| 18| 21| 24| 27| 30|
+---+---+---+---+---+---+---+---+---+---+---+
| 4| 4| 8| 12| 16| 20| 24| 28| 32| 36| 40|
+---+---+---+---+---+---+---+---+---+---+---+
| 5| 5| 10| 15| 20| 25| 30| 35| 40| 45| 50|
+---+---+---+---+---+---+---+---+---+---+---+
| 6| 6| 12| 18| 24| 30| 36| 42| 48| 54| 60|
+---+---+---+---+---+---+---+---+---+---+---+
| 7| 7| 14| 21| 28| 35| 42| 49| 56| 63| 70|
+---+---+---+---+---+---+---+---+---+---+---+
| 8| 8| 16| 24| 32| 40| 48| 56| 64| 72| 80|
+---+---+---+---+---+---+---+---+---+---+---+
| 9| 9| 18| 27| 36| 45| 54| 63| 72| 81| 90|
+---+---+---+---+---+---+---+---+---+---+---+
| 10| 10| 20| 30| 40| 50| 60| 70| 80| 90|100|
+---+---+---+---+---+---+---+---+---+---+---+

*/
#include <stdio.h>
#include <string.h>

void PutHorizontalLine(int n)
{
int i;
for(i = 0; i < n+1; i++){
printf("+---");
}
printf("+\n");
}

void PutHeader(int n)
{
int i;

PutHorizontalLine(n);

printf("|%3s",""); //知恵袋は連続スペースが1つにまとめられてしまうので、苦肉のコードになってます。
for(i = 1; i < n+1; i++){
printf("|%3d");
}
printf("|\n");

PutHorizontalLine(n);
}

int main( void )
{
int i, x, y;
int n = 10;//横軸の最大数(ここを変更する)
int m = 10;//縦軸の最大数(ここを変更する)

PutHeader(n);

for ( y = 1; y <= m; y++ ) {
printf( "|%3d", y );
for ( x = 1; x <= n; x++ ) {
printf( "|%3d", x*y );
}
printf( "|\n" );
PutHorizontalLine(n);
}

getchar();//コンソールウインドウが消えないように
return 0;
}

//以上です。m(_ _)m

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる