题目:输入某年某月某日,判断这一天是这一年的第几天?
分析:这个程序主要问题在于月份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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。