非常抱歉,拖更已久了!!!φ(* ̄0 ̄)φ(* ̄0 ̄)φ(* ̄0 ̄)φ(* ̄0 ̄)φ(* ̄0 ̄)φ(* ̄0 ̄)φ(* ̄0 ̄)φ(* ̄0 ̄)
进入正题,今天更一个C语言的习题:然后是几点?
可能光看着题,觉得,哎呀,这不挺简单的吗?无非就是加法嘛!!!
那么,假如输入起始的时间是1120、流逝的时间是110,二者一向加,加出来个1230!!!
好像也没什么不对啊,那就错了!!!!!!!!!
110是110分钟,一个小时50分钟。再加上11小时20分钟。。。。。。应该是1310才对啊!!!!!!!
所以,这个绝对不是什么但单纯的加法。
那么,开始分析题目吧!
1、在流逝时间大于0的前提下,如何让流逝时间在超过60的时候能转化为小时分钟的样式?
2、对于分钟讲,和在60内的加减可以不用考虑进位。但是,如果超过怎么办?
3、题中说了,流逝的时间可以是负数。那么,在流逝时间小于-60的前提下,是否有解决方法呢?
4、对于上述的结果,在采用24时进制的前提条件下,如果结果超过了2400怎么办?
5、基于第四问,超过2400却小于2500又应该怎样?不应该补“0”占位吗?
附源码:
#include <stdio.h>
int main()
{
int qs = 0;
int ls = 0;
int zz = 0;
int i = 0;
scanf("%d %d", &qs, &ls);
if (ls > 0)
{
int y1 = qs % 100;
int c1 = qs / 100;
int h1 = (y1 + ls);
for(i = 0; h1 >= 60;i++)
{
h1 -= 60;
}
zz = (c1 * 100) + (i * 100) + h1;
}
if ( ls < 0)
{
int y2 = qs % 100;
int c2 = qs / 100;
int h2 = (y2 + ls);
for(; h2 < 0;c2--)
{
h2 += 60;
}
zz = (c2 * 100) + h2;
}
if (zz > 2359)
{
if ((zz % 2400) >= 100)
{
zz = zz - 2400;
}
else
{
zz = zz - 2400;
printf("0%d",zz);
goto out;
}
}
printf("%d", zz);
out:
return 0;
}
编程不仅仅是个工具,他是一门语言,一个人机交互时需要的语言。
所以,学习编程一定要经过大脑思考!!!