题目: C语言输出万年历
学院:
专业:
班级:
姓名:
设计日期:
总分:
一、设计题目:
C语言输出万年历
二、题目阐述及设计思路:
C语言输出万年历,输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天 。本程序运用的万年历的计算公式: d=a-1+(a-1)/4-(a-1)/100+(a-1)/400+c; 其中a为年c为该日期在本年中的天数,d取整数,当d/7余数0时是星期天,余数1时是星期一依此类推。
三、主要知识点:
运用函数调用,if,else函数switch语句。for,while,循环语句。
四、程序清单:
#include
int m_day(int year,int month)/*此函数是给定年,月,计算此月有多少天.*/
{
if ((year%4==0 &&year%100!=0) ?? (year%400==0))
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
case 4: case 6: case 9: case 11: return 30;
case 2: return 29;
}
else
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
case 4: case 6: case 9: case 11: return 30;
case 2: return 28;
}
}
int main()
{
int year,month;
int i, days=0, d, day=0;
printf ("Enter the year and month:\n");
scanf ("%d %d ", &year, &month );
for (i=1;i
days+=m_day (year,i);
d=year-1+(year-1)/4-(year-1)/100+(year-1)/400+days+1;
printf("%d-%d\n",year,month);
printf(" Sun Mon Tue Wed Thu Fri Sat\n");
for (i=0;i
printf(" ");
for (i=1;i<=7-d%7;i++)
{
day++;
printf("%5d",day);
}
printf("\n");
while(1)
{
for (i=1;i<=7;i++)
{
day++;
if (day>m_day(year,month))
printf("%5d",day);
}
printf("\n");
}
}
五、设计结果说明:
1、设计优点:
程序充分利用所学的C语言知识,运用了函数的调用、循环语句、以及return语句,使得编程更加有条理。简单易懂,结构清晰,也使得程序的使用更加方便。
2、设计不足:
在编程序时,由于考虑到时间和受所学知识的限制,只能输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天 。而并不能输入公历的年月日,输出农历年月日以及输入农历节气,输出当年农历的年月日及公历年月日。