| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1944 人关注过本帖
标题:推算日期 感谢帮忙
只看楼主 加入收藏
AbduRahman1
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2021-11-16
结帖率:50%
收藏
 问题点数:0 回复次数:8 
推算日期 感谢帮忙
Description
输入三个正整数,分别代表一个日期的年,月,日,输出这个日期的后一天的年,月,日。

Input
输入三个正整数,分别代表一个日期的年,月,日。

Output
输出这个日期的后一天的年,月,日。

Samples
input
2007 2 28
output
2007 3 1
搜索更多相关主题的帖子: Input 代表 输出 日期 Output 
2021-12-22 19:26
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2022-01-12 15:06
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 2楼 xianfajushi
显然 你没处理跨年的情况 输入 2020 12 31
这代码就错了

https://zh.
2022-01-13 10:00
不会游泳的虾
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:27
帖 子:108
专家分:675
注 册:2021-7-1
收藏
得分:0 
供参考:
程序代码:
#include <stdio.h>
class Date {
private:
    int year, month, day;
    int IsLeapYear(int y)
    {
        return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
    }
    int DaysOfMonth(int y, int m)
    {
        int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
        if (IsLeapYear(y) && m == 2) return a[m - 1] + 1;
        return a[m - 1];
    }
public:
    Date(): year(2022), month(2), day(28) {}
    Date(int y,int m,int d):year(y),month(m),day(d){}
    void Show()const
    {
        printf("%d %d %d\n", year, month, day);//年-月-日 格式
    }
    Date IncOneDay()
    {
        Date tmp = *this;
        if (day == DaysOfMonth(year, month))
        {
            tmp.day = 1;
            if (month == 12){
                tmp.month = 1;
                tmp.year++;
            }
            else {
                tmp.month++;
            }
        }
        else {
            tmp.day++;
        }
        return tmp;
    }
};
int main()
{
    int y, m, d;
    Date* D;
    printf("input\n");
    scanf("%d%d%d", &y, &m, &d);
    D = new Date(y, m, d);
    printf("output\n");
    D->IncOneDay().Show();
    return 0;
}


[此贴子已经被作者于2022-1-27 16:05编辑过]

2022-01-27 16:00
白锦衣绣
Rank: 2
等 级:论坛游民
帖 子:5
专家分:33
注 册:2022-2-20
收藏
得分:0 
回复 4楼 不会游泳的虾
可以问一下C语言里public有什么含义吗?或者说public有些什么具体含义?可以帮我详细解释一下吗?
2022-02-20 09:39
白锦衣绣
Rank: 2
等 级:论坛游民
帖 子:5
专家分:33
注 册:2022-2-20
收藏
得分:0 
回复 4楼 不会游泳的虾
而且等不到输入,运行失败了
2022-02-20 09:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
回复 5楼 白锦衣绣
public 是C++的,C没有class、public等等
2022-02-20 11:38
See_Sea
Rank: 2
等 级:论坛游民
帖 子:16
专家分:25
注 册:2022-1-27
收藏
得分:0 
C++没关系,闰年二月的处理,和跨年的处理都有了,C代码也不难了。
2022-02-20 22:10
不会游泳的虾
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:27
帖 子:108
专家分:675
注 册:2021-7-1
收藏
得分:0 
回复 5楼 白锦衣绣
这是写成一个 Date 类的形式,如需要不是类的形式,只要把类定义的相关语句删除,函数写成带参的,然后在主函数里调用就可以了,算法都一样的。修改如下,供参考:
程序代码:
#include <stdio.h>
int IsLeapYear(int y)
{
    return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
}
int DaysOfMonth(int y, int m)
{
    int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    if (IsLeapYear(y) && m == 2) return a[m - 1] + 1;
    return a[m - 1];
}
void Show(int year,int month,int day)
{
    printf("%d %d %d\n", year, month, day);//年-月-日 格式
}
void IncOneDay(int *year,int *month,int *day)
{
    if ((*day) == DaysOfMonth(*year, *month))
    {
        (*day) = 1;
        if ((*month) == 12) {
            (*month) = 1;
            (*year)++;
        }
        else {
            (*month)++;
        }
    }
    else {
        (*day)++;
    }
}
int main()
{
    int y, m, d;
    printf("input\n");
    scanf("%d%d%d", &y, &m, &d);
    IncOneDay(&y, &m, &d);
    printf("output\n");
    Show(y, m, d);
    return 0;
}


[此贴子已经被作者于2022-2-21 09:11编辑过]

2022-02-21 08:51
快速回复:推算日期 感谢帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021149 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved