博客
关于我
C++走向远洋——27(项目三,时间类)
阅读量:527 次
发布时间:2019-03-08

本文共 1131 字,大约阅读时间需要 3 分钟。

在分析了上述C++代码后,我发现该代码实现了一个基本的时间类,主要包括时间的设置、显示、以及时间的加法操作。代码的大致结构和功能如下:

  • 类定义:定义了一个名为Time的类,包含四个成员函数:

    • set_time():用于从标准输入读取时间字符串并设置时间。
    • show_time():用于输出当前时间。
    • add_a_sec():用于向后添加一秒。
    • add_a_minute():用于向后添加一分钟。
    • add_a_hour():用于向后添加一小时。
  • 输入处理:在set_time()函数中,通过cout输出提示信息,提示用户输入时间格式为"hh:mm:ss"。然后通过while(1)循环读取用户输入,并使用cin逐个读取小时、分钟和秒的字符,并解析为整数。

  • 时间验证:在is_time()函数中,检查输入的小时、分钟和秒是否在有效范围内。如果输入超出范围,则返回false,否则返回true。

  • 时间加法操作

    • add_a_sec():向后添加一秒,如果秒数超过59,则将秒数置为0,并将分钟数加1。
    • add_a_minute():向后添加一分钟,如果分钟数超过59,则将分钟数置为0,并将小时数加1。
    • add_a_hour():向后添加一小时,如果小时数超过23,则将小时数置为0。
  • 主函数:在main()函数中,创建一个Time对象,调用set_time()函数设置时间,然后依次调用add_a_sec()add_a_minute()add_a_hour()函数,最后调用show_time()函数显示当前时间。

  • 通过以上分析,我发现代码的主要问题在于以下几个方面:

  • 输入处理逻辑有误:在set_time()函数中,使用while(1)循环读取输入,但输入语句和条件判断有可能出错。特别是,cin >> hour >> c1 >> minute >> c2 >> sec会导致小时、分钟、秒都被赋值为整数,可能会混淆用户输入的字符。

  • 逻辑错误:在is_time()函数中,检查条件写错了,h> 24应该是h >=24,但原代码中写成h> 24,这会导致所有24小时的时间都被拒绝。

  • 进位处理错误:在add_a_sec()函数中,秒数增加后,检查是否超过59,但没有正确处理进位到分钟。同样,add_a_minute()函数进位到小时的逻辑可能有问题。

  • 类名拼写错误:在Time::add_a_sec函数中,类名写成了time,这可能会导致编译错误。

  • 缺少必要的包含文件<iostream><string>等必要的C++标准库文件没有包含,可能导致编译错误。

  • 基于以上分析,我需要修正这些问题,确保代码能够正确运行,处理时间的增减,并且输入和输出都符合预期。

    转载地址:http://tdgnz.baihongyu.com/

    你可能感兴趣的文章
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示
    查看>>
    Openlayers中多图层遮挡时调整图层上下顺序
    查看>>
    Openlayers中实现地图上打点并显示图标和文字
    查看>>
    Openlayers中实现地图上添加一条红色直线
    查看>>
    Openlayers中将某个feature置于最上层
    查看>>
    Openlayers中点击地图获取坐标并输出
    查看>>
    Openlayers中设置定时绘制和清理直线图层
    查看>>
    Openlayers入门教程 --- 万字长篇
    查看>>
    Openlayers各组件默认的css样式
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>
    VM16+ubuntu20.04+win10如何固定虚拟机的ip (固定IP)
    查看>>
    OpenLayers学习三:地图旋转及地图跳转到某一点的方式(以类为接口)
    查看>>
    OpenLayers学习二:点标记的添加删除和修改(以类为接口)
    查看>>
    Openlayers实战教程学习大纲及引导
    查看>>
    Openlayers实战:LayerGroup添加删除显示隐藏
    查看>>
    Openlayers实战:loadstart和loadend事件
    查看>>
    Openlayers实战:modifystart、modifyend互动示例
    查看>>
    Openlayers实战:moveend事件,利用calculateExtent获取地图左上和右下的坐标
    查看>>
    Openlayers实战:overlay上播放视频
    查看>>