西工大noj(37)

37题-重温A+B(这道题对我最大的价值就是复习了对输入非法和输出溢出的判断以及相应的处理)

/*
 *题目:A和B都是由3个整数组成,分别表示时、分、秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时45分钟56秒
        输入数据每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒
        输出A+B,每个输出结果也是由时分秒3部分组成,同时分和秒的取值范围为0~59,每个输出占一行,并且所有的部分都可以用32位整数表示
 */

#include <iostream>
#include <math.h>

using namespace std;

int noj_037()
{
    int AH, AM, AS, BH, BM, BS;
    int hours = 0, minutes = 0, seconds = 0;
    cout << "请输入A和B的对应值:";
    cin >> AH >> AM >> AS >> BH >> BM >> BS;
    while (cin.fail())                              //判断输入溢出
    {
        cout << "A或B的小时数溢出,请重新输入:";
        cin.clear();                                //重置cin的错误标识
        cin.sync();                                 //清空输入流
        cin >> AH >> AM >> AS >> BH >> BM >> BS;
    }
    seconds = (AS + BS) % 60;
    minutes = ((AM + BM) + (AS + BS) / 60) % 60;
    hours = (AH + BH) + ((AM + BM) + (AS + BS) / 60) / 60;
    if (hours < AH || hours < BH)                   //判断输出是否溢出
    {
        cout << "输入的小时数过大,和溢出";
        return 0;
    }
    cout << hours << " " << minutes << " " << seconds;
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值