linux万年历,万年历_十万代码进行时的技术博客_51CTO博客

这是一个实现万年历的程序,我从书上copy到TC.exe上,再修改了多次依然未能完美的呈现万年历的效果。各位高手教教我吧~!注释部分纯属我个人的理解,还有我不理解之处。

#include

int IsLeapYear(int);

main()

{

int i,day,year,temp,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 input the year: ");

scanf("%d",&year);

while(Year_Start < year)/*while循环让Year_Start比所输入的年份多一年*/

{

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++)/*循环输出一年12个月*/

{

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;  /*这个i=Year_days%7在后面的i是否等于0用到,我真的很不明白这个i到底有什么用。365和366跟7求余都不会等于0 的啦*/

printf("Mon  Tue  Wed  Thu  Fri  Sat  Sun\n");

if(i!=0)

for(temp_i=0;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')/*这个if语句里的条件我不明白是什么意思,程序由始至终都没出现'q'呀*/

exit(0);

}

getch();

}

int IsLeapYear(int year)/*判断闰年,因为闰年多一天要输出*/

{

if((year%4==0)&&(year%100!=0)||(year%400==0))

return 1;

else

return 0;

}

程序完毕!

注释里有我不明白的地方,知道的高手请多多指教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值