论C语言习题,然后是几点?

非常抱歉,拖更已久了!!!φ(* ̄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;
}

编程不仅仅是个工具,他是一门语言,一个人机交互时需要的语言。

所以,学习编程一定要经过大脑思考!!!

猜你喜欢

转载自blog.csdn.net/Issac_X10A/article/details/82222278