万年历,整的我老费劲了

来源:互联网 发布:广州大数据培训 编辑:程序博客网 时间:2024/04/28 16:59
#include<iostream>#include <string>#include <stdio.h>#include <iomanip>int year,month;using namespace std;bool isRunYear(int year);long year2day(int year);int month2day(int month,int year);void zhuti();int main(){   std::cout<<"\n\n\t\t——尊敬的会员,欢迎您光临普通日历查询系统——"<<std::endl;   //提示输入密码和账号,如果错误则退出   std::string account = "1"; //账号变量   std::string password = "1";//密码变量   //第一步:实现密码的控制,如果输入错误,根据选择继续或者退出   do{       std::cout<<"请输入您的会员账号:";   std::cin>>account;   std::cout<<"请输入您的会员密码:";   std::cin>>password;   std::cout<<"\n-------------------------------------------------------------------------\n";   if(account=="1"&&password=="1")   { zhuti();//跳出循环执行主体代码   }   else   {        break;        //在没有输入正确的时候,做出的择   }   }while(true);  return 0;}void zhuti(){    std::cout<<"\n\n\t\t***************欢 迎 使 用 万 年 历***********";int sumyear = 0,yushu,i,n;int summonth = 0,zongday,j;         string answer;                //第二步:用循环控制是否继续查询日历std::cout<<"\n请选择年份: ";std::cin>>year;std::cout<<"\n请选择月份: ";std::cin>>month;//第三步:判断输入年份是否是闰年sumyear=year2day(year);//第四步:计算输入的年份之前的天数for(n=1;n<month;++n){summonth=summonth+month2day(n,year);}//第五步:计算输入月份之前的天数             zongday=sumyear+summonth;           //第六步:求出距离1900年1月1日的天数yushu=zongday%7;//第七步:计算输入月份的第一天是星期几std::cout<<"星期日  星期一  星期二  星期三  星期四  星期五  星期六"<<endl;for(i=1;i<=month2day(month,year);++i){if(yushu==6){if(i%7==0){  cout<<setw(yushu)<<i<<endl;  continue;}}if(yushu==0){if(i==13||i==20||i==27){  cout<<i<<endl;  continue;}if(i==1){cout<<setw(9)<<1;cout<<setw(8)<<2;cout<<setw(8)<<3;cout<<setw(8)<<4;cout<<setw(9)<<5;i+=4;continue;}if(i==6){cout<<setw(7)<<i<<endl;continue;}}if(yushu==1){if(i==19||i==12||i==26){  cout<<i<<endl;  continue;}if(i==1){cout<<setw(17)<<1;cout<<setw(8)<<2;cout<<setw(8)<<3;i+=3;continue;}if(i==5){cout<<setw(8)<<i<<endl;continue;}}if(yushu==2){if(i==11||i==18||i==25){  cout<<i<<endl;  continue;}if(i==1){cout<<setw(26)<<1;cout<<setw(8)<<2;cout<<setw(8)<<3;i+=2;continue;}if(i==4){cout<<setw(8)<<i<<endl;continue;}}if(yushu==3){if(i==10||i==17||i==24){  cout<<i<<endl;  continue;}if(i==1){cout<<setw(35)<<1;cout<<setw(8)<<2;i+=1;continue;}if(i==3){cout<<setw(8)<<i<<endl;continue;}}if(yushu==4){if(i==9||i==16||i==23||i==30){  cout<<i<<endl;  continue;}if(i==1){cout<<setw(44)<<1;i+=0;continue;}if(i==2){cout<<setw(5)<<i<<endl;continue;}}if(yushu==5){if(i==8||i==15||i==29||i==22){  cout<<i<<endl;  continue;}if(i==1){cout<<setw(49)<<1<<endl;continue;}}cout<<setw(yushu)<<i<<'\t';}//第八步:打印日历(注意需要打印输入月份第一天之前所对应星期的空格)             cout<<endl;cout<<"按enter继续"<<endl;             fflush(stdin);        getchar();        zhuti();}bool isRunYear(int year){    if((year%4==0&&year%100!=0)||(year%400==0)){        return true;    }else{        return false;    }}long year2day(int year){    int i;    long sum=0;    for(i=1900;i<year;i++){        if(isRunYear(i)){            sum+=366;        }else{            sum+=365;        }    }    return sum;}int month2day(int month,int year){     int day=0;     switch(month){        case 1:        case 3:        case 5:        case 7:        case 8:        case 10:        case 12:             day=31;             break;        case 4:        case 6:        case 9:        case 11:              day=30;              break;        case 2:            if(isRunYear(year)){                day=29;            }else{                day=28;            }            break;     }     return day;}

运行结果:


原创粉丝点击