C语言编写 年历显示程序

用C实现如下功能:
1、输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间;
2、输入年月,输出该月的日历。
3、输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
4、输入年月日,输出前一天后一天的操作
(还要加操作日志,将每次用户的操作信息写到日志文件filename中)
这是我的课程设计,急求。。
谢谢了

补充:

此题不是很难,我会前三个
关键是算那一年的第一天是周几
给你个基本算法,一年是365天,闰年366天
364是7的倍数,这样一年多出一天,中间多少个闰年,在加上相应的天数即可
400年多出来的天数是400+97=497也是7的倍数,那么400年一轮回,这样就算400年以内的即可
一个子函数,返回这一年的第一天是周几,很好做
int ye(int year)
{
int y=year%400;
int day=y;
int i;
for(i=0;i<y;i++)
if(闰年判断)
day++;
return day%7;

}
做一个月份天数的全局数组
int mo[12]={31,28,31,30,31,30,31,31,30,31,30,31};
需要时用一个if判断闰年改变m0[1]的值是28还是29

打印子函数,有一个小技巧,就是每个月前面的空缺部分,这个1月份是ye子函数的返回值,后面的你看和前面月份是不是重合啊,吧这个记录下来在下一月份用即可
1 2
3 4
这样月份排列更好打印一些,你的那个截图有点麻烦

int pr(int year)
{
int k=ye(year);
int i,j,;
if(闰年判断)
mo[1]=29;
else
mo[1]=28;
for(i=0;i<12;i++)
{
printf("周几英文的打印");
for(j=0;j<k;j++)
printf("一般是四个空格,就是月份前面空缺的打印");
for(j=1;j<=mo[i];j++)
{
printf("%4d",j);
k++;
if((k+j)%7==0)
printf("\n");

}
k%=7;
if(k!=0)
printf("\n");

}

}
如果像你那样,感觉需要赋值一个大一点的数组,在吧数组打印出来更好,呵呵
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-26
你的程序界面都有了,看着还不错,在你基础之上修改吗,把你代码发上来追问

这个图是我找的,最终的结果就是要出来这个,我也知道考察的是嵌套循环,但是我不太会写,只写了一些基础的子函数,总之很乱,要改也挺复杂,你能帮我写一个出来吗,谢谢了

第2个回答  2013-09-26
自己想想吧,并不复杂
第3个回答  2015-09-13
这个星期几是怎么解决的?我也在做这个课设谢谢