计算天数的小程序

方法一:

#include <stdio.h>
//函数声明
void year(int *e_p, int *n_p, int *year);
void math(int *e_p, int *n_p, int *math,int *year);
void day(int *e_p, int *n_p, int *day, int *math,int *year);
//函数声明
void year(int *e_p, int *n_p,int *year)
{
*year = *n_p - *e_p;
}
void math(int *e_p, int *n_p, int *math, int *year)
{
if (*n_p - *e_p < 0)
{
*year = *year - 1;
*math = 12 + *n_p - *e_p;
}
else
{
*math = *n_p - *e_p;
}
}
void day(int *e_p, int *n_p, int *day, int *math,int *year,int *e_math)
{
if (*n_p - *e_p < 0)
{
*math = *math - 1;
switch (*e_math)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:*day = 31 + (*n_p - *e_p); break;
case 4:
c
ase 6:
case 9:
case 11:*day = 30 + (*n_p - *e_p); break;
case 2:
{
if (*year%4==0&&*year%100!=0||*year%400==0)
*day = 28 + (*n_p - *e_p);
else
*day = 29 + (*n_p - *e_p);
}break;
}
}
else
*day = *n_p - *e_p;
}
int main(void)
{
int new_year, new_math, new_day, end_year, end_math, end_day, year_over, math_over, day_over;
printf("请按以下标准输入:XXXX.XX.XX~XXXX.XX.XX\n");
scanf_s("%d.%d.%d~%d.%d.%d", &end_year, &end_math, &end_day, &new_year, &new_math, &new_day, sizeof(int), sizeof(int), sizeof(int), sizeof(int), sizeof(int), sizeof(int));
year(&end_year, &new_year, &year_over);
math(&end_math, &new_math, &math_over, &year_over);
day(&end_day, &
new_day, &day_over, &math_over, &year_over,&end_math);
printf("%d,%d,%d\n", year_over, math_over, day_over);
system("pause");
}




方法二:

#include"stdio.h"

/*这是一个计算日期差值的小程序,通过输入一个时间区间
计算这个区间所经历的年月日各是多少
*/
int sunDay(int Byear,int Bmath,int Bday,int Eyear,int Emath,int Eday);
int timeTable(int num);
int main(){ 
printf("please input a Begim time \n");//输入一个起始年份 
     int Byear,Bmath,Bday;
     scanf("%d.%d.%d",&Byear,&Bmath,&Bday);
      printf("please input a End time\n");//输入一个结束年份 
     int Eyear,Emath,Eday;
     scanf("%d.%d.%d",&Eyear,&Emath,&Eday);
     int Time;
    Time = sunDay(Byear,Bmath,Bday,Eyear,Emath,Eday);//调用函数 计算天数并打印 
    printf("time is   :%d",Time);
//2014 5 6~2013 5 6
}
int sunDay(int Byear,int Bmath,int Bday,int Eyear,int Emath,int Eday){//设计函数,计算时间区间的天数 


int i,j,n1,n2,n3,time=0;//计算年数 
n1=Eyear-Byear;

if(n1==1)
if(Bmath>Emath)
n1-=1;
printf("YEAR= %d\n",n1);
for(i=n1;i>0;i--){
if((Byear%4==0&&Byear%100!=0)||Byear%400==0)
time+=366;
else
time+=365;
Byear++;
 
 
}
printf("YEAR= %d\n",time);
   //  if((Nyear%4==0&&Nyear%100!=0)||Nyear%400==0){
  
        if(Bmath>Emath)//计算月数 
            n2=Emath+12-Bmath;
          else
n2=Emath-Bmath;
if(Bday>Eday)
n2-=1;
if(n1>0){
     for(i=n2;i>0;i--) 
 {
            if(Bmath<Emath)
           {if(Bmath==2&&((Eyear%4==0&&Eyear%100!=0)||Eyear%400==0))
time+=1;
                 time+=timeTable(Bmath++);
           
           }
            else{
             if(Bmath==2&&((Eyear%4==0&&Eyear%100!=0)||Eyear%400==0))
          time+=1;
    time+=timeTable(Emath++);
    }
           } 
           
}
            
 if(n1==0)
  {
  for(i=n2;i>0;i--) 
 {  if(Bmath==2&&((Eyear%4==0&&Eyear%100!=0)||Eyear%400==0))
time+=1;
  time+=timeTable(i);
   printf("i= %d\n",i); 
   printf("time= %d\n",time); 
 }

  }
             printf("Math= %d\n",n2);
printf("Math= %d\n",time); 
          
            if(Bday>Eday)                 //计算天数 
              n3=timeTable(Bmath)-Bday+Eday;
              else
            n3=Eday-Bday;
        if(n3<0)
         n3*=-1;
printf("Day= %d",n3);
time+=n3;
//printf("Day= %d",time);
            return time;
     }
int timeTable(int num){                    //月份查询表 
         int table[]={  0,31,28,31,
               30,31,30,31,
                        31,30,31,30,31};
                       // printf("num = %d",num); 
return table[num];    

}

还是指针比较好用~


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值