我们班开始C语言实训课了,要设计论文还要答辩。我选择的是用C语言编一个日历。输入年份后就可以查询该年每个月的日历。我在网上搜索到了这么一个程序,然而我对C语言不是很精通,里面有很多内容看不懂,这样是应付不了答辩的。
所以,我想有劳大家在这个C程序中的重点部分进行详细的分析注释,以便能让我看明白。最后还能给我一些关于用C语言编日历的必需知识,比如闰年怎么计算,某一天是星期几怎么计算,等等。
很快(还有两周)就要答辩了,请大家能否快速点,谢谢了!
这个C语言编日历的源代码是:
#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
int IsLeapYear(int);
void main()
{
int i;
int day;
int year;
int temp;
int temp_i;
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29};
printf("Please enter the year: ");
scanf("%d",&year);
while(Year_Start < year)
{
if( IsLeapYear( Year_Start ) )
Per_Year_Days = 366;
else
Per_Year_Days = 365;
Year_days = Year_days + Per_Year_Days;
Year_Start++;
}
for( temp = 1; temp <=12; temp++ )
{
switch( temp )
{
case 1:
printf(" January(%d)\n",year);
break;
case 2:
printf(" February(%d)\n",year);
break;
case 3:
printf(" March(%d)\n",year);
break;
case 4:
printf(" April(%d)\n",year);
break;
case 5:
printf(" May(%d)\n",year);
break;
case 6:
printf(" June(%d)\n",year);
break;
case 7:
printf(" July(%d)\n",year);
break;
case 8:
printf(" August(%d)\n",year);
break;
case 9:
printf(" September(%d)\n",year);
break;
case 10:
printf(" October(%d)\n",year);
break;
case 11:
printf(" November(%d)\n",year);
break;
case 12:
printf(" December(%d)\n",year);
break;
}
i = Year_days % 7;
printf("Mon Tue Wed Thu Fri Sat Sun\n");
if( i != 0 )
for( temp_i = 0; temp_i < i; temp_i++)
printf(" ");
day = 1;
if( IsLeapYear(year) && temp == 2)
while( day <= month_day[12] )
{
if( day >1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day >= 10 )
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;
}
else
while (day <= month_day[temp-1])
{
if( day > 1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day >=10 )
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;
}
printf("\n");
if( getch() == 'q' )
exit(0);
}
getch();
}
int IsLeapYear( int year )
{
if ((year %4 == 0) && (year % 100 != 0) ||
(year % 400 == 0) )
return 1;
else
return 0;
}
其实我给出的那个编日历的程序已可以运行了,关键是要在程序内容旁边加以说明注释,以便能让我看得懂。而不是叫大家再令给一个编日历的程序,(除非你真的有更好的程序,但一定要编译成功的,像zm3777给的那个就不能运行,而且最好还是要加上注释)。
所以呢,大家最好还是就我给的那个程序给出一些详细的注释,以便我能应付答辩。我悬赏50分,而且感激不尽啊!!