我在翁恺的C语言课程中遇到一个问题 希望各位能够帮我看一下
我写了个时间差程序 但是只有小时部分能够计算并且表达出来 但是分钟部分不能够正常显示 而是仍然显示小时的时间 我对此很不解
希望各位能够帮我观看一下哪里出现了问题 谢谢!
#include
int main()
{
int min;
int hour;
int MIN;
int HOUR;
printf("请输入你的时间:");
scanf_s("%d %d",&hour,&min);
printf("请输入对方时间:");
scanf_s("%d %d",&HOUR,&MIN );
int time = (((HOUR * 60) + MIN) - ((hour * 60) + min))/60;
int mins = time % 60;
printf("时间差位:%d小时%d分钟。\n",time,mins);
}
你用time%60
来计算分钟肯定不对的,time
是小时最多不会超过24,模60依然等于原来的值,改成这样:
#include <stdio.h>
int main()
{
int min;
int hour;
int MIN;
int HOUR;
printf("请输入你的时间:");
scanf_s("%d %d", &hour, &min);
printf("请输入对方时间:");
scanf_s("%d %d", &HOUR, &MIN);
int time = (((HOUR * 60) + MIN) - ((hour * 60) + min)) / 60;
int mins = (((HOUR * 60) + MIN) - ((hour * 60) + min)) % 60;
printf("时间差位:%d小时%d分钟。\n", time, mins);
}
13行:因为time为int型,结果只保留了整数部分,也就是小时数。
14行:在用time%60的时候。time只是一个小时数。
例如,13行:time=((360+40)-(260+30))/60=1;
14行:1%60=1;
应该取绝对值吧,分钟之差应该是求出总的分钟之差再对60求余。
#include <stdio.h>
#include <math.h>
int main()
{
int min;
int hour;
int MIN;
int HOUR;
printf("请输入你的时间:");
scanf("%d %d",&hour,&min);
printf("请输入对方时间:");
scanf("%d %d",&HOUR,&MIN);
int time_gap = abs((HOUR*60+MIN) - (hour * 60 + min)) / 60;
int mins = abs((HOUR*60+MIN) - (hour * 60 + min)) % 60;
printf("时间差位:%d小时%d分钟。\n",time_gap, mins);
}