为了账号安全,请及时绑定邮箱和手机立即绑定

用switch和if,设计一个2008年8月8日是一年的第几天的程序,我的程序到底错在哪里了?求帮助

用switch和if,设计一个2008年8月8日是一年的第几天的程序,我的程序到底错在哪里了?求帮助

C C#
慕粉呢里 2016-12-05 17:45:22
#include<stdio.h> int main() { int year=2008; int month=8; int day=8; int days=0; int i=1; int month=month-1; for(i;i<=month;i++) { switch(month) { case 1: case 3: case 5: case 7: case 9: case 11: days=days+31; break; case 2: days=days+28; break; case 4: case 6: case 8: case 10: case 12: days=days+30; break; } } days=days+day; if(year%4==0&&year%100!=0||year%400==0) { days=days+1; } printf("%d",days); return 0; }
查看完整描述

8 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

#include<stdio.h>
int main()
{
int year=2008;
int month=8;
int day=8;
int days=0;
int i=1;
for(i;i<month;i++)
{
switch(i)
{
case 1: case 3: case 5:
case 7: case 8: case 10:
case 12: 
	days=days+31;break;
case 2:
	days=days+28;break;
case 4: case 6: case 9:
case 11:
	days=days+30;break;
}
}
days=days+day;
if(year%4==0&&year%100!=0||year%400==0)
{
days=days+1;
}
printf("%d\n",days);
return 0;
}

//img1.sycdn.imooc.com//584569440001201404050092.jpg

查看完整回答
2 反对 回复 2016-12-05
点击展开后面4
?
望远

TA贡献1017条经验 获得超1032个赞

1,3,5,7,8,10,腊31天永不差!

 你这里不是应该将i作为switch参数吗?

查看完整回答
1 反对 回复 2016-12-05
  • 慕粉呢里
    慕粉呢里
    你说的对,但改完后输出是374,还是不对,您看下还有问题 #include int main() { int year=2008; int month=8; int day=8; int days=0; int i=1; int month=month-1; for(i;i&lt;=month;i++) { switch(i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=days+31; continue; case 2: days=days+28; continue; case 4: case 6: case 9: case 11: days=days+30; continue; } } days=days+day; if(year%4==0&amp;&amp;year%100!=0||year%400==0) { days=days+1; } printf("%d",days); return 0; }
?
天降之物

TA贡献1条经验 获得超0个赞

return 0;干嘛要返回0

删掉这个   

查看完整回答
反对 回复 2016-12-06
?
磊46

TA贡献1条经验 获得超0个赞

2008是闰年 二月29天
查看完整回答
反对 回复 2016-12-06
?
非主流1

TA贡献2条经验 获得超0个赞

还有我看见你month定义类型,定义了两次
查看完整回答
反对 回复 2016-12-05
?
我系她心

TA贡献1条经验 获得超0个赞

把continue 换成break
查看完整回答
反对 回复 2016-12-05
?
慕粉呢里

TA贡献4条经验 获得超0个赞


你说的对,改成i后结果还是不对,结果输出是374,还有哪里错吗

#include<stdio.h>
int main()
{
int year=2008;
int month=8;
int day=8;
int days=0;
int i=1;
int month=month-1;
for(i;i<=month;i++)
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=days+31;
continue;
case 2:
days=days+28;
continue;
case 4:
case 6:
case 9:
case 11:
days=days+30;
continue;
}
}
days=days+day;
if(year%4==0&&year%100!=0||year%400==0)
{
days=days+1;
}
printf("%d",days);
return 0;
}

查看完整回答
反对 回复 2016-12-05
  • 望远
    望远
    switch语句里面不是应该用break来跳出吗?用continue是干什么?试试换成break
  • 慕粉呢里
    慕粉呢里
    因为这个switch嵌套在for循环里,用break直接退出循环了啊
  • 望远
    望远
    这个break是为了跳出switch多分支判断
?
慕粉呢里

TA贡献4条经验 获得超0个赞


你说的对,改成i后结果还是不对,结果输出是374,还有哪里错吗

#include<stdio.h>
int main()
{
int year=2008;
int month=8;
int day=8;
int days=0;
int i=1;
int month=month-1;
for(i;i<=month;i++)
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=days+31;
continue;
case 2:
days=days+28;
continue;
case 4:
case 6:
case 9:
case 11:
days=days+30;
continue;
}
}
days=days+day;
if(year%4==0&&year%100!=0||year%400==0)
{
days=days+1;
}
printf("%d",days);
return 0;
}

查看完整回答
反对 回复 2016-12-05
?
慕粉呢里

TA贡献4条经验 获得超0个赞

改了这个后还是不对是为什么

查看完整回答
反对 回复 2016-12-05
?
一次就好0

TA贡献8条经验 获得超10个赞


首先8、10、12月份都是31天,9、11是30天.

查看完整回答
反对 回复 2016-12-05
  • 8 回答
  • 3 关注
  • 2438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信