• 締切済み

C言語/プログラミング

秒を%d時間%d分%d秒に変換するプログラミングを教えてください。計算でちょっと積んでます... [現在のプログラミング] #include <stdio.h> void Time(int s) { int ans1, ans2; printf("秒を入力してください\n"); scanf_s("%d", &s); ans1 = s / 3600; ans2 = s / 60; printf("[計算結果]%d秒 = %d時間%d分%d秒\n", s, ans1, ans2); return 0; } int main(int s) { Time(0); return 0; }

みんなの回答

回答No.2

おまけ printf("[計算結果]%d秒 = %d時間%02d分%02d秒\n", sec,h,m,s); の方が綺麗かと。。 分と秒は、0~59なので、これを00~59と先頭を0で埋めた2桁の数字 とした方が、時計っぽい?感じにはなるでしょう。 同じように、n時間は、0~23なので、同じく%02dにしつつ つまり60*60*24で割った値を「day」として さらに増やせば、完璧でしょうね。 ↑これを求めるなら d=sec/(60*60*24); h=(sec/(60*60))%24; で、パーフェクト! 後は、プログラムを楽しんでください!。

dfuuyjhhh
質問者

お礼

ありがとうございました。助かりました。

回答No.1

例えば、秒が100秒だとします。 それを1分40秒にするなら、 s/60ではないです。 s%60 これは、60で割ったあまり(つまり40) という感じで、あまりを計上すれば解決です。 printf("[計算結果]%d秒 = %d時間%d分%d秒\n", s, ans1, ans2); %が4回ありますが、パラメタが3回なので、 実在しないans2のスタックの次が参照されてしまっています。 なので、 h=sec/3600; これはOK m=(sec/60)%60; ここでオーバーフローを考慮 s=sec%60; ここでオーバーフローを考慮 printf("[計算結果]%d秒 = %d時間%d分%d秒\n", sec,h,m,s); でどうですか? hやmやsは、業界の標準的な変数名です。 h=hour m=min s=secの略で、これが並ぶ時「時刻だね」と 他の人がわかるようにするために、この名称が多く使われます。

関連するQ&A