如下:
typedef struct date
{
int year;
int month;
int day;
};
提示:
1.	使用如下函数完成相应功能
int isleapyear(int y); //计算是否为闰年
int islegal(Date x); //计算日期是否合法
int calcday(Date x);//计算日期是当年的第几天,用于计算两个日期之间天数的差值
2.	用于一维数组表示一年每月含有的天数
int dayofmonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
3.	需要考虑闰年的情况
输入:输入为两行,第一行为三个整数,表示第一个日期的年月日;第二行为三个整数,表示第二个日期的年月日。
输入提示信息:"Please input the first date:”
输入格式:"%d %d %d"
输入提示信息:"Please input the second date:”
输入格式:"%d %d %d"
如:
Please input the first date: 2016 2 30
Please input the second date:2016 5 10
或
Please input the first date: 2016 2 10
Please input the second date:2015 12 9
或
Please input the first date: 2016 5 1
Please input the second date:2015 6 1
输出:输出一行是一个整数,代表两个日期之间相差的天数。若两个日期不在同一年,或者日期不合法,输出-1。
输出提示信息:"Day between two dates:”
输出格式:"%d"
输出样例:
Day between two dates:-1
或
Day between two dates:-1
或
Day between two dates::-1
#include <stdio.h>
#include <math.h>
typedef struct date
    {
    int year;
    int month;
    int day;
    }Date;
int isleapyear(int y);
int islegal(Date a);
int calcday(Date a);
int main(){
    int i=1;
    Date a;
    Date b;
    printf("Please input the first date:");
    scanf("%d %d %d",&(a.year),&(a.month),&(a.day));
    printf("Please input the second date:");
    scanf("%d %d %d",&(b.year),&(b.month),&(b.day));
    printf("Day between two dates:");
    if(a.year != b.year){
        printf("-1");
    }else if(islegal(a)==-1 ||islegal(b)==-1){
        printf("-1");
    }else{
        printf("%d",calcday(b)-calcday(a));
    }
}
int isleapyear(int y){
    int i=0;
    if((y%4==0 && y%100!=0) || (y%400==0)){
        i=1;
    }
    return i;
}
int islegal(struct date a){
   int dayofmonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
   if(isleapyear(a.year)==1){
        dayofmonth[1]++;
   }
   if(a.day<=dayofmonth[a.month-1] && a.day>0 && a.month>0 && a.month<13){
    return 1;
   }else{
    return -1;
   }
}
int calcday(struct date a){
    int i,day=0;
    int dayofmonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if(isleapyear(a.year)==1){
        dayofmonth[1]++;
    }
    for(i=0;i<=a.month-2;i++){
        day=dayofmonth[i]+day;
    }
    day=day+a.day;
    return day;
}
C语言,使用结构体读入两个在同一年的日期,判断日期是否合法,并计算两个日期之间相差的天数。结构体定义如下:
原文:http://www.cnblogs.com/wannur/p/6860535.html