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天,這樣一來就不符合邏輯。這是一個邏輯性問題。你可以自己好好琢磨下。
}