#include<stdio.h>#include<stdlib.h>
int isLeap(int year);
int GetMonthDays(int year,int month);
int GetWeekDay(int year,int month,int day);
void PrintMonthCalender(int startDay,int days);
int a,c,m,n;
int main(void){
int b;
printf("please input year and month:\n");
scanf("%d%d",&a,&b);
printf("\t\t\t\t%d--%d\n",a,b);
printf("\tSun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\t\n");
c=isLeap(a);
m=GetMonthDays(a,b);
n=GetWeekDay(a,b,1);
PrintMonthCalender(n,m);
system("pause");
return 0;
}
int isLeap(int year){
if((year%4==0&&year%100!=0)||year%400==0)
return 1;
else
return 0;
}
int GetMonthDays(int year ,int month){
switch(month)
{
case 1:
case 5:
case 3:
case 7:
case 8:
case 10:
case 12:
return 31; break;
case 4:
case 6:
case 9:
case 11:
return 30; break;
case 2:
if(c==1)
return 29 ;break;
if(c==0)
return 28 ;break;
}
}
int GetWeekDay(int year,int month,int day){
int result=0,days,weekDay;
switch(month-1)
{
case 11: result+=30;
case 10: result+=31;
case 9: result+=30;
case 8: result+=31;
case 7: result+=31;
case 6: result+=30;
case 5: result+=31;
case 4: result+=30;
case 3: result+=31;
case 2: result+=30;
case 1: result+=31;
case 0: result+=day;
}
if (c==1)
result++;
days=(a-1)*365+(a-1)/400-(a-1)/100+(a-1)/4;
days+=result;
weekDay=days%7;
return weekDay;
}
void PrintMonthCalender(int startDay,int days){
int i=2;
switch(startDay)
{
case 6: printf("\t");
case 5: printf("\t");
case 4: printf("\t");
case 3: printf("\t");
case 2: printf("\t");
case 1: printf("\t");
case 0: printf("\t1");break;
}
for(;i<=m;i++)
{
startDay++;
printf("\t%d",i);
if(startDay==6)
printf("\n");
}
}这是我的代码,能运行但是结果不正确,大家给我改一下。。
#include<stdio.h>
#include<stdlib.h>
int isLeap(int year);
int GetMonthDays(int year,int month);
int GetWeekDay(int year,int month,int day);
void PrintMonthCalender(int startDay,int days);
int a,c,m,n;
int main(void)
{
int b;
printf("please input year and month:\t");
scanf("%d%d",&a,&b);
printf("\t\t\t\t%d--%d\n",a,b);
printf("\tSun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\t\n");
c=isLeap(a);
m=GetMonthDays(a,b);
n=GetWeekDay(a,b,1);
PrintMonthCalender(n,m);
printf("\n");
system("pause");
return 0;
}
int isLeap(int year)
{
if((year%4==0&&year%100!=0)||year%400==0)
return 1;
else
return 0;
}
int GetMonthDays(int year ,int month)
{
switch(month)
{
case 1:
case 5:
case 3:
case 7:
case 8:
case 10:
case 12:
return 31; break;
case 4:
case 6:
case 9:
case 11:
return 30; break;
case 2:
if(c==1) return 29 ;break;
if(c==0) return 28 ;break;
}
}
int GetWeekDay(int year,int month,int day)
{
int result=0,days,weekDay;
switch(month-1)
{
case 11: result += 30;
case 10: result += 31;
case 9: result += 30;
case 8: result += 31;
case 7: result += 31;
case 6: result += 30;
case 5: result += 31;
case 4: result += 30;
case 3: result += 31;
case 2: result += 30;
case 1: result += 31;
case 0: result += day;
}
if (c==1) result++;
days=(a-1)*365+(a-1)/400-(a-1)/100+(a-1)/4;
days+=result;
weekDay=days%7;
return weekDay;
}
void PrintMonthCalender(int startDay,int days)
{
int i=3; /* ä»3å¼å§å¾ªç¯ */
switch(startDay)
{
case 6: printf("\t");
case 5: printf("\t");
case 4: printf("\t");
case 3: printf("\t");
case 2: printf("\t");
case 1: printf("1\t"); /* ä»1 å¼å§*/
case 0: printf("2");break; /* 2åºå®å¨1åé¢ */
}
for(;i<=m;i++)
{
startDay++;
printf("\t%d",i);
if( startDay%7 == 0 ) printf("\n"); /* ä¸è¡7个æ°æ®*/
}
}
è¿è¡ææ: