王师1984
2018-04-13 18:20
#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day = 8;
/*
* 请使用switch语句,if...else语句完成本题
* 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
* 小编还是希望大家独立完成哦~
*/
int sum;
for(sum=1;sum<=12;sum++)
{
switch(sum)
{
case 1:
if(month>=1)
{
day+=0;
}
else break;
case 2:
if(month>=2)
{
day+=31;
}
else break;
case 3:
if(month>=3)
{
if(year%4==0&&year%100!=0||year%400==0)
{
day+=29;
}
else
{
day+=28;
}
}
else break;
case 4:
if(month>=4)
{
day+=31;
}
else break;
case 5:
if(month>=5)
{
day+=30;
}
else break;
case 6:
if(month>=6)
{
day+=31;
}
else break;
case 7:
if(month>=7)
{
day+=30;
}
else break;
case 8:
if(month>=8)
{
day+=31;
}
else break;
case 9:
if(month>=9)
{
day+=31;
}
else break;
case 10:
if(month>=10)
{
day+=30;
}
else break;
case 11:
if(month>=11)
{
day+=31;
}
else break;
case 12:
if(month>=12)
{
day+=30;
}
else break;
}
}
printf("%d",day);
return 0;
}
我给楼上补充一下吧,你这个确实是sum=1的时候就运行出结果了。首先你在case语句中使用的是if-else语句;sum=1时,执行case1,注意:此时并没有执行break语句,因为if语句成立(if不成立才执行else语句);case1执行结束,没有break,执行case2,一直往下加,直到month=8。下面的month>=9不成立,执行else语句(执行break),跳出循环,然后sum++,再执行一遍case。
你的代码根本用不上for,用了反而错了,因为当sum等2的时候,就从case 2开始执行了,本来sum=1的时候已经得到结果了,你在让day+=31,明显重复了
#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day = 8;
int sumday=0;
switch(month)
{
case 1:sumday=day;break;
case 2:sumday=31+day;break;
case 3:sumday=59+day;break;
case 4:sumday=90+day;break;
case 5:sumday=120+day;break;
case 6:sumday=151+day;break;
case 7:sumday=181+day;break;
case 8:sumday=212+day;break;
case 9:sumday=243+day;break;
case 10:sumday=273+day;break;
case 11:sumday=304+day;break;
case 12:sumday=334+day;break;
default:break;
}
if(month>2)
{
if((year%4==0 && year%100!=0) || year%400==0 )
{
sumday=sumday+1;
printf("%d年%d月%d日是该年的第%d天",year,month,day,sumday);
}
else
{
printf("%d年%d月%d日是该年的第%d天",year,month,day,sumday);
}
}
else
{
printf("%d年%d月%d日是该年的第%d天",year,month,day,sumday);
}
return 0;
}
可以把判断闰年放在最后
C语言入门
926020 学习 · 20793 问题
相似问题