當前位置:首頁 » 編程語言 » 計算天數c語言

計算天數c語言

發布時間: 2022-12-21 01:19:19

1. 用c語言編程計算兩個日期之間的天數

直接算兩個日期距離公元元年1月1日的天數:

若干個完整的年,若干個完整的月,若干天,加起來之後兩個天數相減就行了.

日期的合法性,閏年之類的就不羅嗦了.

2. 如何用C語言計算日期間離天數

#include <stdio.h>

int main(void)
{
int y1, m1, d1;
int y2, m2, d2;
int i, sum = 0;
int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30 ,31, 30 ,31};

/*input two dates*/
scanf("%d%d%d", &y1, &m1, &d1);
scanf("%d%d%d", &y2, &m2, &d2);

/*sum up the year between y1 and y2*/
for (i = y1 + 1; i < y2; ++i)
if (i % 400 == 0 || i % 100 != 0 && i % 4 == 0) sum += 366;
else sum += 365;

/*sum up the remaining days in y1*/
for (i = m1; i < 12; ++i)
sum += month[i];
sum += month[m1 - 1] - d1;
if (m1 <= 2 && (y1 % 400 == 0 || y1 % 100 != 0 && y1 % 4 == 0)) ++sum;

/*sum up the past days in y2*/
for (i = 0; i < m2; ++i)
sum += month[i];
sum += d2;
if (m2 > 2 && (y1 % 400 == 0 || y1 % 100 != 0 && y1 % 4 == 0)) ++sum;

printf("The total days is %d\n", sum);
return 0;
}

3. C語言求兩個日期相差的天數

