小弟我写的一个C++万年历,有点毛病,请高手给小弟我修改一下。(100分送上)

我写的一个C++万年历,有点毛病,请高手给我修改一下。(100分送上)万年历的功能还没有实现。实现一个万年历分

我写的一个C++万年历,有点毛病,请高手给我修改一下。(100分送上)
万年历的功能还没有实现。实现一个万年历分三栏输出。
大概发现有以下错误。

C/C++ code
if(n%7==0)            break;    

这条语句就好像是不起做用似的。
因为找不到原因,所以下面的工作好多还没有做。
如果改的好的。我会送上100分。(请尽量不要修改太多的代码,也就是说整体的尽量不要改,细节问题可以改一下。)
C/C++ code
#include<iostream.h>#include<iomanip.h>int HowManyDays(int year ,int month);int  DayOfWeek(int year );void show();void main(){    int year ;        cout<<"请输入年份:"<<endl;        cin>>year;    static int j1=1;    static int j2=1;    static int j3=1;                int weekday=DayOfWeek(year);    for(int i=0;i<4;i++)    {        show();        while(1)        {                    while(1)            {                int _month=3*i+1;                int Days=HowManyDays(year,_month);                for(  j1=1;j1<weekday+Days+1;j1++)                {                        int n=0;                        if(weekday==0)                            cout<<setw(3)<<j1;                                                    else{                                                    if(j1<weekday+1)                            cout<<setw(3)<<" ";                        else                             cout<<setw(3)<<j1-weekday;                        }                        n++;                        if(n%7==0)                            break;                                            }                break;            }        while(1)            {                int _month=3*i+2;                int Days=HowManyDays(year,_month);                for(  j2=1;j2<weekday+Days+1;j2++)                {                    int k=0;                    if(weekday==0)                            cout<<setw(3)<<j2;                                                    else{                                                        if(j2<weekday+1)                                cout<<setw(3)<<" ";                            else                                 cout<<setw(3)<<j2-weekday;                        }                        k++;                        if(k%7==0)                            break;                        }                break;            }            while(1)            {                int _month=3*i+3;                 int Days=HowManyDays(year,_month);                for(  j3=1;j3<weekday+Days+1;j3++)                {                    int m=0;                    if(weekday==0)                            cout<<setw(3)<<j3;                                                    else{                                                    if(j3<weekday+1)                            cout<<setw(3)<<" ";                        else                             cout<<setw(3)<<j3-weekday;                        }                        m++;                        if(m%7==0)                        {                            cout<<endl;                                break;                        }                }                break;                            }            int _month=3*i+3;                 int Days=HowManyDays(year,_month);                    if(j3>=weekday+Days+1)                    break;                    }            }}int HowManyDays(int year ,int month)                  //计算一个月有多少天{    int days;    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)        return days=31;    else if(month==2){        if(year%4==0&&year%100!=0||year%400==0)            return days=29;        else return days=28;    }    else         return    days=30;}int  DayOfWeek(int year )                              //判断星期几{    int i ;    int _month[12];    for(i=1;i<=12;i++)        _month[i]=HowManyDays(year,i);     int weekday=0;     weekday=(year-1+(year-1-1)/4)%7;         return weekday;}void show(){                for(int j=1;j<=3;j++)            {            static     int month=1;                cout<<setw(8)<<" "<<month<<" 月"<<setw(15)<<" ";                if(j%3==0)                    cout<<endl;                                        month++;                                }                    for(int k=1;k<=3;k++)            {                cout<<"-----------------------"<<setw(5)<<" ";                if(k%3==0)                {                    cout<<endl;                                }                                }            for(int l=1;l<=3;l++)            {                cout<<setw(1)<<"日 "<<setw(1)<<" 一 "<<setw(1)<<"二 "<<setw(1)<<" 三 ";                    cout<<setw(1)<<" 四 "<<setw(1)<<" 五 "<<setw(1)<<"六 ";                    cout<<setw(2)<<" ";                if(l%3==0)                {                    cout<<endl;                                }                                }        for(int m=1;m<=3;m++)            {                cout<<"-----------------------"<<setw(5)<<" ";                if(m%3==0)                {                    cout<<endl;                                }                                }    } 



[解决办法]
你在上面int n = 0;
然后下面 n++;
那每次n必然等于1啊
if(n%7==0)
break;
这个break当然永远进不去。你应该把int n = 0;这句放到循环外面

