方法一:
#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:
case 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];
}
还是指针比较好用~