qq_27647699 2019-01-25 16:38 采纳率: 33.3%
浏览 612
已采纳

codeup 1928: 日期差值,答案错误,我看书上也差不多是这样写,为什么就是通不过

时间限制: 1 Sec 内存限制: 32 MB
题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。

输入
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出
每组数据输出一行,即日期差值

样例输入
20130101
20130105
样例输出
5
来源

#include <iostream>

using std::cin;
using std::cout;
using std::endl;

int isLeap(int year);

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}} ;


int main(){

    int temp,sel,date1,date2,days = 1;
    int year1,year2,months1,months2,day1,day2;
    while(cin >> date1 && cin >> date2){
        if(date1 > date2){
            temp = date1;
            date1 = date2;
            date2 = temp;
        }
        year1 = date1 / 10000;
        year2 = date2 / 10000;
        months1 = (date1 / 100) % 100;
        months2 = (date2 / 100) % 100;
        day1 = date1 % 100;
        day2 = date2 % 100;

        sel = isLeap(year1);
        while(year1 < year2 || months1 < months2 || day1 < day2){
            day1++;
            days++;
            if(day1 == month[months1][sel] + 1 ){
                day1 = 1;
                months1++;
            }
            if(months1 == 13){
                months1 = 1;
                year1++;
                sel = isLeap(year1);
            }
        }
        cout << days << endl;   
    }
    return 0;
}

int isLeap(int year){
    return (year % 4 == 0 )&&(year % 100 != 0)||(year % 400 == 0);
}
  • 写回答

2条回答 默认 最新

  • hpu刘 2019-01-25 16:56
    关注

    闰年的判断方法不对,正确判断是否为闰年的表达式应为:(year % 4 == 0 )&&(year % 100 != 0)||(year % 400 == 0)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型