慕九州8237304
2018-07-31 10:36
#include <stdio.h>
int main()
{
int year = 2008;
int month = 8;
int day = 8;
int i=1,j=0;//变量
for (i=1; i < month ; i++)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
j+=31;
break;
case 4:
case 9:
case 11:
j+=30;
break;
case 2:
if ( year % 4 ==0)
{
j+=29;
break;
}
else
{
j+=28;
break;
}
}
}
j+=day;
printf("%d年%d月%d天是该年的第%d天。", year,month,day,j);
return 0;
}
我算的答案是225天,我不知道哪里错了。
感谢帮助!
逻辑有错误,你这样写比如case 2=29+8,正确的应该是31+8,其他的case计算有的有错有的没错我没认真去研究它是怎么计算的,但是整体计算逻辑上肯定错了,计算天数应该是本月之前的月份天数加上本月日期,而不是当月的天数加上日期,你再思考下。
你的 i<month;i++;此时month为8,而switch内的是month,从而导致你的case 8循环了七次,若改为switch( i ) 再加上case 6 的话也是正确的。
#include <stdio.h> int main() { /* 定义需要计算的日期 */ int year = 2008; int month = 8; int day = 8; /* * 请使用switch语句,if...else语句完成本题 * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办” * 小编还是希望大家独立完成哦~ */ month--; int sum=0; switch(month) { case 11: sum+=30; month--; case 10: sum+=31; month--; case 9: sum+=30; month--; case 8: sum+=31; month--; case 7: sum+=31; month--; case 6: sum+=30; month--; case 5: sum+=31; month--; case 4: sum+=30; month--; case 3: sum+=31; month--; case 2: sum+=28; month--; case 1: sum+=31; break; } sum+=day; if(year%100!=0&&year%4==0||year%400==0) { printf("2008年8月8日是该年的第%d天",sum+1); } else printf("2008年8月8日是该年的第%d天",sum); return 0; }
C语言入门
926025 学习 · 20793 问题
相似问题