c语言输入日期算天数c
A. 求助,c语言,输入日期及天数计算新日期,求代码
#include<stdio.h>
int main()
{ struct date
{ int year,month,day;
} dt;
int i,days,mon[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d%*c%d%*c%d,%d",&dt.year,&dt.month,&dt.day,&days);
dt.day+=days;
while(dt.day>mon[dt.month])
{ if(dt.month==2)
mon[2]=28+(dt.year%4==0&&dt.year%100||dt.year%400==0);
dt.day-=mon[dt.month];
if(++dt.month>12)
{ dt.month=1;
dt.year++;
}
}
printf("result:%d-%d-%d ",dt.year,dt.month,dt.day);
return 0;
}
B. 用c语言编程计算输入出生日期可计算出到现在存活时间天数
使用time.h,首先使用mktime函数将出生日期换算成time_t,也就是秒数。然后再使用time函数获取当时时间的秒数,两者相减,就是相差的秒数,再除以一天的秒数换算成天数就可以了。
全部源码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
main()
{
intyear,mon,mday;
time_tt1,t2;
intdays;
structtmtm;
printf("Pleaseinputyear,mon,day:");
scanf("%d,%d,%d",&year,&mon,&mday);
memset(&tm,0,sizeof(tm));
tm.tm_year=year-1900;
tm.tm_mon=mon-1;
tm.tm_mday=mday;
t1=mktime(&tm);
t2=time(NULL);
days=(t2-t1)/(24*3600);
printf("%d ",days);
}
C. 急求!C语言计算天数
#include<stdio.h>
int main()
{
int yyyy,mm,dd,a,b;
scanf("%d/%d/%d",&yyyy,&mm,&dd);
a=31*(mm>1)+28*(mm>2)+31*(mm>3)+30*(mm>4)+31*(mm>5)+30*(mm>6)+31*(mm>7)+31*(mm>8)+30*(mm>9)+31*(mm>10)+30*(mm>11)+dd;
b=((yyyy%4==0)*(yyyy%100!=0)+(yyyy%400==0))*(mm>2);
printf("%d\n",a+b);
return 0;
}
D. 用c语言编写计算两个日期之间的天数
#include <time.h>
#include <stdio.h>
void main()
{
tm t1={0},t2={0};
t1.tm_year = 1999-1900;
t1.tm_mon = 2-1;
t1.tm_mday = 3;
t2.tm_year = 2015-1900;
t2.tm_mon = 5-1;
t2.tm_mday = 4;
time_t a1 = mktime(&t1);
time_t a2 = mktime(&t2);
printf("相差%d天", (a2-a1)/86400);
}
ps:看不懂了再追问
E. C语言中输入一个日期计算他是今年的第几天
输入年月日三个值,先累加该年之前各个月的每月天数,最后累加日期天数即可获取结果。
一、算法设计:
1、输入年月日三个值;
2、为保证程序健壮性,可以对三个值的合法性进行判断,只对合法数据进行操作;
3、累加之前各月天数;
4、累加当前日值;
5、输出结果。
二、注意点:
可以使用数组存储各个月份的天数,用循环累加。需要注意的是闰年的判断。对于闰年,2月要多加一天。
三、参考代码:
#include<stdio.h>
intmain()
{
intmdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};//十二个月的天数。
inty,m,d,r=0,i;
scanf("%d%d%d",&y,&m,&d);
if(y%400==0||(y%4==0&&y%100!=0))//闰年。
mdays[1]=29;//设置闰年二月值。
if(y<0||m<=0||m>12||d<=0||d>mdays[m-1])//输入非法。
{
printf("输入年月日不合法 ");//提示并退出。
return-1;
}
for(i=0;i<m-1;i++)//累加之前各个月。
r+=mdays[i];
r+=d;//累加日期值。
printf("%d ",r);//输出结果。
return0;
}
F. 用c语言从键盘任意输入一个日期(年月日),输出第二天的日期(年月日)。
#include<stdio.h>
intmonthsize(intyear,intmonth){
intdays;
if(month==2){
if(year%4==0&&year%100!=0||year%400==0)
return29;
return28;
}
switch(month){
case1:
case3:
case5:
case7:
case8:
case10:
case12:days=31;break;
case4:
case6:
case9:
case11:days=30;break;
}
returndays;
}
intmain(){
intyear,month,day,days;
printf("年月日:");
while(scanf("%d%d%d",&year,&month,&day)==3){
days=monthsize(year,month);
if(days==day){
if(month==12){
++year;
month=1;
day=1;
}
else++month;
}
else++day;
printf("第二天是:%d/%02d/%02d ",year,month,day);
printf("年月日(qtoquit):");
}
return0;
}
(6)c语言输入日期算天数c扩展阅读
输入两个任意日期计算相隔天数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<time.h>
intget_days(constchar*from,constchar*to);
time_tconvert(intyear,intmonth,intday);
intmain()
{
constchar*from=“2013-3-15”;
constchar*to=“2015-8-14”;
intdays=get_days(from,to);
printf(“From:%s To:%s ”,from,to);
printf(“%d ”,天);
个系统(“暂停”);
返回0;
}
20time_tconvert(intyear,intmonth,intday)
{
tminfo={0};
info.tm_year=year-1900;
info.tm_mday=天;
返回mktime(&info);
}
intget_days(constchar*from,constchar*to)
{
int年,月,日;
sscanf(from,“%d-%d-%d”,&year,&month,&day);
intfromSecond=(int)convert(年,月,日);
sscanf(to,“%d-%d-%d”,&year,&month,&day);
inttoSecond=(int)convert(年,月,日);
return(toSecond-fromSecond)/24/3600;
}
G. 用c语言编程计算两个日期之间的天数
直接算两个日期距离公元元年1月1日的天数:
若干个完整的年,若干个完整的月,若干天,加起来之后两个天数相减就行了.
日期的合法性,闰年之类的就不罗嗦了.
H. c语言编程日期计算
//_MONTH代表一年里各月份的天数
int_MONTH[]={{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};
//days第一参数代表月份,第二个参数代表天数
//比如11月3日,可以这样调用days(11,3);
intdays(int*m,int*day)
{
inti,md=0;
unsignedintd;
for(i=0;i<(*m-1)&&(i<11);i++)
md=md+_MONTH[i];
d=md+(*day);//总天数累加
return(int)((d+365)-365);//总天数加365天再减365天相当于取余数的原理(你把365当成整体来对待你就会明白的),你可设想下,比如你输入的日期是12月31日那么总天数就肯定是365,而你若不加365天,直接减去365天,这样一来就不符合逻辑。这是一个逻辑性问题。你可以自己好好琢磨下。
}