网站建设资讯

NEWS

网站建设资讯

初学c++笔记——循环判断(一)-创新互联

一道简单的循环题,输入两个日期,格式为YYYYmmdd,计算相差的天数  

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发公司、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了新平免费建站欢迎大家使用!

虽然有说如果是连续的天数则按2天计算(比如20230101和20230102,要求输出结果是2),但我打算之后把这个算法写入工具里计算倒计时啥的,正常来讲上述出现连续的天数的情况倒计时应该是1天,所以最后输出结果没有按标准来会少1天

  思路参考博客:c/c++ 输入两个日期,计算日期相差多少天_编程侯的博客-博客_c++ 计算日期差

简单来讲就是将两个天数按整数格式输入,获取之后通过除余获得年月日,将年份较早的通过累加的方式加到另一个年份上,累加的数值就是天数差  

相关代码

判断闰年:

//判断是否为闰年
bool isLeap(int year)
{
    return (year % 4 ==0 && year % 100 != 0) || (year % 400 == 0);
}

数组记录每个月的天数:

//二维数组记录:平年和闰年的每个月天数,0为闰年1为平年
int month[13][2] = {{0, 0}, 
{31, 31}, {28, 29}, {31, 31}, {30, 30},
{31, 31}, {30, 30}, {31, 31}, {31, 31},
{30, 30}, {31, 31}, {30, 30}, {31, 31}};

核心循环(count为输出值,默认time1小于time2,不是就先处理了再进行):

//计算方法:将time1累加到time2
    while(y1< y2 || m1< m2 || d1< d2){
        d1++;  //增加天数

        if(d1 == month[m1][isLeap(y1)] + 1){
            m1++;  //天数满了加月数
            d1 = 1;
        }

        if(m1 == 13){
            y1++;  //月数满了加年数
            m1 = 1;
        }

        count++;  //每次循环累计
    }

小结:

  本身输入格式要求YYYYmmdd很大程度上减少了难道,要是要求字符串格式输入我应该会头疼好久,不光如此,要是月份不是输出01而是1这种,判断条件写起来应该也是会很麻烦,到时候可以试试怎么做

  网上的写法无论是闰年判断还是循环判断写的都比我简单,学习之后写个博客记录一下 

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:初学c++笔记——循环判断(一)-创新互联
分享链接:http://cdweb.net/article/depjdj.html