求助C语言的switch这个程序的问题。大侠们帮助下吧!谢谢了。

/*Note:YourchoiceisCIDE*/#include"stdio.h"voidmain(){inty,m,d;printf("请输入年月:如2012-2\n... /* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int y,m,d;
printf("请输入年月:如2012-2\n");
scanf("%d-%d",&y,&m);
switch(m)
{
case 1:printf("d=31");
break;
case 3:printf("d=31");
break;
case 5:printf("d=31");
break;
case 7:printf("d=31");
break;
case 8:printf("d=31");
break;
case 10:printf("d=31");
break;
case 12:printf("d=31");
break;
case 4:printf("d=30");
break;
case 6:printf("d=30");
break;
case 9:printf("d=30");
break;
case 11:printf("d=30");
break;
case 2:
if(y%4==0&&y%100!=0)
printf("%d=29");
else
printf("%d=28");
}
}
先是这个程序的问题。这个程序可以正常运行,但是如果我输入2010-2时(只要是闰年的2月)答案那里就有一点小问题,就是它显示答案前面是0=29或者0=28而不是d=29或者d=28。如图:

但是输入其他月份就会是显示的是d=多少多少。就是这个问题。求解答。我还只是一个初学者,才开始上c语言课程。谢谢各位了。
展开
 我来答
哦哦哦YEAH
2013-04-19 · TA获得超过944个赞
知道小有建树答主
回答量:555
采纳率:0%
帮助的人:207万
展开全部
你case 2后边跟的两个printf里写的是%d, 而不是d。。。%去掉就好了。。。%d,是代表一个整型变量,你后边没有给它参数,它自己就输出数字0了。
听不清啊
高粉答主

2013-04-19 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int y,m,d;
printf("请输入年月:如2012-2\n");
scanf("%d-%d",&y,&m);
switch(m)
{
case 1:printf("d=31");
break;
case 3:printf("d=31");
break;
case 5:printf("d=31");
break;
case 7:printf("d=31");
break;
case 8:printf("d=31");
break;
case 10:printf("d=31");
break;
case 12:printf("d=31");
break;
case 4:printf("d=30");
break;
case 6:printf("d=30");
break;
case 9:printf("d=30");
break;
case 11:printf("d=30");
break;
case 2:
if(y%4==0&&y%100!=0||y%400==0) //改了
printf("d=29"); //改了
else
printf("d=28"); //改了
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
打不死的Yu
2013-04-19 · TA获得超过103个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:69.2万
展开全部
case 11:printf("d=30");

if(y%4==0&&y%100!=0)
printf("%d=29");

两句输出语句有什么不一样?
追问
真的很感谢您们这些人们。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
设置个什么昵称才好呢
2013-04-19 · 超过20用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:34.3万
展开全部
case 2:if(y % 4 == 0 && y % 100 != 0)
printf("d=29");
else
printf("d=28");
追问
真的很感谢您们。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知道不知道巨蟹
2013-04-19 · 超过17用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:46万
展开全部
%d改成d 要不printf("%d=28",d)
追问
真的谢谢您了。如果像你后面说那样错误更大了。前面是对的。嘿嘿。真的再次谢谢您。以后有问题希望您们能再次帮助。
追答
相互学习 呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-19
展开全部
if(y%4==0&&y%100!=0||y%400==0){
printf(“%d=29”,m);
}
else{
print(“%d=28”,m);
}
试试!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式