| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 384 人关注过本帖
标题:求指教!关与计算年月日的一道题
只看楼主 加入收藏
刘欣2
Rank: 1
等 级:新手上路
帖 子:32
专家分:6
注 册:2014-5-12
结帖率:72.73%
收藏
已结贴  问题点数:2 回复次数:1 
求指教!关与计算年月日的一道题
#include <stdio.h>
typedef struct
{
   int year;
   int month;
   int day;
}date;
int days(date d)
{
    int num = 0;
    int m, da, i;
    if ((d.year %4 == 0 && d.year %100!=0)||(d.year % 400 == 0))
    {
         for (m = 1; m < d.month ; m++)
         {
              if (m == 2)
              {
                   da = 29;
                   num = num + da;
              }
              else if (m==4||m==6||m==8||m==11)
              {
                   da = 30;
                   num = num+da;
              }
              else
              {
                   da = 31;
                   num = num +da;
              }
              num = num + d.day;
        }
        return num;
   }
   else
   {
        for (m = 1; m <d.month ; m++)
        {
             if (m == 2)
             {
                  da = 28;
                  num = num +da;
             }
             else if (m==4||m==6||m==8||m==11)
             {
                  da = 30;
                  num = num +da;
             }
             else
             {
                  da = 31;
                  num = num +da;
             }
              num = num + d.day;
        }
        return num;
   }
}
int main()
{
 date d;
 scanf("%d%d%d",&d.year,&d.month,&d.day);
 printf("%d年%d月%d日 is the %d days of this year",d.year,d.month,d.day,days(d));
 return 0;
}


为什么我输入2000 2 29就能得到正确答案60
而我输入2000 3 1得到的错误答案62
这是为什么
搜索更多相关主题的帖子: include 年月日 
2014-05-19 13:16
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
程序代码:
#include <stdio.h>

//获取公历年初至某整月的天数
int year_sumday(int year,int month)
{
    int sum=0;
    int rui[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int ruiflag=0;
    if((year%4==0 &&year%100!=0) || year%400==0) ruiflag=1;
    for(int index=0;index<month-1;index++)
    {
        if(ruiflag==1) sum+=rui[index];else sum+=ping[index];
    }
    return sum;
}
//校验输入数据是否正确
bool y_check(int year,int month,int day)
{
    if(year>2100 || year<1800) return false;
    if (month>12) return false;
    if (day>31) return false;
    return true;
}
int main(void)
{
    int syear,smonth,sday;
_input:
    printf("请输入阳历年月日例如2012,11,30==");
    scanf("%d,%d,%d",&syear,&smonth,&sday);
    if(y_check(syear,smonth,sday)==false) 
    {
        printf("输入日期有错误,请重新输入\n");
        goto _input;
    }
    int days=year_sumday(syear,smonth)+sday;
    printf("%d年元旦至%d年%d月%d日  共有%d天\n",syear,syear,smonth,sday,days);
    return 0;
}

/*
样例输出:
D:\c_source\w5\Debug>w5
请输入阳历年月日例如2012,11,30==2000,2,29
2000年元旦至2000年2月29日  共有60天

D:\c_source\w5\Debug>w5
请输入阳历年月日例如2012,11,30==2000,3,1
2000年元旦至2000年3月1日  共有61天
*/

DO IT YOURSELF !
2014-05-19 13:47
快速回复:求指教!关与计算年月日的一道题
数据加载中...
 
   



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

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