C语言时间转换问题

如题,输入秒钟数,输出转换后的时:分:秒,编写好之后语法没错误,但是时分不能转换,求解。
# include <stdio.h>

#define matrixing 60//将换算率定为60

int sm_matrixing(int seconds_fun);//声明“分秒转换函数”
int mh_matrixing(int minutes_fun);//声明“时分转换函数”

int main(void)
{
int seconds = 0,minutes = 0,hours = 0;//定义“秒钟”,“分钟”,“时钟”

printf("请输入您要转换的秒钟数:\n");
scanf("%d",&seconds);

do//用do while,先执行一遍,在根据条件循环。因为秒钟有可能小于60
{
if(seconds >= matrixing)//秒钟大于60,执行转换
{
minutes = sm_matrixing(seconds);
seconds -= minutes * 60;//总秒钟数减去60*分钟数
}
if(minutes >= matrixing)//分钟大于60,执行转换
{
hours = mh_matrixing(minutes);
minutes -= hours * 60;//换算完的分钟数减去时钟数*60
}

printf("%02d:%02d:%02d",hours,minutes,seconds);
scanf("%d",&seconds);

}while(seconds >= matrixing);

return 0;
}

int sm_matrixing(int seconds_fun)//定义“分秒转换函数”
{
int minutes_fun = 0;//定义分钟

while(seconds_fun >= matrixing)//秒钟大于60,持续循环转换分秒
{
minutes_fun ++;//分钟+1
seconds_fun -= 60;//秒钟-60
}

return (minutes_fun);//返回计算后的分钟
}

int mh_matrixing(int minutes_fun)//定义“时分转换函数”
{
int hours_fun = 0;//定义时钟

while(hours_fun >= matrixing)//分钟大于60,循环转换时分
{
hours_fun ++;
minutes_fun -= 60;
}

return (hours_fun);//返回时钟
}

你写得太繁杂了

int m,s,h=0;
scanf("%d",&s);
m=s/60;
h=m/60;
printf("%d时%d分%d秒",h,m%60,s%60);//最后一句改了一下

追问

只是想练习一下函数,想知道怎么错了

追答

int mh_matrixing(int minutes_fun)//定义“时分转换函数”
{
int hours_fun = 0;//定义时钟

while(hours_fun >= matrixing)//分钟大于60,循环转换时分
{
hours_fun ++;
minutes_fun -= 60;
}

return (hours_fun);//返回时钟
}
这个函数有问题
函数进来后hours_fun=0; 再判断它>=60才循环,但是它不可以成立
应改为while(minutes_fun>=matrixing)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-31
你这算法不好。
我给你说个你自己改吧;
#define hours 3600
#define minutes 60

你输入的时间为second;
int hour=0,minute=0;
hour=second/3600;
minute=(second-hour*3600)/60;
second=second-second-hour*3600-minute*60;本回答被网友采纳
相似回答