用c语言编程:打印年历

来源:百度知道 编辑:UC知道 时间:2024/05/25 19:53:57
算法:确定该年的元旦是星期几;
循环12个月,每个月起始时打印星期几,并设置日期的起始打印点;
计算该月的天数(其中用到判断该年是否闰年);
循环每个月中的天数,打印日期,逢7换行。

没想到这个程序会做这么长,要不得多要点分。
#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=0;i<12;i++)
{
printf("\n%s\n",month[i]);
printf("Sun Mon Tue Wed Thu Fri Sat\n");
for(k=0;k<week;k++) printf(" ");
for(j=1;j<=day[i];j++)
{
printf("%3d ",j);
if(++week>=7)
{
printf("\n")