c语言打印日历,大神帮我看看代码。。。,

发布网友 发布时间:2024-10-24 05:40

我来回答

3个回答

热心网友 时间:2024-11-06 21:37

改3个地方就可以了。
1.把PrintMonthCalender()中的
for(;i<=m;i++)
{
startDay++;
printf("\t%d",i);
if(startDay==6)
printf("\n");
}
改成
for(;i<=m;i++){
if(startDay++==6){
printf("\n");
startDay=0;
}
printf("\t%d",i);
}

2.把GetMonthDays()中的
case 2:
if(c==1)
return 29 ;break;
if(c==0)
return 28 ;break;
改成
case 2:
if(c==1) return 29;
else return 28;

3. 把GetWeekDay()中的
case 2: result+=30;
改成
case 2: result+=28;
并把
if (c==1)
result++;
改成if(c==1 && month>2) result++;
再把凡是紧跟在return后面的break删除;在system("pause")前加一句printf("\n")就OK了……

热心网友 时间:2024-11-06 21:38

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;
}
这个函数switch中2月应该加28天

热心网友 时间:2024-11-06 21:40

有4个地方要改:
1、int GetWeekDay(int year,int month,int day)函数中case 2: result+=30;改为case 2: result+=28;
2、int GetWeekDay(int year,int month,int day)函数中days=(a-1)*365+(a-1)/400-(a-1)/100+(a-1)/4;改为days=(a)*365+(a)/400-(a)/100+(a)/4;
3、int GetWeekDay(int year,int month,int day)函数中days+=result;改为days+=result-365;
4、void PrintMonthCalender(int startDay,int days)函数中for语句里
printf("\t%d",i);
if(startDay==6)
printf("\n");
改为

if(startDay%7==0)
printf("\n");
printf("\t%d",i);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com