用c语言的简单语法编写两个日期相差天数
时间: 2023-12-10 07:05:41 浏览: 79
【计算机毕业设计】C语言项目源码c语言万年历源码
以下是用C语言编写的计算两个日期之间相差天数的程序:
```c
#include<stdio.h>
struct date{
int year;
int month;
int day;
};
int isLeapYear(int year){
if((year%4==0&&year%100!=0)||year%400==0){
return 1;
}
else{
return 0;
}
}
int getDays(struct date d){
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(d.year)){
days[2]=29;
}
int sum=0;
for(int i=1;i<d.month;i++){
sum+=days[i];
}
sum+=d.day;
return sum;
}
int main(){
struct date d1,d2;
printf("请输入第一个日期(年 月 日,以空格分隔):");
scanf("%d%d%d",&d1.year,&d1.month,&d1.day);
printf("请输入第二个日期(年 月 日,以空格分隔):");
scanf("%d%d%d",&d2.year,&d2.month,&d2.day);
int days1=getDays(d1);
int days2=getDays(d2);
int days=0;
if(d1.year==d2.year){
days=days2-days1;
}
else{
for(int i=d1.year;i<d2.year;i++){
if(isLeapYear(i)){
days+=366;
}
else{
days+=365;
}
}
days+=days2+(isLeapYear(d2.year)?366:365)-days1;
}
printf("两个日期之间相差%d天\n",days);
return 0;
}
```
程序首先定义了一个日期的结构体,包含年、月、日三个字段。然后定义了一个函数isLeapYear,用于判断一个年份是否为闰年。接下来定义了一个函数getDays,用于计算一个日期是该年的第几天。最后在主函数中,程序从用户输入中获取了两个日期,然后计算它们之间相差的天数,并输出结果。
在计算相差天数时,程序首先判断两个日期是否在同一年,如果在同一年,则直接计算两个日期的天数差;否则,程序需要计算两个日期所在年份之间的天数差,再加上两个日期所在年份的天数差。计算两个日期所在年份之间的天数差时,程序需要判断这两个年份是否为闰年,以确定这一年的天数。
阅读全文