求大哥看看哪里错了(计算出生到现在生存了多少天)
#include<stdio.h>int main()
{
int year,month,day,sum,date,a;
int year_n,month_n,day_n,date_n;
printf("请输入你的生日( 如1988-05-20):");
scanf("%d%d%d",&year,&month,&day);
printf("请输入今年日期(如2016-03-28):");
scanf("%d%d%d",&year_n,&month_n,&day_n);
switch(month)//出生那年那日是那年的第几天
{
case 12:date+=30;
case 11:date+=31;
case 10:date+=30;
case 9:date+=31;
case 8:date+=31;
case 7:date+=30;
case 6:date+=31;
case 5:date+=30;
case 4:date+=31;
case 3:if((year%4==0&&year%100!=0||year%4==0))
{
date+=29;
}
else
{
date+=28;
}
case 2:date+=31;
case 1:date+=day;
}
switch(month_n)//现在这年是今年的第几天
{
case 12:date_n+=30;
case 11:date_n+=31;
case 10:date_n+=30;
case 9:date_n+=31;
case 8:date_n+=31;
case 7:date_n+=30;
case 6:date_n+=31;
case 5:date_n+=30;
case 4:date_n+=31;
case 3:if((year_n%4==0&&year_n%100!=0||year_n%4==0))
{
date_n+=29;
}
else
{
date_n+=28;
}
case 2:date_n+=31;
case 1:date_n+=day_n;
}
if((year_n%4==0&&year_n%100!=0||year_n%4==0))
{
a=366;
}
else
{
a=365;
}
sum=(year_n-year)*a+date_n+a-date;
printf("你在这个世界上生存了%d",sum);
return 0;
} 本帖最后由 jackz007 于 2021-3-21 11:33 编辑
#include <stdio.h>
#include <time.h>
// 获取今天的日期
void today(int * year , int * month , int * day)
{
time_t T ;
struct tm * TM ;
time(& T) ;
TM = localtime(& T) ;
* year = TM -> tm_year + 1900 ;
* month= TM -> tm_mon+ 1 ;
* day = TM -> tm_mday ;
}
// 获取从 1900-01-01 起,到指定日期所经历的天数
int ds(int year , int month , int day)
{
int md = {31 , 28 , 31 , 30 , 31 , 30 , 31 ,31 ,30 , 31 , 30 , 31} ;
int d , i ;
for(d = 0 , i = 1900 ; i < year ; i ++) d += (! (i % 4) && (i % 100) || ! (i % 400)) ? 366 : 365 ;
if(! (year % 4) && (year % 100) || ! (year % 400)) md ++ ;
for(i = 1 ; i < month ; i ++) d += md ;
d += day ;
return d ;
}
int main()
{
int year , month , day , days , d , i , j , k ;
printf("你的出生日期(如 1988-05-20):") ;
scanf("%d-%d-%d" , & year , & month , & day) ;
today(& year , & month , & day) ;
printf("今天是你生命中的第 %d 天\n" , ds(year , month , day) - ds(year , month , day) + 1) ;
}
编译、运行实况
D:\00.Excise\C>g++ -o d d.c
D:\00.Excise\C>d
你的出生日期(如 1988-05-20):1988-05-20
今天是你生命中的第 11994 天
D:\00.Excise\C> 谢谢,我还是想知道,我的是哪里出了问题(如果可以的话) 是否为闰年判断错误
页:
[1]