游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4313|回复: 12

我写了个年月日的程序,请大家PP

[复制链接]

29

主题

153

帖子

189

积分

注册会员

Rank: 2

积分
189
发表于 2006-10-26 02:45:00 | 显示全部楼层 |阅读模式
本帖最后由 majia775 于 2015-2-13 10:26 编辑

//这个程序好久以前就写了,不过没写出来,今天给她搞定了~~偶也~
//不过有个BUG,就是如果输入错误的日期,会提示错误,然后输入一个正确的日期后,便会把刚才输入的错误日期给计算了,等于这个错误提示形同虚设,想了好久,不知道怎么解决.
//另外又goto了一把,暂时还想不到不用goto完美的解决办法
#include<iostream>
using namespace std;
int fun(int year,int month,int day);                                                        //计算天数函数
struct YEAR
{
        int year;
        int month;
        int day;
}N;

int main()
{
        cout<<"输入年月日,程序计算该日在本年中是第几天.(已考虑闰年问题)";
        cout<<"格式:2004 5 28\n";

LOOP:cout<<"输入一个年月日:";
        cin>>N.year>>N.month>>N.day;
        
        cout<<N.year<<"年"<<N.month<<"月"<<N.day<<"日,是今年第 "<<fun(N.year,N.month,N.day)<<" 天.\n";
        
        cout<<"继续查询请按Y,退出请按任意键!\n";
        if(cin.get()=='Y' || cin.get()=='y')
        goto LOOP;
        return 0;
}




int fun(int year,int month,int day)                                                                //计算天数函数
{
        int i,sum=0;
        int years[12]={31,28,31,30,31,30,31,31,30,31,30,31};                //一年所有月份
        int yearr[12]={31,29,31,30,31,30,31,31,30,31,30,31};                //一年所有月份(闰年情况)


        while((year<1900 || year>2100) || (month<1 || month>12) || (day<1 ||day>31))        //判断年月日输入超过查询范围提示
        {
                cout<<"错误,查询范围公元1900年-公元2100年,请重新输入年月日:";
               
                cin>>year>>month>>day;
        }

        if(year%4==0 && year%100!=0 || year%400==0)                                        //如果是闰年...
        {
                for(i=0;i<(month-1);i++)                                                                //month-1才能显示正常:比如2004年366天,不然显示396天
                        sum=sum+yearr;
                sum=sum+day;                                                                                        //sum等于该日在今天第多少天
                return sum;
        }
        else                                                                                                                //如果不是闰年
        {
                for(i=0;i<(month-1);i++)                                                               
                        sum=sum+years;
                sum=sum+day;               
                return sum;
        }
        
}

27

主题

179

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
发表于 2006-10-26 06:58:00 | 显示全部楼层
此帖仅作者可见

29

主题

153

帖子

189

积分

注册会员

Rank: 2

积分
189
 楼主| 发表于 2006-10-26 08:00:00 | 显示全部楼层
此帖仅作者可见

27

主题

179

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
发表于 2006-10-26 08:28:00 | 显示全部楼层
此帖仅作者可见

29

主题

153

帖子

189

积分

注册会员

Rank: 2

积分
189
 楼主| 发表于 2006-10-26 08:47:00 | 显示全部楼层
此帖仅作者可见

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-10-26 09:44:00 | 显示全部楼层
此帖仅作者可见

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-10-26 09:51:00 | 显示全部楼层
此帖仅作者可见

3

主题

18

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2006-10-26 18:02:00 | 显示全部楼层
此帖仅作者可见

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2006-10-26 18:36:00 | 显示全部楼层
此帖仅作者可见

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-10-26 19:25:00 | 显示全部楼层
此帖仅作者可见
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 15:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表