パソコン活用研究シリコンバレー(C、C++、の活用研究)

簡単な標準出力のプログラム(初級編)

(準備中)

------------------------------------summery-----------------------------------------------------
Very short programs with outputting to simple standard output (screen display).
簡単な標準出力への出力(画面表示)の超ショートプログラムの初級編です。
ごく基礎的なことは基礎編にまとめました。
-------------------------------------------------------------------------------------------------


秒から時間への変換
入力された整数値を、時間、分、秒に変換し hh:mm:ssの形式で出力する

入力値
t
tは0<=t<=86400

出力
hh:mm:ss
hhは時間、mmは分、ssは秒
1ケタの数字の場合は0をパディングし 05のように表示する。


数値を文字列に変換して出力した例
整数値 s,mmod,h をsprintfで文字列ss,mm,hhに変換しています。
if文の中では、一桁だった場合に、ゼロパッディングする処理をしています。
sec2hh.c

#include <stdio.h> 
#include <string.h> 
int main(void){
    long t;
    int h,m,mmod,s;
    char hh[5],mm[5],ss[5];
    scanf("%d",&t);
    s=t % 60;
    m=t/60;
    mmod=m % 60;
    h=m/60;
  sprintf(ss,"%d",s); 
  sprintf(mm,"%d",mmod); 
  sprintf(hh,"%d",h); 
  if (strlen(ss)==1) { ss[2]='\0'; ss[1]=ss[0]; ss[0]='0';}
  if (strlen(mm)==1) { mm[2]='\0'; mm[1]=mm[0]; mm[0]='0';}
  if (strlen(hh)==1) { hh[2]='\0'; hh[1]=hh[0]; hh[0]='0';}  
  printf("%s:%s:%s\n", hh,mm,ss);
    return 0;
  }

sprintfの説明
int sprintf(char *str, const char *format, arg);
書式formatに従って変換した出力を文字列strに格納します。
数値を文字列に変換するのに使えます。
char *str 変換した出力を格納する文字列
const char *format 書式指定文字列 (書式指定文字列についてはprintfと変数の型を参照)
arg 引数。format(書式指定)の引数


c:\bcc55\Bin>sec2hh
653
00:10:53

c:\bcc55\Bin>sec2hh
3678
01:01:18

c:\bcc55\Bin>sec2hh
45769
12:42:49


printfのformat文で対応した例
format文で%02dと指定すると2ケタ整数で左にゼロパディングした表示になります。
詳しくはprintfと変数の型を参照

sec2hh2.c

#include <stdio.h>
#include <string.h>
int main(void){
    long t;
    int h,m,mmod,s;
    char hh[5],mm[5],ss[5];
    scanf("%d",&t);
    s=t % 60;
    m=t/60;
    mmod=m % 60;
    h=m/60;
  printf("%02d:%02d:%02d",h,mmod,s); 
    return 0;
}

c:\bcc55\Bin>sec2hh2
8
00:00:08
c:\bcc55\Bin>sec2hh2
549
00:09:09
c:\bcc55\Bin>sec2hh2
45769
12:42:49
c:\bcc55\Bin>







TopPage