[解决办法]
显式格式你再调一下
C/C++ code
 
#include <iostream.h>
#include <iomanip.h>
int HowManyDays(int year ,int month);
int  DayOfWeek(int year );
void show();
void main()
{
  int year ;
    cout < <"请输入年份:" < <endl;
    cin>>year;
  static int j1=1;
  static int j2=1;
  static int j3=1;
   
 
  int weekday=DayOfWeek(year);
  for(int i=0;i <4;i++)
  {
    show();

int n = 0;
int k = 0;
int m = 0;
    while(1)
    {
      while(1)
      {
        int _month=3*i+1;
        int Days=HowManyDays(year, _month);

        for(  j1 = n+1;j1 <weekday+Days+1;j1++)
        {
          if(weekday==0)
            cout < <setw(3) < <j1; 
          else{
if(j1 <weekday+1)
cout < <setw(3) < <" ";
else
cout < <setw(3) < <j1-weekday;
          }
          n++;
          if(n%7 == 0)
            break; 
           
        }
        break;
      }
    while(1)
      {
        int _month=3*i+2;
        int Days=HowManyDays(year,_month);

        for(  j2 = k+1;j2 <weekday+Days+1;j2++)
        {
          if(weekday==0)
              cout < <setw(3) < <j2;
             
            else{
             
              if(j2 <weekday+1)
                cout < <setw(3) < <" ";
              else
                cout < <setw(3) < <j2-weekday;
            }
            k++;
            if(k%7==0)
              break;   
        }
        break;
      }
      while(1)
      {
        int _month=3*i+3;
        int Days=HowManyDays(year,_month);

        for(  j3 = m+1;j3 <weekday+Days+1;j3++)
        {
          if(weekday==0)
              cout < <setw(3) < <j3;
             
            else{
             


            if(j3 <weekday+1)
              cout < <setw(3) < <" ";
            else
              cout < <setw(3) < <j3-weekday;
            }
            m++;
            if(m%7==0)
            {
              cout < <endl; 
              break;
            }
        }
        break;
       
      }
      int _month=3*i+3;
        int Days=HowManyDays(year,_month);
   
      if(j3>=weekday+Days+1)
          break;
     
    }
   
  }
}
int HowManyDays(int year ,int month)          //计算一个月有多少天
{
  int days;
  if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
    return days=31;
  else if(month==2){
    if(year%4==0&&year%100!=0||year%400==0)
      return days=29;
    else return days=28;
  }
  else
    return  days=30;

}
int  DayOfWeek(int year )                //判断星期几
{
  int i ;
  int _month[12];
  for(i = 0; i < 12; i++)
    _month[i]=HowManyDays(year,i);

  int weekday=0;
  weekday = (year-1+(year-1-1)/4)%7;
 
  return weekday;
}

void show()
{
 
      for(int j=1;j <=3;j++)
      {
      static  int month=1;
        cout < <setw(8) < <" " < <month < <" 月" < <setw(15) < <" ";
        if(j%3==0)
          cout < <endl;
     
     
        month++;
         
      }
     
    for(int k=1;k <=3;k++)
      {
        cout < <"-----------------------" < <setw(5) < <" ";
        if(k%3==0)
        {
          cout < <endl;
       
        }

         
      }
      for(int l=1;l <=3;l++)
      {
        cout < <setw(1) < <"日 " < <setw(1) < <" 一 " < <setw(1) < <"二 " < <setw(1) < <" 三 ";
          cout < <setw(1) < <" 四 " < <setw(1) < <" 五 " < <setw(1) < <"六 ";
          cout < <setw(2) < <" ";
        if(l%3==0)
        {
          cout < <endl;
       
        }
         


      }

    for(int m=1;m <=3;m++)
      {
        cout < <"-----------------------" < <setw(5) < <" ";
        if(m%3==0)
        {
          cout < <endl;
       
        }
         
      }
 
}


[解决办法]
探讨
你在上面int n = 0;
然后下面 n++;
那每次n必然等于1啊
if(n%7==0)
break;
这个break当然永远进不去。你应该把int n = 0;这句放到循环外面


[解决办法]
mark
[解决办法]
飘过
[解决办法]
另外,尽量使用
#include<iostream>
#include<iomanip>

using namespace std;