把之前写的一个题目改了一下,哎,就是玩
#include<stdio.h>
typedef struct Date{
int year;
int month;
int day;
}date;
int months[13] = {0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main(){
void addDays(date startdate, int days, date *enddate);
int isRunYear(date dt);
int isTrueTime(date dt);
date startdate, enddate, nowdate;
int i;
printf("请输入出生日期(年 月 日):");
scanf("%d %d %d", &startdate.year, &startdate.month, &startdate.day);
printf("请输入当前日期(年 月 日):");
scanf("%d %d %d", &nowdate.year, &nowdate.month, &nowdate.day);
for( i = 1000;; i++){
addDays(startdate, i, &enddate);
if(nowdate.year == enddate.year && nowdate.month == enddate.month && nowdate.day == enddate.day)
break;
}
printf("%d",i);
}
int isRunYear(date dt){//闰年返回1,非润0
if((dt.year % 4== 0 && dt.year % 100 != 0) || dt.year % 400 == 0)
return 1;
return 0;
}
void addDays(date startdate, int days, date *enddate){
//int isRunYear(date dt);
int i;
date tmp = startdate;
int tday;
for( i = 1; i <= days; i++){
//tday = (month != 2? months[month] : months[month] + isRunYear(startdate));
if(tmp.month == 2){
tday = months[tmp.month] + isRunYear(tmp);
}else{
tday = months[tmp.month];
}
if( tmp.day + 1 <= tday){
tmp.day++;
}else{
if(tmp.month+1 > 12){
tmp.year++;
tmp.month = 1;
tmp.day = 1;
}else{
tmp.month++;
tmp.day = 1;
}
}
// printf("%d年%d月%d日\n", tmp.year,tmp.month, tmp.day);
}
enddate->year = tmp.year;
enddate->month = tmp.month;
enddate->day = tmp.day;
}
int isTrueTime(date dt){ //有效日期返回1,无效0
// int isRunYear(date dt);
int days;
if(dt.year < 1000 && dt.year > 9999)
{
printf("年无效");
return 0 ;
}
if(dt.month < 0 && dt.month > 12)
{
printf("月无效");
return 0;
}
days = months[dt.month] + isRunYear(dt);
if( dt.day < 0 && dt.day > days)
{
printf("日无效");
return 0;
}
return 1;
}