大一编写的代码,还是用了goto…
#include<iostream.h>
#include<iomanip.h>
struct ymd
{
int year;
int week;
};
ymd allone[11]={{1980,2},{1984,7},{1988,5},{1992,3},{1996,1},{2000,6},{2004,4},{2008,2},{2012,7},{2016,5},{2020,3}};
void main()
{
int y,m,d,w,f=0,runping,sum;
cout<<"年份";
cin>>y;
cout<<"月份";
cin>>m;
if(y%100==0)
{
if(y%400==0)
{
cout<<y<<"年是闰年"<<endl;
runping=1;
}
else
goto Loop;
}
else if(y%4==0)
{
cout<<y<<"年是闰年"<<endl;
runping=1;
}
else
{Loop:
cout<<y<<"年是平年"<<endl;
runping=0;
}
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:d=31;break;
case 4:
case 6:
case 9:
case 11: d=30;break;
case 2: if(runping==1)
d=29;
else if(runping==0)
d=28;break;
default:cout<<"error\n";
}
cout<<setw(6)<<"日"<<setw(6)<<"一"<<setw(6)<<"二"<<setw(6)<<"三"<<setw(6)<<"四"<<setw(6)<<"五"<<setw(6)<<"六"<<endl;
for(int j=0;j<11;j++)
{
if(allone[j].year<y&&allone[j+1].year>y)
{
w=allone[j].week;
if(y-allone[j].year>1)
w=w+1*2+1*(y-allone[j].year-1);
else
w=w+1*2;
}
else
if(y==allone[j].year)
{
w=allone[j].week;
break;
}
}
switch(m)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:cout<<"error\n";
}
if(runping==1&&m>2)sum+=1;
w+=sum;
w=w%7;
for(int l=1;l<=w;l++)
{
cout<<setw(6)<<" ";
f++;
}
for(int i=1;i<=d;i++)
{
cout<<setw(6)<<i;
f++;
if(f==7)
{
f=0;
cout<<endl;
}
}
cout<<endl;
}