#include<time.h>
using namespace std
class calendar
{
int day[2][12]
public:
calendar()
~calendar(){}
int leap(int year)const
int week(int year,int month)const
void showYear()const
void showMonth()const
void showDay()const
}
calendar::calendar()
{
int i,j
int days[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}}
for(i=0i<2i++)
for(j=0j<12j++)
day[i][j]=days[i][j]
}
//判断year是否是闰年,是闰年返回1,不是返回0.
int calendar::leap(int year)const
{
if(!(year%400)||(year%100)&&!(year%4))
return 1
else return 0
}
//判断year年空凳month月的第一天是星期几的函数,0为星期日,1为星期一,依次类推.
int calendar::week(int year,int month)const
{
int i,w_day=6
if(year-2000>=0)
{
for(i=2000i<yeari++)
w_day+=1+leap(i)
}
else
{
for(i=1999i>=yeari--)
w_day+=6-leap(i)
}
for(i=1i<monthi++)
w_day+=day[leap(year)][i-1]
return w_day%7
}
//通过输入的年份,输出这一年的日历.
void calendar::showYear()const
{
int i,j
int Year,Month,Day,Week
int Leap
system("cls")
cout<<"请输入年份"<<endl
cin>>Year
Leap=leap(Year)
cout<<Year<<"年的日历"<<endl
for(Month=1Month<=12Month++)
{
Day=day[Leap][Month-1]
Week=week(Year,Month)
cout<<Month<<"月"<<endl
cout<<"日\t一\t二\t三\t四\t五\t六"<<endl
for(i=0i<=Dayi++)
{
if(i==0)
{
for(j=0j<Weekj++)
cout<<"毕绝\t"
}
else
{
cout<<i
if((i+Week)%7)
cout<<斗数旅"\t"
else
cout<<endl
}
}
cout<<endl
}
}
//通过输入的年份月份,输出这该月的日历.
void calendar::showMonth()const
{
int i,j
int Year,Month,Day,Week
system("cls")
cout<<"请输入年份与月份"<<endl
cin>>Year>>Month
Day=day[leap(Year)][Month-1]
Week=week(Year,Month)
cout<<Year<<"年"<<Month<<"月"<<endl
cout<<"日\t一\t二\t三\t四\t五\t六"<<endl
for(i=0i<=Dayi++)
{
if(i==0)
{
for(j=0j<Weekj++)
cout<<"\t"
}
else
{
cout<<i
if((i+Week)%7)
cout<<"\t"
else
cout<<endl
}
}
cout<<endl
}
//通过输入的年月日,输出这一天与今年差几天,是星期几,是不是公历节日.
void calendar::showDay()const
{
int i,j=0,flag=1,a[6],sum,Day_tem=0,Week
int year1,month1,day1,year2,month2,day2,sumDay1=0,sumDay2=0
time_t t
time(&t)
day1=localtime(&t)->tm_mday
month1=localtime(&t)->tm_mon
year1=localtime(&t)->tm_year+1900
system("cls")
cout<<"请输入年月日"<<endl
cin>>year2>>month2>>day2
sumDay1=localtime(&t)->tm_yday
for(i=1i<month2i++)
{
if(leap(year2))
sumDay2+=day[1][i-1]
else
sumDay2+=day[0][i-1]
}
sumDay2+=day2-1
if(year2>=year1)
{
for(i=year1i<year2i++)
Day_tem+=365+leap(i)
if(Day_tem+sumDay2-sumDay1>=0)
cout<<"距"<<year2<<"年"<<month2<<"月"<<day2<<"日还有"<<Day_tem+sumDay2-sumDay1<<"天"<<endl
else
cout<<"你输入的天数已经过去"<<sumDay1-sumDay2<<"天"<<endl
}
else
{
for(i=year2i<year1i++)
Day_tem+=365+leap(i)
if(Day_tem+sumDay1-sumDay2>=0)
cout<<"你输入的天数已经过去"<<Day_tem+sumDay1-sumDay2<<"天"<<endl
else
cout<<"距"<<year2<<"年"<<month2<<"月"<<day2<<"日还有"<<sumDay2-sumDay1<<"天"<<endl
}
Week=week(year2,month2)
Week=(Week+day2-1)%7
cout<<year2<<"年"<<month2<<"月"<<day2<<"日是"
switch(Week)
{
case 0:cout<<"星期日"<<endlbreak
case 1:cout<<"星期一"<<endlbreak
case 2:cout<<"星期二"<<endlbreak
case 3:cout<<"星期三"<<endlbreak
case 4:cout<<"星期四"<<endlbreak
case 5:cout<<"星期五"<<endlbreak
case 6:cout<<"星期六"<<endlbreak
}
cout<<year2<<"年"<<month2<<"月"<<day2<<"日是"
//1月最后一个星期日 国际麻风节
Week=week(year2,1)
sum=day[leap(year2)][0]
for(i=0,j=0i<sumi++)
{
if(!((Week+i)%7))
a[j++]=i
}
if(sumDay2==a[--j])
{
cout<<"国际麻风节 "
flag=0
}
//3月最后一个完整周的星期一 中小学生安全教育日
Week=week(year2,3)
sum=day[leap(year2)][2]
for(i=0,j=0i<sumi++)
{
if((Week+i)%7==6)
a[j++]=i-5
}
j--
for(i=0i<2i++)
a[j]+=day[leap(year2)][i]
if(sumDay2==a[j])
{
cout<<"中小学生安全教育日 "
flag=0
}
//5月第二个星期日 母亲节
//5月第三个星期日 全国助残日
Week=week(year2,5)
sum=day[leap(year2)][4]
for(i=0,j=0i<sumi++)
{
if(!((Week+i)%7))
a[j++]=i
}
for(i=0i<4i++)
{
a[1]+=day[leap(year2)][i]
a[2]+=day[leap(year2)][i]
}
if(sumDay2==a[1])
{
cout<<"母亲节 "
flag=0
}
if(sumDay2==a[2])
{
cout<<"全国助残日 "
flag=0
}
//6月第三个星期日 父亲节
Week=week(year2,6)
sum=day[leap(year2)][5]
for(i=0,j=0i<sumi++)
{
if(!((Week+i)%7))
a[j++]=i
}
for(i=0i<5i++)
a[2]+=day[leap(year2)][i]
if(sumDay2==a[2])
{
cout<<"父亲节 "
flag=0
}
//9月第三个星期二 国际和平日
Week=week(year2,9)
sum=day[leap(year2)][8]
for(i=0,j=0i<sumi++)
{
if((Week+i)%7==2)
a[j++]=i
}
for(i=0i<8i++)
a[2]+=day[leap(year2)][i]
if(sumDay2==a[2])
{
cout<<"国际和平日 "
flag=0
}
//9月第三个星期六 全国国防教育日
for(i=0,j=0i<sumi++)
{
if((Week+i)%7==6)
a[j++]=i
}
for(i=0i<8i++)
a[2]+=day[leap(year2)][i]
if(sumDay2==a[2])
{
cout<<"全国国防教育日 "
flag=0
}
//9月第四个星期日 国际聋人节
for(i=0,j=0i<sumi++)
{
if(!((Week+i)%7))
a[j++]=i
}
for(i=0i<8i++)
a[3]+=day[leap(year2)][i]
if(sumDay2==a[3])
{
cout<<"国际聋人节 "
flag=0
}
// 10月的第一个星期一 世界住房日
Week=week(year2,10)
sum=day[leap(year2)][9]
for(i=0,j=0i<sumi++)
{
if((Week+i)%7==1)
a[j++]=i
}
for(i=0i<9i++)
a[0]+=day[leap(year2)][i]
if(sumDay2==a[0])
{
cout<<"世界住房日 "
flag=0
}
//10月的第二个星斯一 加拿大感恩节
for(i=0,j=0i<sumi++)
{
if((Week+i)%7==1)
a[j++]=i
}
for(i=0i<9i++)
a[1]+=day[leap(year2)][i]
if(sumDay2==a[1])
{
cout<<"加拿大感恩节 "
flag=0
}
//10月第二个星期三 国际减轻自然灾害日
for(i=0,j=0i<sumi++)
{
if((Week+i)%7==3)
a[j++]=i
}
for(i=0i<9i++)
a[1]+=day[leap(year2)][i]
if(sumDay2==a[1])
{
cout<<"国际减轻自然灾害日 "
flag=0
}
//10月第二个星期四 世界爱眼日
for(i=0,j=0i<sumi++)
{
if((Week+i)%7==4)
a[j++]=i
}
for(i=0i<9i++)
a[1]+=day[leap(year2)][i]
if(sumDay2==a[1])
{
cout<<"世界爱眼日 "
flag=0
}
//11月最后一个星期四 美国感恩节
Week=week(year2,11)
sum=day[leap(year2)][10]
for(i=0,j=0i<sumi++)
{
if((Week+i)%7==4)
a[j++]=i
}
j--
for(i=0i<10i++)
a[j]+=day[leap(year2)][i]
if(sumDay2==a[j])
{
cout<<"美国感恩节 "
flag=0
}
if((sumDay2>59)&&(leap(year2)))
sumDay2--
switch(sumDay2)
{
case 0:cout<<"元旦"<<endlbreak
case 32:cout<<"世界湿地日"<<endlbreak
case 44:cout<<"情人节"<<endlbreak
case 61:cout<<"全国爱耳日"<<endlbreak
case 63:cout<<"青年志愿者服务日"<<endlbreak
case 66:cout<<"国际妇女节"<<endlbreak
case 67:cout<<"保护母亲河日"<<endlbreak
case 70:cout<<"中国植树节"<<endlbreak
case 72:cout<<"白色情人节 国际警察日"<<endlbreak
case 73:cout<<"世界消费者权益日"<<endlbreak
case 79:cout<<"世界森林日 世界睡眠日"<<endlbreak
case 80:cout<<"世界水日"<<endlbreak
case 81:cout<<"世界气象日"<<endlbreak
case 82:cout<<"世界防治结核病日"<<endlbreak
case 90:cout<<"愚人节"<<endlbreak
case 94:cout<<"清明节"<<endlbreak
case 96:cout<<"世界卫生日 "<<endlbreak
case 111:cout<<"世界地球日"<<endlbreak
case 115:cout<<"世界知识产权日"<<endlbreak
case 120:cout<<"国际劳动节"<<endlbreak
case 122:cout<<"世界哮喘日"<<endlbreak
case 123:cout<<"中国青年节"<<endlbreak
case 127:cout<<"世界红十字日"<<endlbreak
case 131:cout<<"国际护士节"<<endlbreak
case 134:cout<<"国际家庭日"<<endlbreak
case 136:cout<<"世界电信日"<<endlbreak
case 139:cout<<"全国学生营养日 "<<endlbreak
case 142:cout<<"国际牛奶日"<<endlbreak
case 150:cout<<"世界无烟日 "<<endlbreak
case 151:cout<<"国际儿童节"<<endlbreak
case 155:cout<<"世界环境日"<<endlbreak
case 156:cout<<"全国爱眼日"<<endlbreak
case 167:cout<<"世界防治荒漠化和干旱日"<<endlbreak
case 173:cout<<"国际奥林匹克日"<<endlbreak
case 175:cout<<"全国土地日"<<endlbreak
case 176:cout<<"国际禁毒日"<<endlbreak
case 181:cout<<"中国共产党诞生日 国际建筑日"<<endlbreak
case 187:cout<<"中国人民抗日战争纪念日"<<endlbreak
case 191:cout<<"世界人口日"<<endlbreak
case 212:cout<<"中国人民解放军建军节"<<endlbreak
case 223:cout<<"国际青年节"<<endlbreak
case 250:cout<<"国际扫盲日"<<endlbreak
case 252:cout<<"中国教师节"<<endlbreak
case 258:cout<<"中国脑健康日 国际臭氧层保护日"<<endlbreak
case 262:cout<<"全国爱牙日"<<endlbreak
case 263:cout<<"世界停火日"<<endlbreak
case 269:cout<<"世界旅游日"<<endlbreak
case 273:cout<<"中华人民共和国国庆节 国际音乐日 国际老年人日"<<endlbreak
case 276:cout<<"世界动物日"<<endlbreak
case 277:cout<<"世界教师日"<<endlbreak
case 280:cout<<"全国高血压日"<<endlbreak
case 281:cout<<"世界邮政日"<<endlbreak
case 282:cout<<"世界精神卫生日"<<endlbreak
case 286:cout<<"世界标准日"<<endlbreak
case 287:cout<<"国际盲人节 世界农村妇女日"<<endlbreak
case 288:cout<<"世界粮食日"<<endlbreak
case 289:cout<<"国际消除贫困日"<<endlbreak
case 296:cout<<"联合国日 世界发展新闻日"<<endlbreak
case 300:cout<<"中国男性健康日"<<endlbreak
case 301:cout<<"国际生物多样性日"<<endlbreak
case 303:cout<<"万圣节"<<endlbreak
case 311:cout<<"中国记者节"<<endlbreak
case 312:cout<<"消防宣传日"<<endlbreak
case 317:cout<<"世界糖尿病日"<<endlbreak
case 320:cout<<"国际大学生节 "<<endlbreak
case 328:cout<<"国际消除对妇女的暴力日"<<endlbreak
case 334:cout<<"世界爱滋病日"<<endlbreak
case 336:cout<<"世界残疾人日"<<endlbreak
case 337:cout<<"全国法制宣传日"<<endlbreak
case 342:cout<<"世界足球日"<<endlbreak
case 358:cout<<"圣诞节"<<endlbreak
case 362:cout<<"国际生物多样性日"<<endlbreak
default:if(flag) cout<<"没有节日滴"<<endlelse cout<<endlbreak
}
}
main()
{
calendar obj
int i,flag=1
while(flag)
{
system("cls")
cout<<"年历显示\n请按以下数字进行 *** 作"<<endl
cout<<"1,输入一个年份,输出是在屏幕上显示该年的日历"<<endl
cout<<"2,输入年月,输出该月的日历"<<endl
cout<<"3,输入年月日,输出距今天还有多少天,星期几,是否是公历节日"<<endl
cout<<"4,退出"<<endl
scanf("%d",&i)
switch(i)
{
case 1:obj.showYear()system("pause")break
case 2:obj.showMonth()system("pause")break
case 3:obj.showDay()system("pause")break
case 4:flag=0break
default:cout<<"输入有误,请重新输入"<<endlsystem("pause")break
}
}
return 0
}
1、首先下载安装Notepad++,这是一款免费的且能够编辑C语言的软件。
2、然后下载安装tdm-gcc,这是为了给电脑配置环境变量,以便能够编译C语言的。
3、在安装完以上两款软件后,还要配置悉纳脊一下环境变量。
4、然后开始编辑C语言万年历,首先要判断一个年份是闰年还是平年,用一个子程序来做:
5、然后就开始写主程序:首先用scanf得到一个年份,在判断这个年份是平年还是闰年后用printf在CMD中打出来。
6、在编写完成后,在Notepad++界面下按下F5,在输入框中输入:
cmd /k gcc -o "$(CURRENT_DIRECTORY)\$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" &&CLS &&"$(CURRENT_DIRECTORY)\$(NAME_PART).exe" &PAUSE &EXIT
7、最后点击运行,会睁渗d出CMD,在里面输入年份后回车:例如输入2017,茄棚然后回车,就会生成2017年的万年历了!
#include <stdio.h>void main()
{
int i,j,k,year,week
int day[]={31,28,31,30,31,30,31,31,30,31,30,31}
char month[12][10]={"January","February","March","April","May","June","July","August","September","October","November","December"}
printf("Input year you want to print:")
scanf("%d",&year)
if((year%4==0&&year%100!=0)||(year%400==0)) day[1]++//判断是否闰年
week=(35+year+year/4-year/100+year/400)%7//计算当年的1月1日是周几的神兄迅公式
for(i=0i<12i++)
{
printf("\n%s\n",month[i])//输出月份的英文
printf("Sun Mon Tue Wed Thu Fri Sat\n")//输出表头
for(k=0k<weekk++) printf(" ")//每月一号对齐它的星尘洞期数
for(j=1j<=day[i]j++)
{
printf("%3d ",j)
if(++week>=7)
{
printf("\游此n")
week=week%7
}
}
printf("\n")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)