时间类型 - 输入时间(基础版)

这篇具有很好参考价值的文章主要介绍了时间类型 - 输入时间(基础版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

请编写函数,输入时间。

函数原型

void TimeInput(MYTIME *time);

说明:参数 time 为指示时间结构变量的指针。函数按“时:分:秒”的格式输入时间,若输入的数据正确,则将数据保存至结构变量中;否则报告错误,不保存数据。

裁判程序

#include <stdio.h>

......

typedef struct
{
    char hour, minute, second;
} MYTIME;

int IsValidTime(int hour, int minute, int second);
void TimeSet(MYTIME *time, int hour, int minute, int second);
void TimeGet(const MYTIME *time, int *hour, int *minute, int *second);
void TimeInput(MYTIME *time);

int main()
{
    MYTIME a = {8, 30, 45};
    int h, m, s;
    TimeInput(&a);
    TimeGet(&a, &h, &m, &s);
    printf("%d:%d:%d\n", h, m, s);
    return 0;
}

测试用例1

20:0:0
20:0:0

测试用例2

24:60:-15
不正确的时间!
8:30:45

这道题看似简单,实际上有一个很不容易想到的坑,卡了我好久。需要注意的就是在函数中 hour, minute, second 三个局部变量的初始化,一定要不合法!因为很多人定义变量的时候不赋初值或者赋值为零,都会使结果不准确,PTA上过不了,下面简单解释一下这两种赋值方式产生的问题:

  • 不赋初始值:int hour, minute, second; 这样这三个局部变量就都是未知数,当然也就有可能同时满足时间合法的条件,0<=hour<=23, 0<=minute<=59, 0<=second<=59,虽然概率极小,但依然有可能发生,所以要排除这种情况(由此可见PTA有多严格)。

  • 初始值赋为零:int hour = 0, minute = 0, second = 0; 错误逻辑和上面同理,假设你输入的是三个字符,本应是错误时间,而因为三个变量初值为零,还是会正常输出。

代码如下:文章来源地址https://www.toymoban.com/news/detail-792236.html

void TimeInput(MYTIME* time) {
    int hour = -1, minute = -1, second = -1;	// 需要注意的就是变量初始化,只要是不合法时间数字即可
    scanf("%d:%d:%d", &hour, &minute, &second);
    if (hour >= 0 && hour <= 23 && minute >= 0 && minute <= 59 &&
        second >= 0 && second <= 59) {
        time->hour = hour;
        time->minute = minute;
        time->second = second;
    }
    else {
        printf("不正确的时间!\n");
    }
}

到了这里,关于时间类型 - 输入时间(基础版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • typedef重复定义解决方法

    如果头文件sm_system.h和math.h中均包含\\\"typedef xxxx float_t\\\"语句,那么使用如下的头文件包含方法:

    2024年02月13日
    浏览(26)
  • 【限制输入框值类型】自定义指令el-input输入类型限制,vue和html两个版本

    经常遇到输入框需要限制只能输入数字的, 因为用户很离谱,明显输入数字的地方他非要输入英文或者中文 但是用到UI框架或者自己写方法验证表单比较麻烦 为了一个输入框专门去弄一个验证很麻烦 所以这里就整合了两种自定义指令的方式,更加方便使用 vue版本和 html版本

    2024年02月05日
    浏览(43)
  • C++11使用using定义别名(替代typedef)

    typedef 用来给类型定义别名。从C++11开始, using 可以用来给类型定义别名,它完全可以替代 typedef 。 using 除了提供类型别名的功能,还可以通过别名模版指代一族类型的名字。 关于 using 的介绍,可以参考下面连接: C++ :using – using功能的全面介绍 What is the logic behi

    2023年04月08日
    浏览(24)
  • typedef uint8_t u8;(stm32数据类型)

    在stm32单片机的库文件里有这么一段u8和u16的定义 typedef uint8_t  u8; typedef uint16_t u16; 而uint8_t和uint16_t的定义是这样的 typedef unsigned          char uint8_t; typedef unsigned short     int uint16_t; 意味着u8就是就是指代的unsigned char 意味着u16就是就是指代的unsigned short int C语言之数据类型

    2024年02月04日
    浏览(51)
  • vue + element实现el-date-picker的时间格式转换,以及自定义时间格式,修改输入的时间格式

    如果只是需要修改传给后端的值或者格式,可以使用 value-format实现,可以在文档上查看详细的介绍 使用自定义指令,首先需要创建一个自定义指令代码的存放位置,我是/utils/directive/dataForm/dataformat.js这个路径创建的内容 自定义指令内容

    2024年02月15日
    浏览(44)
  • Redis 中如何设置 Hash 数据类型的过期时间?

    在 Redis 中可以通过 setex 或 expire 方式来设置 key 的过期时间。但是对于 Hash 数据类型 Redis 是不支持的,所以我们需要使用“曲线救国”的方式去实现 Hash 数据类型的过期时间。 即,先对 Hash 数据类型赋值,然后再对 Hash 数据类型的 key 设置一个过期时间,这样就间接的实现了

    2024年02月12日
    浏览(34)
  • 前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

    前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input, 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下: 使用方法 HTML代码实现部分

    2024年02月10日
    浏览(52)
  • c语言结构体定义、输入与输出

    我们在使用c语言时,有时会遇到需要将多个数据混合运算的情况,如果其数据类型相同,我们可以使用二维数组来存储与调用。 但是,在使用中,我们时常会遇到需要将不同的数据类型进行运算的情况,这时候就可以使用结构体来完成工作。 而在使用时和其他数据类型一样

    2024年02月03日
    浏览(34)
  • C++11 使用using定义别名(替代typedef)::作用域运算符

    typedef  一切合法的变量的定义可以转换为类型   using:    示例如下:      使用 typedef 重定义类型是很方便的,但它也有一些限制,比如,无法重定义一个模板。   现在,在 C++11 中终于出现了可以重定义一个模板的语法。 C的写法/c++写法   using与模板结合:       usin

    2024年02月08日
    浏览(32)
  • java中Stream转成List类型如下写代码?

    在Java中,将Stream转换为List类型可以使用 Collectors.toList() 方法。以下是示例代码: javaCopy code import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class StreamToListExample { public static void main(String[] args) { StreamInteger stream = Stream.of(1, 2, 3, 4, 5); ListInteger list = str

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包