Loading... 在没有看过相关文章的时候一脸蒙,说实话我是那种连第几月有多少天都不知道的人,而且还要平润年之分,简直无从下手; 但是当我在知乎看到相关题目的时候,了解了思路,其实也是灰常简单 <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-ab8d88544d694843647db4ae2e62b3a850" aria-expanded="true"><div class="accordion-toggle"><span>思路</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-ab8d88544d694843647db4ae2e62b3a850" class="collapse in collapse-content"><p></p> 用一个switch语句就可以简单实现了: switch的特点当在switch中的一个小语句段没有break时,当判断到符合条件的语句,该语句会被执行,接着其后面的语句都会被执行,处理default语句,于是可以利用这个特点来实现月份天数的递加 注意:判断条件并不是当月,而是(条件数 减去 一个月)+ 该月日数。 比如 5 月 27日 = (第4月的天数 + 第3月的天数 + 第2月的天数 + 第1月的天数)+27 <p></p></div></div></div> ```cpp #include <stdio.h> int main () { int year; int day; int month; int date = 0; scanf ("%d %d %d", &year, &month, &day); switch (month) { case 12: { date += 30; } case 11: { date += 31; } case 10: { date += 30; } case 9: { date += 31; } case 8: { date += 31; } case 7: { date += 30; } case 6: { date += 31; } case 5: { date += 30; } case 4: { date += 31; } case 3: { if ( year%4==0 && year%100!=0 || year%400==0) // 能被4整除但不能被100整除或者能被400整除的是闰年 { date += 29; } else { date += 28; } } case 2: { date += 31; } case 1: { printf ("%d年 %d月 %d日 \n这一年中第:%d天", year , month ,day , day + date); } } } ``` 比如输入:2021 5 27 在switch中会执行到5的位置; 然后从5的位置一直执行到1的位置; 在此过程中从5的位置(第4月天数 + 第3月天数 +第2月天数+第1月天数 + 第五个月的号数)一直加到1的位置。 最后修改:2021 年 05 月 27 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果文章有用,请随意打赏。