请懂c语言的帮个忙咯!!??

来源:百度知道 编辑:UC知道 时间:2024/06/21 09:16:20
题目是:"已知2000年1月1日为星期六,请输入任一年的月份后,打印该年的月历。" 意思就是已知2000年1月1日为星期六,写一个c语言程序,在运行程序是输入年月,程序结束是输出该年的月历!!程序中要注释!!!!
1、已知2000年1月1日为星期六,请输入任一年的月份后,打印该年的月历;

# include "stdio.h"
int week(int y,int m,int d);
void main()
{
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
A
int y,w,i,m=1,d=1;
printf("请输入一个年份yyyy:\n");
scanf("%d",&y);
if (y%4==0&&y%100!=0) monthday[1]=29;

for(m=1;m<=12;m++)
{

printf("\n %d年,%d月\n",y,m);
printf("S M T w T F S \n");

for (d=1;d<=monthday[m-1];d++)
{
w=week(y,m,d);
if(d==1)
{
for (i=0;i<w;i++) printf(" ");
}

if(d<10) printf("%d ",d);
else printf("%d ",d);
if(w==6) printf(" \n");
}

}
}

int week (int y,int m,int d)
{

已经编译运行确认,代码比较简单,就不注释了:

#include<conio.h>
#include<stdio.h>

void main()
{
int year,week;
scanf("%d",&year);
if(year==2000)week=6;
else if(year<2000)week=((year-2000)*365+(year-2000)/4+6)%7+7;
else week=((year-2000)*365+(year-2000)/4+((year-2000)%4!=0)+6)%7;
printf("\t\t%d年\n\n",year);

for(int i=1;i<13;i++)
{
printf("%d月:\n",i);
printf("日\t一\t二\t三\t四\t五\t六\n");
int day;
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)day=31;
else if(i==2&&(year%400==0||year%4==0))day=29;
else if(i==2)day=28;
else day=30;
week%=7;
for(int j=0;j<week;j++)printf("\t");
for(j=1;j<=day;j++)
{
if(week%7==0)printf("\n%d\t",j);
else printf("%d\t",j);
week++;
}
printf("