zoukankan      html  css  js  c++  java
  • 输入年月日,推断是该年的第几天,还能够进一步推断从1年開始的第几天

    //输入年月日,推断是该年的第几天,还能够进一步推断从1年開始的第几天
    #include<iostream>
    using namespace std;
    int main()
    {
    int Day(int x,int y,int r);
    int Calculate_1(int x,int y,int r);
    int Calculate_2(int n);
    int n,y,r;/*****************************************************年,月,日,非常明显**/
    int x;/*********************************************************推断闰年的标志,x=1是闰年,x=0不是闰年**/
    char a;/********************************************************用户输入,是否进一步推断**/
    cout<<"请输入"<<endl<<"年,月,日:";
    cin>>n>>y>>r;
    while(n<=0||n>=10000)/******************************************推断年份是否正确**/
    {
    cout<<"超出我的计算范围,请输入1~9999之间的年份"<<'01'
    <<"请再次输入年份:";
    cin>>n;
    }
    if((n%4==0&&n%100!=0)||n%400==0)/*******************************推断是否是闰年**/
    x=1;
    else x=0;
    while(y>12||y<1)/***********************************************推断月份是否正确**/
    {
    cout<<"你输入这种月份是在逗我吗???"<<endl
    <<"再给你一次输入月份的机会:";
    cin>>y;
    }
    while(Day(x,y,r)==0)
    {
    cout<<"输入的日子不太对吧?请又一次输入日:"<<endl;
    cin>>r;
    }
    cout<<"你输入的日期是:"<<n<<'.'<<y<<'.'<<r<<'.'<<endl;
    cout<<"你输入的日期是该年的第"<<Calculate_1(x,y,r)<<"天."<<endl;/************计算_1*/
    cout<<"是否为你计算出是从公元1年開始的第几天???"<<'('<<"Y/N"<<')';
    cin>>a;
    int b=1;
    while(a!='y'&&a!='Y'&&a!='n'&&a!='N')
    {
    cout<<"嘿!怎么输入的?再次输入:";
    cin>>a;
    ++b;
    if(b==5)
    {
    cout<<"我问的是:是否为你计算出是从公元1年開始的第几天???"<<'('<<"Y/N"<<')'<<'a'<<endl;
    b=0;
    }
    }
    if(a=='Y'||a=='y')
    cout<<Calculate_2(n)+Calculate_1(x,y,r)<<endl;/*****************************************************************计算_2*/
    else cout<<"那好吧"<<'02'<<endl;
    return 0;
    }
    int Day(int x,int y,int r)/***************************************************************推断日子对不正确**/
    {
    switch(y)
    {
    case 2:
    {
    if(x==1)
    {
    if(r>0&&r<=29)
    return 1;
    else return 0;
    }
    else
    {
    if(r>0&&r<29)
    return 1;
    else return 0;
    }
    }
    case 4:case 6:case 9:case 11:
    {
    if(r>0&&r<31)
    return 1;
    else return 0;
    }
    default:
    {
    if(r>0&&r<=31)
    return 1;
    else return 0;
    }
    }
    }
    int Calculate_1(int x,int y,int r)
    {
    int a,b;
    if(x==1)
    a=29;
    else a=28;
    switch(y)
    {
    case 1:{b=r;return b;}
    case 2:{b=31+r;return b;}
    case 3:{b=31+a+r;return b;}
    case 4:{b=31+a+31+r;return b;}
    case 5:{b=31+a+31+30+r;return b;}
    case 6:{b=31+a+31+30+31+r;return b;}
    case 7:{b=31+a+31+30+31+30+r;return b;}
    case 8:{b=31+a+31+30+31+30+31+r;return b;}
    case 9:{b=31+a+31+30+31+30+31+31+r;return b;}
    case 10:{b=31+a+31+30+31+30+31+31+30+r;return b;}
    case 11:{b=31+a+31+30+31+30+31+31+30+31+r;return b;}
    case 12:{b=31+a+31+30+31+30+31+31+30+31+30+r;return b;}
    }
    }
    int Calculate_2(int n)
    {
    int a=0;
    for(int i=1;i<=n;++i)
    {
    if((i%4==0&&i%100!=0)||i%400==0)
    ++a;
    }
    return (n-1)*365+a;


    }
  • 相关阅读:
    zoj 3593 One Person Game
    poj 2115 C Looooops
    hdu 1576 A/B
    hdu 2669 Romantic
    poj1006 Biorhythms
    中国剩余定理(孙子定理)
    Pseudoprime numbers---费马小定理
    青蛙的约会----POJ1061
    [POJ2942]:Knights of the Round Table(塔尖+二分图染色法)
    [BZOJ1718]:[Usaco2006 Jan] Redundant Paths 分离的路径(塔尖)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3906739.html
Copyright © 2011-2022 走看看