您好,登錄后才能下訂單哦!
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
分析:這個程序主要問題在于月份31天和30天,以及二月份的閏年29天和平年28天問題,解決辦法首先判斷是平年還是閏年,確定二 月份的時間,然后用case選擇語句,算出該月份以前的總天數,從三月份開始在加上2月份天數;本次設計程序也有一定局限 性, 需要輸入合法時間,才能正確輸出正確的結果:
#include <stdio.h> int main(int argc,char *argv[]) { int y,m,d,days,February; printf("input the year:"); scanf("%d",&y); printf("input the mouth:"); scanf("%d",&m); printf("input the day:"); scanf("%d",&d); if (y%400==0||(y%4==0&&y%100!=0)) February=29; else February=28; switch (m) { case 1: days=0; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 2: days=31; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 3: days=31+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 4: days=62+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 5: days=92+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 6: days=123+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 7: days=153+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 8: days=184+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 9: days=215+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 10: days=245+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 11: days=276+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; case 12: days=306+February; printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d); break; default: printf("你輸入月份錯誤!"); break; } system("PAUSE"); return 0; }
編譯軟件是用的DEV-C++需要加system("PAUSE");才能讓結果暫停住,顯示出來;
另一種 差不多方法
程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。
#include <stdio.h> int main() { int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); printf("%d,%,d%d",year,month,day); switch(month)/*先計算某月以前月份的總天數*/ { case 1: sum=0;break; case 2: sum=31;break; case 3: sum=59;break; case 4: sum=90;break; case 5: sum=120;break; case 6: sum=151;break; case 7: sum=181;break; case 8: sum=212;break; case 9: sum=243;break; case 10: sum=273;break; case 11: sum=304;break; case 12: sum=334;break; default: printf("data error"); break; } sum=sum+day; /*再加上某天的天數*/ if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/ leap=1; else leap=0; if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數應該加一天*/ sum++; printf("It is the %d day.",sum); return 0; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。