楚辞9318342
2021-03-01 20:51
#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day = 8;
int x, i;
x == 0;
switch(month)
{
case 1:x += day;break;
case 2:x += 31;break;
case 3:x += 28;break;
case 4:x += 31;break;
case 5:x += 30;break;
case 6:x += 31;break;
case 7:x += 30;break;
case 8:x += 31;break;
case 9:x += 31;break;
case 10:x += 30;break;
case 11:x += 31;break;
case 12:x += 30;break;
default:break;
}
if(year%400==0||(year%4==0 &&year%100!=0))
i=1;
else
i=0;
if(i==1&&month>2)
x++;
printf("%d年%d月%d日是该年的第%d天",year, month, day, x);
return 0;
}
case 8:x += 31;break;应该只执行这一句。
有一个大神写的这个代码原理是:当case=8时才开始运行代码,在case12;case 11;case=10;case=9并不会运行代码;是因为month=8,要从8开始,运行8后,为什么不跳出去,而继续运行,是因为没有8的后面并没有break,所以代码就会一直运行,直至遇到default中的break才会跳出,这就导致了date一直进行累加。而你在8的后面加了break,所以导致代码跳出去,从而date并不会进行累加。
希望能帮到你。
C语言入门
926028 学习 · 20793 问题
相似问题