刻苦学习的菜鸟 2021-11-28 17:13 采纳率: 50%
浏览 14
已结题

自测对了,代码为什么越界?

题目描述
时间的表示方法有24小时制和12小时制,无论是哪种,都可以描述成"小时:分钟:秒钟"。现在给出一个24小时制的时间,请你将其转换成12小时制的时间,并输出。
输入格式
一个24小时制的时间
输出格式
一个12小时制的时间
样例输入
13:30:25
样例输出
01:30:25
样例说明
小时、分钟、秒钟的每个部分都由两位数字构成,不足两位的在前面补0.
数据范围
数据很友好,没有特殊的时间。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    char a[8];
    gets(a);
    if(a[1]<=50) puts(a);
    else {
        cout<<a[0]-49<<a[1]-50;
        for(int i=2;i<=strlen(a);i++) cout<<a[i];
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-11-28 17:20
    关注

    搞得太复杂了。可以用%d:%d:%d格式输入,用三个整数接收。修改只需要调整小时就可以了
    你代码中if(a[1]<=50) puts(a)是不对的。'0'的ASCII码是48,50都到2了

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int h,m,s;
        char c1,c2;
        cin>>h>>c1>>m>>c2>>s;
        if(h>=12)
            h-=12;
        cout<<setw(2)<<setfill('0')<<h<<c1<<setw(2)<<setfill('0')<<m<<c2<<setw(2)<<setfill('0')<<s;
        return 0;
    }
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 已采纳回答 11月28日
  • 创建了问题 11月28日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么