要求有欢迎界面、菜单、文件操作,数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可。
年历显示
要求至少具有如下功能:
(1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。
(2)输入年月,输出该月的日历。
(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
(4)某人自1990年1月1日开始,“三天打鱼两天晒网”,输入一个1990年以后的日期,输出他这一天是打鱼还是晒网。
注意:必须是一个程序哦
VScode可以运行成功
最好可以帮我分析一下整个程序
int m,d,monthmax,y;
while(1)
{
cout<<"请输入年份:";
cin>>y;
cout<<"请输入月份:";
cin>>m;
cout<<endl;
//判断年份和月份
if(y%4==0||(y%100==0&&y%400==0))//闰年
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
monthmax=31;
if(m==2)
monthmax=29;
if(m==4||m==6||m==9||m==11)
monthmax=30;
}
if(y%4!=0)//平年
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
monthmax=31;
if(m==2)
monthmax=28;
if(m==4||m==6||m==9||m==11)
monthmax=30;
}
//基姆拉尔森计算公式取得一号周几
if(m==1||m==2)
{
m+=12; //一月算做上一年的十三月,二月算做上一年的十四月
y--;
}
d=(2+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;//算出这月一号周几
if(d==0)
{
d=7;
}
//输出日历
{
{
//标题模块
if(m==13)
{
cout<<" 公元"<<y+1<<"年 第1月日历"<<endl;
}
if(m==14)
{
cout<<" 公元"<<y+1<<"年 第2月日历"<<endl;
}
if(m!=13&&m!=14)
{
cout<<" 公元"<<y<<"年 第"<<m<<"月日历"<<endl;
}
}
cout<<" 1 2 3 4 5 6 7 "<<endl<<"==========================="<<endl;
for(int i=1; i<=d-1; i++)
{
cout<<" ";
}
for(int j=1; j<=monthmax; j++)
{
if(j<10)
{
cout<<" "<<j<<" ";
}
if(j>=10)
{
cout<<" "<<j<<" ";
}
if((j+d-1)%7==0)
{
cout<<endl;
}
if(j==monthmax)
{
cout<<endl;
}
}
cout<<endl;
}
}
如有帮助,望采纳
#include<stdio.h>
int main()
{
int year,month,day,x,a;
int ye=2010;
int sum=0;
int i[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//建立平年各月份天数的数组
int j[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//建立闰年各月份天数的数组
printf("请按照年月日的顺序输入日期\n");
scanf("%d",&x);//输入日期
year=x/10000;
month=(x%10000)/100;
day=x%100;
while((year<2010)||(month<1||month>12)||((month==2&&(year%4!=0&&year%400!=0)&&day>28)||(day>j[month])))
{
printf("输入日期错误,请重新输入\n");
printf("请按照年月日的顺序重新输入日期\n");
scanf("%d",&x);
year=x/10000;
month=(x%10000)/100;
day=x%100;
}//判断输入日期是否正确
for(ye;ye<year;ye++) //加上所隔年份天数
{
if((ye%400==0)||(ye%4==0&&ye%100!=0))//判断此年份是否是闰年
{
sum+=366;//闰年总数加366
}
else
{
sum+=365;//平年总数加365
}
}
for(a=1;a<month;a++)//加上所隔月份天数
{
if((ye%400==0)||(ye%4==0&&ye%100!=0))
{
sum+=j[a];//闰年月数
}
else{
sum+=i[a];//平年月数
}
}
sum+=day;
if((sum%5==1)||(sum%5==2)||(sum%5==3))//天数除以5,若余数为1,2,3,则打鱼
{
printf("今天打鱼");
}
else //否则晒网
{
printf("今天晒网");
}
return 0;
}