编写c语言万年历程序 要求打印任意年份的日历或某年某月的月历或者查询某天是星期几

谢谢了

#include <stdio.h>
int numday[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}};
int IsLeap(int y)
{
return (y%400==0||y%4==0&&y%100!=0);
}
void print(int y,int m,int w)
{
int i,j,l;
printf("Calendar %d-%02d\n",y,m);
printf("---------------------\n");
printf("Su Mo Tu We Th Fr Sa \n");
printf("---------------------\n");
for (i=0;i<w;i++)
printf(" ");
if (IsLeap(y))
l=1;
else
l=0;

for (i=1;i<=numday[l][m-1];i++)
{
printf("%-3d",i);
w++;
if (w%7==0)
printf("\n");
}
if (w%7) printf("\n");
printf("---------------------\n");
}
int calday(int y,int m)
{
int i,j,d=0,w;
while (y>2007)
{
if (IsLeap(y)) d+=366;
else d+=365;
y--;
}
while (m>1)
{ --m;
d+=numday[0][m-1];
}
w=(d+1)%7;
return w;
}
int main()
{
int year,month,w;
int i,j,day=0;
scanf("%d%d",&year,&month);
if (year<2007) return 0;
w=calday(year,month);
print(year,month,w);
return 0;
}
你看这个可以吗?追问

我试下

追答

能用就好,很高兴能帮到你

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-02
代码如下:
#include <stdio.h> int numday[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}}; int IsLeap(int y) { return (y%400==0||y%4==0&&y%100!=0); } void print(int y,int m,int w) { int i,j,l; printf("Calendar %d-%02d\n",y,m); printf("---------------------\n"); printf("Su Mo Tu We Th Fr Sa \n"); printf("---------------------\n"); for (i=0;i<w;i++) printf(" "); if (IsLeap(y)) l=1; else l=0; for (i=1;i<=numday[l][m-1];i++) { printf("%-3d",i); w++; if (w%7==0) printf("\n"); } if (w%7) printf("\n"); printf("---------------------\n"); } int calday(int y,int m) { int i,j,d=0,w; while (y>2007) { if (IsLeap(y)) d+=366; else d+=365; y--; } while (m>1) { --m; d+=numday[0][m-1]; } w=(d+1)%7; return w; } int main() { int year,month,w; int i,j,day=0; scanf("%d%d",&year,&month); if (year<2007) return 0; w=calday(year,month); print(year,month,w); return 0; }