论程序设计Test,然后是几点?

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值