//给定秒数换算成多少小时多少分钟多少秒
#include <stdio.h>
/*int main()
{
float h,m,s;
scanf("%f",&s);
h=s/3600;
s %=3600;
m=s/60;
s %=60;
printf("%fh %fm %fs ",h,m,s);
return 0;
}*/ 错误,floa,doublet定义的变量不能取余,因为它们定义的不是整数
/*int main()
{
float s;
scanf("%f",&s);
float h=s/3600;
s=(int)s%3600;
float m=s/60;
s=(int)s%60;
printf("%d %d %.2f ",(int)h,(int)m,s);
return 0;
}*/ 错误,并没有达到精确到小数点后2两位的目的,因为强制转换符使s=(int)s%60的s先取整数再取余,所以小数点后数字省略。因为s本身是用float定义的,所以即使使用了强制转换符,用%.2f仍旧能够输出正常数字。
int main() {
int seconds;
scanf("%d", &seconds);
int hours = seconds / 3600;
seconds %= 3600;
int minutes = seconds / 60;
seconds %= 60;
printf("%d %d %d\n", hours, minutes, seconds);
return 0;
} 正确,但是秒不精确
程序的进程是有序的,所以执行 int minutes = seconds / 60;时,这里的seconds已经是取余过后的一个新的数值(%=取余并赋值,a%=3600,a除以3600的余数并赋予a)