为什么这个万年历的程序不能显示某年某月有的天数

来源:互联网 发布:淘宝投诉假冒伪劣 编辑:程序博客网 时间:2024/05/01 02:43

这个程序为什么显示不了某年某月有的天数,,选择2不显示,请大家帮忙。

#include<iostream.h>#include<stdlib.h>#include<stdio.h>#include<iomanip.h>struct mon{  int maxdata;  int data;};int SeekWeekDay(void);int WeekDay(int year,int month,int day);int HowManyDays(void);int MonthDays(int year,int month);int PrintWeek(int weekday);int PrintMonth(int month);int PrintData(void);int main(){char choice;while(1){     puts("*******************************");     puts("*请输入您的选择:            *");     puts("*输入1求某个日期对应的星期   *");     puts("*输入2求某年某月有的天数     *");     puts("*输入3输出某年的日历         *");     puts("*输入Q结束程序               *");     puts("*******************************");     cin>>choice;     fflush(stdin);     switch(choice)     {         case '1':SeekWeekDay(); break;         case '2':int HowManyDays(int) ; break;         case '3':PrintData(); break;         case 'Q':return 0;         default: puts("输入错误,请重新输入");break;     }    cout<<endl<<endl;}system("pause");return 0;}int HowWanyDays(int){    int year,month,days;    cout<<"请输入年号和月份:";    cin>>year>>month;fflush(stdin);    cout<<"你的输入为"<<year<<"年"<<month<<"月,";    days=MonthDays(year,month);    cout<<year<<"年"<<month<<"月有"<<days<<"天\n";    return 0;}SeekWeekDay(){    int year,month,day,weekday;    cout<<"请输入年 月 日:";    cin>>year>>month>>day; fflush(stdin);    cout<<"你的输入为"<<year<<"年"<<month<<"月"<<day<<"日\n";    weekday=WeekDay(year,month,day);    cout<<"这天是" ;    //int PrintWeek(int weekday);    PrintWeek(weekday);    return 0;}  PrintWeek(int weekday){    switch(weekday)    {    case 0:cout<<"周日";break;    case 1:cout<<"周一";break;    case 2:cout<<"周二";break;    case 3:cout<<"周三";break;    case 4:cout<<"周四";break;    case 5:cout<<"周五";break;    case 6:cout<<"周六";break;    }    return 0;}PrintMonth(int month){    switch(month)    {            case 1:cout<<"一  月"; break;            case 2:cout<<"二  月"; break;            case 3:cout<<"三  月"; break;            case 4:cout<<"四  月"; break;            case 5:cout<<"五  月"; break;            case 6:cout<<"六  月"; break;            case 7:cout<<"七  月"; break;            case 8:cout<<"八  月"; break;            case 9:cout<<"九  月"; break;            case 10:cout<<"十  月";break;            case 11:cout<<"十一 月";break;            case 12:cout<<"十二 月";break;                }    return 0;}int WeekDay(int year,int month,int day){    int i;    int run=0,ping=0;    long sum;    for(i=1;i<year;i++)    {        if(i%4==0 && i%100!=0||i%400==0)            run++;        else            ping++;    }    sum=366*run+365*ping;    for(i=1;i<month;i++)        sum+=MonthDays(year,i);    sum+=day;    return(int)sum&7;}int MonthDays(int year,int month){    switch(month)    {    case 1:    case 3:    case 5:    case 7:    case 8:    case 10:    case 12: return 31;    case 4:    case 6:    case 9:    case 11: return 30;    case 2:        if(year%4==0 && year&100!=0|| year%400==0)            return 29;        else            return 28;    default:cout<<"这是一个错误的月份!";system("pause");        return 0;    }}int PrintData(void){    struct mon month[13];    int i,j,k;    int year,mon,week;    cout<<"请输入年号" ;cin>>year;for(i=1;i<13;i++){  month[i].data=1;  month[i].maxdata=MonthDays(year,i);}for(i=0;i<6;i++){  for(j=1;j<=2;j++)   {     mon=2*i+j;     cout<<setw(20);     PrintMonth(mon);     cout<<setw(20);     if(j==1)       cout<<'\t';  }cout<<endl;cout<<endl;for(j=1;j<=2;j++){  for(k=0;k<7;k++)  {PrintWeek(k);  }cout<<setw(3)<<' ';}cout<<endl;for(j=1;j<=2;j++){   mon=2*i+j;week=WeekDay(year,mon,1);if( j==1)cout<<setw(week*5+5)<<month[mon].data++;elsecout<<setw(week*4.8)<<month[mon].data++;week++;while(week<7){cout<<setw(5)<<month[mon].data++;week++;}if(j==1)cout<<setw(11)<<' ';}cout<<endl;cout<<endl;while(month[2*i+1].data<=month[2*i+1].maxdata||month[2*i+2].data<=month[2*i+2].maxdata){for(j=1;j<=2;j++)  {mon=2*i+j;for(k=0;k<7;k++){  if(month[mon].data<=month[mon].maxdata)    cout<<setw(5)<<month[mon].data++;    else     cout<<"    ";  }if(j==1)cout<<'\t';}cout<<endl;cout<<endl;   }  cout<<endl;}return 0;}


0 0
原创粉丝点击