• ベストアンサー

%3dについて

下記の実行例を参考に足りないコードを記述で書きプログラムを完成させよ。 <実行結果> 配列内容:10 22 34 60 54 <プログラム> #include<stdio.h> int main(void){ int num[]={10,22,34,60,54}; int i; printf("配列内容:"); ---------------------- -------------------- return(0); } こういう問題があって空欄の中に入る回答は for(i=o;i<5;i++){ printf("%3d",num[i]); } なんですが何故%dではなく、%3dなんでしょうか?? %3dはどういった場合に使うのでしょうか?? かなり基本的な質問ですいません。

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

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

%?d の時、(?>0) {? - 表示する数値の桁数}の個数だけ 現在のカーソル位置に半角スペースを表示してその次に数値を表示します。 ? - 表示する数値の桁数 が0以下のマイナスであれば通常表示です。 ですから %3d は、「10 22 34 60 54」は2桁なので 3-2=1 で1つの半角スペースの右に数値が表示されます。 %?.$d の時、(?>0,$>0) {? - (($ - 表示する数値の桁数)※+表示する数値の桁数)} の個数半角スペースを表示してその次に{$ - 表示する数値の桁数} の個数分“0”を表示しその次に、数値を表示します。 【※部分はいずれも 0以下なら0とし、表示時では表示されません】 ですから %5.2d であれば、 数値「1」の時「...01」 数値「12」の時「...12」 と表示されます。(. は半角スペース)

その他の回答 (3)

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

>%3dはどういった場合に使うのでしょうか?? printfなどの変換指定子について、 精度(最小フィールド幅)を指定する為に使用します。 最小フィールド幅とは、値を変換した結果の文字数が、 このフィールド幅より少ない場合、このフィールド幅を満たすまで左側(-フラグを指定した場合は右側)に(0フラグを指定しなければ)空白を詰めます。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

実行できる環境があればまず実行して見たほうが一目瞭然、百聞は一見にしかずです printf("%d",num[i]); printf("%3d",num[i]); printf("%5d",num[i]); とかいろいろやってみたらわかってきますよ

回答No.1

実行結果ですが、 配列内容:10 22 34 60 54  ではなく 配列内容: 10 22 34 60 54 になると思います。 %3dは、num[i]の中身を3文字右詰めで表示します。 従ってnum[i] = 10 のときは  △10 (△=半角スペース) となります。

関連するQ&A