用c语言编写万年历,要求输出任意一年的某月,能显示出这个月的日历
1、首先要判断一个年份是闰年还是平年,用一个子程序来做。
2、然后就开始芹雀写主程序,首先用scanf得到一个年份。
3、在判断这个年份是平年还是闰年后用printf在CMD中打印出来。
4、在编差亏写完成后,在Notepad++界面下按下F5,弹出输入框。
5、cmd /k gcc -o “$(CURRENT_DIRECTORY)\$(NAME_PART).exe””$(FULL_CURRENT_PATH)” CLS “$(CURRENT_DIRECTORY)\$(NAME_PART).exe” PAUSE EXIT。在嫌庆早输入框例输入后运行。
6、点击运行,会弹出CMD,在里面输入年份后回车就完成了。
用c语言编译万年历
//我写的代码,我自己改吧。当年水平有限,忘了考虑闰年,楼主莫怪
没有纯c环境,不知道还有没有错
#include stdio.h
#include time.h
int days[]={0,31,59,90,120,151,181,212,243,273,304,334,365};
int month[]={31,28,31,30,31,30,31,31,30,31,30,31};
char weekday[7][7]={“一”,”二”,”三”,”四”,”五”,”六”,”七”};
char weeks[][10]={“Sunday”,”Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”行销碧Saturday”};
//判闰年
inline int leap(int year)
{
return (year%4==0year%100!=0)||year%400==0;
}
//判合法性
inline int legal(int y,int m,int d){
if(m0||m12)
return 0;
if(m==2)
return d0 d=28+leap(y);
return d0 d=month[m-1];
}
int week(int y,int m,int d)
{
int day = days[m-1]+d-1+(m2?leap(y):0);
return (y-1+(y-1)/4-(y-1)/100+(y-1)/400+day)%7;
}
void print()
{
puts(“1.Week(查询某天是星期几)”);
puts(“2.Month(打印某月日历)”);
puts(“3.Calendar(打印某斗则年日历)”);
puts(“4.Exit(退出)”);
}
void printmonth(int y,int m)
{
int i,j,w;
w=(week(y,m,1)+1)%7;
puts(” SUN MON TUE WED THU FRI SAT”);
for(i=1;i=w;i++)
printf(“%5c”,’ ‘);
for(j=i;ji+month[m-1]+(m==2leap(y));j++)
{
printf(“%5d”,j-i+1);
if(j%7==0)
puts(“”);
}
if((j-1)%7)
puts(“”);
}
int main()
{
int i,y,m,d,c;
char op[5],s[105];
time_t current = time(NULL);
tm *date = localtime(current);
print();
while(scanf(“%d”,c)==1)
{
if(c==1)
{
strftime(s,100,”%Y %m %d”,date);
do
{
printf(“请输入年月日(例如:%s)\n”,s);
scanf(“%d%d%d”,y,m,d);
printf(“%4.4d年%2.2d月%2.2d日是星期%s,是否继续查询(Y/N)?\n”,y,m,d,weekday[week(y,m,d)]);
scanf(“%s”,op);
}while(op[0]==’Y’||op[0]==’y’);
}
if(c==2)
{
strftime(s,100,”%Y %m”,date);
do
{
printf(“请输入要打印的月份(例如:%s)\n”,s);
scanf(“%d%d”,y,m);
printf(” %4.4d年%2.2d月\n”,y,m);
printmonth(y,m);
puts(“是否继续打印(Y/N)?”);
scanf(“%s”,op);
}while(op[0]==’Y’||op[0]==’y’);
}
if(c==3)
{
strftime(s,100,”%Y”,date);
do
{
printf(“请输入要打印的年份(例如:%s)\n”,s);
scanf(“%d”,y);
printf(” %4.4d\n”,y);
for(i=1;i=12;i++)
{
printf(” %2.2d月\n”,i);
printmonth(y,i);
}
puts(“是否继续打印(Y/N)?”);
scanf(“%s”,op);
}while(op[0]==’Y’||op[0]==’y’);
}
if(c==4)
{
puts(“是否要真的退档举出(Y/N)?”);
scanf(“%s”,op);
if(op[0]==’Y’||op[0]==’y’)
return 0;
}
print();
}
}