C語言,使用結構體讀入兩個在同一年的日期,判斷日期是否合法,並計算兩個日期之間相差的天數。結構體定義如下:


如下:
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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM