アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のプログラムは算数の九九を表示させるプログラムです。
 
#include <stdio.h>
int main()
{
int p, q;

for( p = 1 ; p <= 9 ; p++ ){
for( q = 1 ; q <= 9 ; q++ )
printf( " %2d", p * q );

printf( "\n" );
}

return 0;
}
 以上のプログラムの中に「printf( " %2d", p * q );」とあります。 
%2dは何を表しているのか分かりません?
 (マス目みたいに縦9行、横9列きれいにそろうのも不思議なのですが?
   これは次回の質問に回します。)
よろしくお願いいたします。

A 回答 (5件)

桁数指定をしています。

この場合は、10進数の整数を2桁分だけ表示します。
    • good
    • 1

> printf( " %2d", p * q );



pxqの計算結果を表示しています。
%2dは表示の書式で、%dで整数値を表示・%2dでは2文字分の幅で整数を表示となります。
九九の計算結果という事なので81=9x9が最大、最大の値で2桁で表示できる事から2桁で揃えて表示されているのだろうと思います。
    • good
    • 1

プログラムが動いているようですので、試してみればいいと思います。




 ・%2d
 ・%02d
 ・%d
 ・%4d
 ・%04d

上記5通りくらい試して出力を比較すれば、

> (マス目みたいに縦9行、横9列きれいにそろうのも不思議なのですが?
>   これは次回の質問に回します。)

この疑問の答えも出てくるでしょう。

どうでしょうか。

この回答への補足

 分かりやすいご解説ありがとうございました。

 以下試しました。
saijyo_739様のご解説の通りだと思います。
%2d
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
 %02d
01 02 03 04 05 06 07 08 09
02 04 06 08 10 12 14 16 18
03 06 09 12 15 18 21 24 27
04 08 12 16 20 24 28 32 36
05 10 15 20 25 30 35 40 45
06 12 18 24 30 36 42 48 54
07 14 21 28 35 42 49 56 63
08 16 24 32 40 48 56 64 72
09 18 27 36 45 54 63 72 81

%d
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

%4d
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

%04d
0001 0002 0003 0004 0005 0006 0007 0008 0009
0002 0004 0006 0008 0010 0012 0014 0016 0018
0003 0006 0009 0012 0015 0018 0021 0024 0027
0004 0008 0012 0016 0020 0024 0028 0032 0036
0005 0010 0015 0020 0025 0030 0035 0040 0045
0006 0012 0018 0024 0030 0036 0042 0048 0054
0007 0014 0021 0028 0035 0042 0049 0056 0063
0008 0016 0024 0032 0040 0048 0056 0064 0072
0009 0018 0027 0036 0045 0054 0063 0072 0081

補足日時:2011/08/04 04:57
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。
 %の意味をてっきり、÷→/と勘違いしていたところがあり、「書式指定文字」
とのことで、納得しました。C言語も実プログラムらしき面を少し実感しました、先が楽しみです^^

お礼日時:2011/08/04 05:08

キーワード「printf %2d」でGoogle検索して4番目にヒットするのがこちら。


http://www.geocities.jp/ky_webid/c/006.html
    • good
    • 0

%2dのところが、後のp*qの値に置き換わって出力される、というのは理解できてますね?


printfのマニュアルや解説を読んでください。%で始まる書式指定の方法が必ず載ってるはずです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!