① c語言輸入年月日計算該日是該年第幾天,
//根據用戶輸入的日期計算出該日期是該年的第多少天。
#include
#include
//system("pause")
main()
{
int year,month,day,total,leap; //total總天數 ,leap用於閏年的2月天數
printf("請輸入年 月 日(按順序,中間用空格隔開):");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0 && year%100!=0) || year%400==0) //判斷是否閏年,閏年2月多一天,所以閏年leap為1,平年為leap為0。
{
leap=1;
}
else
{
leap=0;
}
switch(month) //根據月份計算對應的最終天數。
{
case 1: total=day;break;
case 2: total=31*1+day;break;
case 3: total=31*1+28+leap+day;break;
case 4: total=31*2+28+leap+day;break;
case 5: total=31*2+28+leap+30*1+day;break;
case 6: total=31*3+28+leap+30*1+day;break;
case 7: total=31*3+28+leap+30*2+day;break;
case 8: total=31*4+28+leap+30*2+day;break;
case 9: total=31*5+28+leap+30*2+day;break;
case 10: total=31*5+28+leap+30*3+day;break;
case 11: total=31*6+28+leap+30*3+day;break;
case 12: total=31*6+28+leap+30*4+day;break; //12月之前的11個月中有6個31天,4個30天,2月為28天+leap。
}
if(year>=1 && year<=9999 && month>=1 && month<=12 && day>=1 && day<=31) //判斷輸入是否正解,年份最大為9999,可自行更改。
{
printf("\n\t%d月%d日止,%d年已過去%d天。\n\n",month,day,year,total);
system("pause"); //按任意鍵繼續...
}
else
{
printf("\n\t錯誤\n\n");
system("pause"); //按任意鍵繼續...
}
return 0;
}
② C語言程序(判斷每月天數以及是否為閏年)
源代碼如下:
#include <stdio.h>
int main()
{
int year;
printf("輸入年份: ");
scanf("%d",&year);
if(year%4 == 0)
{
if( year%100 == 0)
{
// 這里如果被 400 整數是閏年
if ( year%400 == 0)
printf("%d 是閏年", year);
else
printf("%d 不是閏年", year);
}
else
printf("%d 是閏年", year );
}
else
printf("%d 不是閏年", year);
return 0;
}
(2)c語言如何判斷閏年第幾天擴展閱讀
1、判斷輸入的年份是否為閏年,自定義函數 leap() 來進行判斷。該函數的核心內容就是閏年的判斷條件即能被 4 整除但不能被 100 整除,或能被 400 整除。
2、求輸入日期距 2011 年 1 月 1 日有多少天。首先判斷 2011 年距輸入的年份有多少年,這其中有多少年是閏年就將 sum 加多少個 366,有多少年是平年便將 sum 加上多少個 365。
③ C語言如何判斷是閏年,閏年判斷條件
1、首先在電腦中打開C-Free 5編譯器,int year=0;定義year變數為整形並初始化值0,用於儲存年份。
④ 怎麼用C語言輸入一個日期,求該日期是該年的第幾天
我大概給個思路,代碼是現寫的 沒調試
先定義每個月的天數,2月按28天算
輸入年月日後,根據年判斷是否閏年(閏年加1天),再從1月加到當月的前一月,再加上日期就可以了
#include <stdio.h>
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
main()
{int yy,mm,dd, days;
int i;
printf("input year:"); scanf("%d", &yy);
printf("input month:"); scanf("%d", &mm);
printf("input day:"); scanf("%d", &dd);
/* 如果大於2月,要做閏年的判斷,忘了,不一定準 */
if( mm > 2 && ((year%4==0 && year%100!=0) || year%400==0) ) days = 1;
else days = 0;
/* 加上前面各整月的天數 */
for(i = 0; i < mm-1; i++) days += month[i];
/* 加上日數 */
days += dd;
printf("This is the %d day of year %d!!
", days, yy);
}
比如輸入 1999 2 1
應該輸出:This is the 32 day of year 1999!!
⑤ C語言如何判斷是閏年,閏年判斷條件
C語言如何判斷是閏年,閏年判斷條件
不等價,因為判斷閏年的標準是:1、能整除4且不能整除100 2、能整除400
你的意思是:
每4年有個閏年<——>1896是閏年,4年後1900也是閏年<——>除以4就是閏年
但嚴格上講,"每4年一個閏年"這說法不嚴謹。應該是四年一閏,百年不閏,四百年再閏。
為什麼呢?
1、產生閏年原因:地球繞太陽執行周期為365天5小時48分46秒(合365.24219天)即一回歸年(tropical year)。公歷的平年只有365日,比回歸年短約0.2422 日,所餘下的時間約為四年累計一天,故四年於2月加1天,使當年的歷年長度為366日,這一年就為閏年。
2、但是,上面演演算法又有了一個問題。就是0.2422*4=0.9688,比一天還差0.0322天,每4年差0.0322天不算多,但每400年就會差了約3天。即是說,假如每4年一個閏年,那麼每400年就會有100個閏年,然後會多算了3天。
所以,就規定了每四百年中要減少三個閏年。公歷年份是整百數的,必須是400的倍數的才是閏年,不是400的倍數的,雖然是100的倍數,也是平年。
綜合以上2點,就有了現有的閏年判斷標准。
平閏年怎麼區分?
判定公歷閏年遵循的規律為: 四年一閏,百年不閏,四百年再閏.
公歷閏年的簡單計算方法:(符合以下條件之一的年份即為閏年)
1。能被4整除而不能被100整除。(如2004年就是閏年,1900年不是)
2。能被400整除。(如2000年是閏年)
下面有個簡單的方法判斷是否是閏年。
(1)判斷年份是否是閏年,只須看年份的末兩位,如果末兩位數能整除4,那麼就是閏年,反之,就不是。
(2)遇到末兩位數都是0的年份,我們就看年份的前兩位數;如果前兩位數能整除4,那麼就是閏年,反之,就不是。
(3)如遇到2004年末兩位是04的,可以直接把它看做1位數,如果這個數能整除4,那麼就是閏年,反之,就不是。
怎樣區分平年和閏年?
4的倍數的年份就是閏年,比如,2008年就是閏年,+4,即2012年也是閏年~~
閏年的二月份有29天,平年都是28天~~是因為平年的二月份其實是28天零出來幾個小時,三個平年之後,那多餘出來的幾個小時加和之後就正好湊足一整天,也就是閏年的2月份多出來的那一天!
怎樣區分閏年與非閏年
如果那年的年份能除以4沒有餘數,那麼那年就是閏年,如果不行,就是平年.
比如說,2004,2008,2012,它們都能除盡4,沒有餘數,所以都是閏年.
然後閏年是366天,平年是365天,相差的一天主要是在2月,閏年有29號,平年沒有.
什麼是平年?什麼是閏年?平年與閏年怎樣區分??
一般的,能被4整除的年份是閏年,不能被4整除的年份是平年.如:1988年2008年是閏年;2005年2006年2007年是平年.但是如果是世紀年(也就是整百年),就只有能被400整除才是閏年,否則就是平年.如:2000年就是閏年,1900年就是平年
閏年的2月有29天,平年的2月只有28天.
怎麼判斷一個年份是不是閏年
1、普通情況求閏年只需除以4可除盡即可 年/4餘數為0
2、如果是100的倍數但不是400的倍數,那就不是閏年了,即末兩位都是零的整除400才行
像1700、1800、1900、2100都不是閏年,但是2000、2400是的.
3、2100年不是閏年,閏年不是象你們所說以加4為判斷閏年標準的,所以閏年有些4年一次,但是有些是8年一次的.例如:1896年是閏年,但1900年不是,到1904年才是閏年.
⑥ C語言編程計算該日期是該年第幾天
首先判斷是否閏年,是閏年的話2月有29天否則就只有28天,然後將前面的月份的天數加起來再加上本月天數就可以得到該日期是該年第幾天了
⑦ C語言編程:輸入某年某月某日,判斷這一天是這一年的第幾天
#include <stdio.h>
int getDaysByMonth(int m,int d,char flag){
int c;
if(flag=='r'){//閏年
if(m==2){//2月是29天
return (31+d);
}else if(m>2){
c=0;
m=m-1;
for(;m>0;m--){
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
c+=31;
}else if(m==2){
c+=29;
}else{
c+=30;
}}
return c+d;
}else{
return d;
}
}else{//平年
if(m==2){//2月是28天
return (31+d);
}else if(m>2){
c=0;
m=m-1;
for(;m>0;m--){
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
c+=31;
}else if(m==2){
c+=28;
}else{
c+=30;
}}
return c+d;
}else{
return d;
}}}
void main(){
int y,m,d,count=1;
printf("請輸入年月日(例如2017-01-01):");
scanf("%d-%d-%d",&y,&m,&d);
while( ((((y%4==0 && y%100!=0)||(y%400==0)) && (m==2)) && d>29) || (y%400!=0
&& y%4!=0 && m==2 && d>28) || ((m==1 || m==3 || m==5 || m==7 || m==8 || m==10 ||
m==12)&&d>31) || ((m==4 || m==6 || m==9 || m==11)&& d>30)){
printf("請輸入年月日(例如2017-01-01):");
scanf("%d-%d-%d",&y,&m,&d);}
//先判斷是否為閏年
if((y%4==0 && y%100!=0)||(y%400==0)){//閏年
count=getDaysByMonth(m,d,'r');
}else{//平年
count=getDaysByMonth(m,d,'n');}
printf("%d-%02d-%02d是今年的第%d天 ",y,m,d,count);
putchar(' ');
}
網路-運算符優先順序