刚学循环写的代码,出生到现在是第几天?

刚学会循环那段时间突发奇想的写了一个判断是人生中第几天的算法,原本是有错误输入数据的处理,这里为了简洁,把那些省略了。
#include<stdio.h>

int f1(int year)//判断闰年返回366,平年365
{
    if((year%4==0&&year%100!=0)||year%400==0)
        return 366;
    else return 365;
}
int f2(int year,int month,int day)//返回该日期在当年是第几天
{   int i,k;k=0;
    for(i=1;i<month;i++)
    {
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)k+=31;
            else if(i==2)
        {
            if(f1(year)==366)k+=29;
            else k+=28;
        }
        else k+=30;
    }
    k+=day;
    return k;
}

int main()
{
    int year,month,day,sum,i,j,year2,month2,day2;
    char c;
    printf("请输入两行数据代表您的出生年月和当前年月,格式为\n19XX/XX/XX\n20XX/XX/XX\n\n");
    while(scanf("%d/%d/%d%d/%d/%d",&year,&month,&day,&year2,&month2,&day2)!=EOF)
  {
        sum=0;
         for(i=year;i<=year2;i++)
        {   if(i==year&&i!=year2)
               sum+=f1(year)-f2(year,month,day);//计算出生那年有多少天(当前年份不是出生年份)
            else if(i==year&&i==year2)
                sum+=f2(year2,month2,day2)-f2(year,month,day);//计算出生那年有多少天(当年是出生年份)
            else if(i!=year&&i==year2)
                sum+=f2(year2,month2,day2);//计算当年有多少天
            else sum+=f1(i);//计算中间年数多少天
        } 
        printf("这是您生命中的第%d天!!\n\n",sum); 
   } 
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2014-12-30 22:18  Thereisnospon  阅读(145)  评论(0编辑  收藏  举报