zoukankan      html  css  js  c++  java
  • 刚学循环写的代码,出生到现在是第几天?

    刚学会循环那段时间突发奇想的写了一个判断是人生中第几天的算法,原本是有错误输入数据的处理,这里为了简洁,把那些省略了。
    #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("请输入两行数据代表您的出生年月和当前年月,格式为
    19XX/XX/XX
    20XX/XX/XX
    
    ");
        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天!!
    
    ",sum); 
       } 
    return 0;
    }
    

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

  • 相关阅读:
    UVa-133-救济金发放
    UVa-340-猜数字
    UVa-1584-环状序列
    UVa-1585-得分
    UVa-1586-分子量
    BZOJ-3289: Mato的文件管理(莫队算法+树状数组)
    HDU-2824 The Euler function(欧拉函数)
    2017年10月12日22:27:20
    HDU-4715 Difference Between Primes(线性筛法)
    POJ-1185 炮兵阵地(状态压缩DP)
  • 原文地址:https://www.cnblogs.com/Thereisnospon/p/4768526.html
Copyright © 2011-2022 走看看