計算兩個年月日之間的天數,思路是分別算出日期的總天數然後相減。
要考慮閏年的情況,判斷閏年的口訣:4年一閏,100年不閏,400年再閏。
((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
網上找了一個(偷懶= =!),修改下如下:
#include <stdio.h>
int sum(int y,int m,int d)
{
unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,s=0;
for(i=1;i<y;i++)
if(i%4==0 && i%100!=0 || i%400==0)
s+=366;//閏年
else
s+=365;//平年
if(y%4==0 && y%100!=0 || y%400==0)
x[2]=29;
for(i=1;i<m;i++)
s+=x[i];//整月的天數
s+=d;//日的天數
return s;//返回總天數,相對公元1年
}
void main()
{
unsigned char y1,m1,d1,y2,m2,d2;
int s1,s2;
printf("輸入第一個年 月 日:");
scanf("%d %d %d",&y1,&m1,&d1);
printf("輸入第二個年 月 日:");
scanf("%d %d %d",&y2,&m2,&d2);
s1=sum(y1,m1,d1);
s2=sum(y2,m2,d2);
if (s1 > s2)
printf("相差天數:%ld\n",s1-s2);
else
printf("相差天數:%ld\n",s2-s1);
}
以上代碼VC6編譯測試通過。
雖然這個思路顯得有些笨,但是其它演算法,代碼太長太復雜,要考慮多種情況,不如直接算兩個日期距離公元元年1月1日的天數,然後相減

4. C語言下計算總天數的小程序 老是得不到正確結果 各位幫我啦TOT

你的switch語句很有問題,而且你很多語句的括弧只有一半,比如scanf語句和default那句。可以這么說,你的語法還不對,演算法也有問題。我寫了一個,你自己看看。
#include<stdio.h>
void
main()
{
int
day,month,year,sum,i;
int
y[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("please
input
year,month,day\n");
scanf("%d%d%d",&year,&month,&day);
for(i=0,sum=0;i<month-1;i++)sum+=y[i];
sum+=day;
if(year%400==0||year%4==0&&year%100!=0&&month>2)sum+=1;
printf("The
days
are%d.\n",sum);
}

5. 輸入年,月,計算該月的天數 C語言程序

#include"stdio.h"
#include"stdlib.h"
intmain()
{inty,m,days;//存放年、月、天數的變數
printf("請輸入年、月(逗號隔開): ");//輸入提示
scanf("%d,%d",&y,&m);//輸入邊長(輸入時用逗號隔開)
printf("%d%d ",y,m);
switch(m)
{case1:case3:case5:case7:case8:case10:case12:days=31;break;
case4:case6:case9:case11:days=30;break;
case2:{if(y%4==0&&y%100!=0||y%400==0)days=29;//閏年
elsedays=28;
break;
}
default:days=0;//輸入月份不對
}
printf("%d年%d月有%d天 ",y,m,days);
system("pause");
}

6. 急求!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;
}

7. c語言關於計算天數

m[12]=(31,28,31,30,31,30,31,31,30,31,30,31);

這句的寫法是錯的
一、初始化應該在數組定義時
二、括弧應該用{}
修改如下:
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};

具體到其它問題,請LZ自行查閱處理,你的演算法邏輯好麻煩,看的不是很懂

8. 給定年月日 怎樣用C語言編程計算2個日期之間的時間天數

1970 年以後的時間,可以用 time.h 里的函數計算。時間精度為秒。按題目要求,輸出時間單位用天。程序如下:
#include <stdio.h>
#include <time.h>
time_t YMD_hhmmss_2_s70(int Y, int M, int D, int hh, int mm, int ss){
struct tm *target_tm;
time_t tt;
time (&tt);
target_tm=localtime(&tt);
target_tm->tm_year = Y - 1900;
target_tm->tm_mon= M - 1;
target_tm->tm_mday = D;
target_tm->tm_hour = hh; // hour
target_tm->tm_min = mm;
target_tm->tm_sec = ss;
tt = mktime(target_tm); // from tm to time_t (s)
return tt;
}
int main()
{
int y1,m1,d1,y2,m2,d2;
time_t t1,t2;
int dt;
printf("input y1 m1 d1: ");
scanf("%d %d %d",&y1,&m1,&d1);
printf("\ninput y2 m2 d2: ");
scanf("%d %d %d",&y2,&m2,&d2);
t1 = YMD_hhmmss_2_s70(y1,m1,d1,0,0,0);
t2 = YMD_hhmmss_2_s70(y2,m2,d2,0,0,0);
dt = (t2-t1)/(24*3600);
printf("\ndt=%d\n",dt);
return 0;
}
這里未包含日期的合法性判斷。
1970 年以前 要另寫程序。某年的日子是當年的第幾天可用下面函數得出:
int YMD_2_JD(int Y, int M, int D){
const short MonthDay[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int JD,i;
JD=D;
for (i=0;i<M;i++) JD+=MonthDay[i];
if (((Y%4==0)&&(Y%100!=0)||(Y%400==0)) && (M>2)) JD++;
return JD;
}
整年的天數,涉及閏年的判斷:
某年是否閏年,用 (Y%4==0)&&(Y%100!=0)||(Y%400==0) 判斷。閏年366天,平年365天。 有了這些,寫程序不難。
未考慮公元前的年月日計算。

9. 用C語言switch語句計算某年某月,求該月的天數。

#include <stdio.h>
void main()
{
int a=0,b=0;//保存年月
printf("請輸入年");
scanf("%d",&a);
printf("請輸入月");
scanf("%d",&b);
switch(b)
{
case 1:printf("該月天數為31");
break;
case 2:
if ((a%4==0&&a%100!=0)||(a%400==0))
{
printf("該月天數為29");
}
else
{
printf("該月天數為28");
}
break;
case 3:printf("該月天數為31");
break;
case 4: printf("該月天數為30");
break;
case 5: printf("該月天數為31");
break;
case 6: printf("該月天數為30");
break;
case 7: printf("該月天數為31");
break;
case 8: printf("該月天數為31");
break;
case 9:printf("該月天數為30");
break;
case 10:printf("該月天數為31");
break;
case 11: printf("該月天數為30");
break;
case 12: printf("該月天數為31");
break;
}
}

熱點內容
python全局變數文件 發布:2025-05-15 07:35:06 瀏覽:954
位元組和存儲位元組 發布:2025-05-15 07:32:10 瀏覽:521
linux應用開發工程師 發布:2025-05-15 07:32:07 瀏覽:261
sqldcl 發布:2025-05-15 07:29:18 瀏覽:199
canvas的圖像上傳 發布:2025-05-15 07:29:17 瀏覽:102
離線緩存為什麼點不動 發布:2025-05-15 07:27:17 瀏覽:829
釘鼎伺服器出口ip 發布:2025-05-15 07:13:08 瀏覽:279
移動硬碟和光碟哪個存儲時間長 發布:2025-05-15 07:04:25 瀏覽:489
壓縮一定 發布:2025-05-15 06:57:30 瀏覽:289
進棧演算法 發布:2025-05-15 06:56:02 瀏覽:215