| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
用C语言写了一个万年历出来,我是新手,请大家多多指教指教。 
有什么不足或者语法毛病的可以指出来。 
- #include<stdio.h>
 
  
- year_days(int date[3])     /*计算由公元1年到本年的日数*/
 
 - {
 
 -         int days,a,b;
 
 -         a=(date[0]-1)/4+(date[0]-1)/400-(date[0]-1)/100;
 
 -         b=date[0]*365;
 
 -         days=a+b;
 
 -         return days;
 
 - }
 
 - month_days(int date[3])     /*计算由1月开始到本月的日数*/
 
 - {
 
 -         if(date[1]==1)return 0;
 
 -         if(date[1]==2)return 31;
 
 -         if(date[1]==3)return 59;
 
 -         if(date[1]==4)return 90;
 
 -         if(date[1]==5)return 120;
 
 -         if(date[1]==6)return 151;
 
 -         if(date[1]==7)return 181;
 
 -         if(date[1]==8)return 212;
 
 -         if(date[1]==9)return 243;
 
 -         if(date[1]==10)return 273;
 
 -         if(date[1]==11)return 304;
 
 -         if(date[1]==12)return 334;
 
 - }
 
  
- get_days(int date[3])    /*计算总日子数*/
 
 - {
 
 -         int year_days(int);
 
 -         int month_days(int);
 
 -         int days;
 
 -         days=year_days(date)+month_days(date)+date[2];
 
 -         if(date[0]%100!=0&&date[0]%4==0||date[0]%400==0)
 
 -                 if(date[1]>2)days++;
 
 -         return days;
 
 - }
 
 - get_mondays(int date[3])   /*计算每月的日数*/
 
 - {
 
 -         if(date[1]==1)return 31;
 
 -         if((date[2]%100!=0&&date[2]%4==0||date[2]%400==0)&&date[1]==2)return 29;
 
 -         if(date[1]==2)return 28;
 
 -         if(date[1]==3)return 31;
 
 -         if(date[1]==4)return 30;
 
 -         if(date[1]==5)return 31;
 
 -         if(date[1]==6)return 30;
 
 -         if(date[1]==7)return 31;
 
 -         if(date[1]==8)return 31;
 
 -         if(date[1]==9)return 30;
 
 -         if(date[1]==10)return 31;
 
 -         if(date[1]==11)return 30;
 
 -         if(date[1]==12)return 31;
 
 - }
 
 - main()
 
 - {
 
 -         int get_days(int); /*声明函数*/
 
 -         int get_mondays(int);
 
 -         int date[3],days,mondays;
 
 -         int i;                           
 
 -         printf("please Please enter a date\n"); /*输入年月日*/
 
 -         printf("year:");
 
 -         scanf("%d",&date[0]);
 
 -         printf("month:");
 
 -         scanf("%d",&date[1]);
 
 -         printf("day:");
 
 -         scanf("%d",&date[2]);
 
 -     days=get_days(date);
 
 -         mondays=get_mondays(date);
 
 -         printf("          %d/%d/%d\n",date[0],date[1],date[2]);
 
 -         printf("=============================\n");
 
 -         printf(" sun mon tue wed thu fri sat\n");
 
 -         for(i=1;i<=(days-date[2])%7;i++)    /*总日数减去日再除7求余,可以计算出每月开头空了的天数*/
 
 -         {        
 
 -                 printf("    ");
 
 -         }
 
 -         for(i=1;i<=mondays;i++)
 
 -         {   
 
 -                 if(i<10)printf(" ");
 
 -                 if(i==date[2])
 
 -                         printf("[%d]",i);
 
 -                 else
 
 -                         printf(" %d ",i);
 
 -             if((days-date[2]+i)%7==0)
 
 -                         printf("\n");
 
 -         }
 
 -         printf("\n");
 
 -         system("pause");
 
 - }
 
  复制代码 
 
 |   
 
 
 
 |