#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day = 8;
/*
* 请使用switch语句,if...else语句完成本题
* 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
* 小编还是希望大家独立完成哦~
*/
int sum=0;
switch(month)
{
case 12:sum+=30;
case 11:sum+=31;
case 10:sum+=30;
case 9:sum+=31;
case 8:sum+=31;
case 7:sum+=30;
case 6:sum+=31;
case 5:sum+=30;
case 4:sum+=31;
case 3:if(year%4==0&&year%100!=0||year%400==0)sum+=29;else sum+=28;
case 2:sum+=31;
case 1:sum+=day;
}
printf("%d年%d月%d日是该年的第%d天。",year,month,day,sum);
return 0;
}
#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day = 8;
/*
* 请使用switch语句,if...else语句完成本题
* 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
* 小编还是希望大家独立完成哦~
*/
int sum=0;
switch(month)
{
case 1:sum+=day;
case 2:sum+=31;
case 3:if(year%4==0&&year%100!=0||year%400==0)sum+=29;else sum+=28;
case 4:sum+=31;
case 5:sum+=30;
case 6:sum+=31;
case 7:sum+=30;
case 8:sum+=31;
case 9:sum+=31;
case 10:sum+=30;
case 11:sum+=31;
case 12:sum+=30;
}
printf("%d年%d月%d日这一天,是该年中的第%d天。",year,month,day,sum);
return 0;
}
你和我开始犯的错误是一样的,就是说他给的是一个月份,如8月,那么按照你的程序,是不是sum=0+31?
但实际上八月指的是一月到八月的总天数。
另外还要多加上day!
switch分支结构不管顺序怎么变,只执行对应case值后的代码块的,所以结果也应该一样。
希望对你有帮助。
第一个程序输出的是一到八月的天数221,用其他的数值验证也没有错,是故意没有加上break让数值从上往下加的,程序应该是正确的不信你复制运行看看,但是第二个我只是把第一个的从12到1反过来从1到12验证,但是得到的结果好像是150几还是多少来着不记得了,反正就是不一样