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

/* 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语言课程。谢谢各位了。

你case 2后边跟的两个printf里写的是%d, 而不是d。。。%去掉就好了。。。%d,是代表一个整型变量,你后边没有给它参数,它自己就输出数字0了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-19
/* 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"); //改了
}
}
第2个回答  2013-04-19
case 11:printf("d=30");

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

两句输出语句有什么不一样?追问

真的很感谢您们这些人们。

第3个回答  2013-04-19
case 2:if(y % 4 == 0 && y % 100 != 0)
printf("d=29");
else
printf("d=28");追问

真的很感谢您们。

第4个回答  2013-04-19
%d改成d 要不printf("%d=28",d)追问

真的谢谢您了。如果像你后面说那样错误更大了。前面是对的。嘿嘿。真的再次谢谢您。以后有问题希望您们能再次帮助。

追答

相互学习 呵呵

第5个回答  2013-04-19
if(y%4==0&&y%100!=0||y%400==0){
printf(“%d=29”,m);
}
else{
print(“%d=28”,m);
}
试试!!!

c语言中switch语句问题 大侠们帮帮忙。 为何过程中先判断switch了为defau...
后加一句 fflush(stdin);因为你scanf("%d",&c);的时候按了回车,这个回车还存在输入缓存里。。。当你ch=getchar();的时候,回车才出来,fflush(stdin)作用是清除标准输入设备stdin的缓存,差不多那意思吧,呵呵。你可以看下MSDN里的简介,或者搜搜这方面的资料。

关于C中switch的一道题~~帮忙啊各位!!
上述程序在我的环境中调试成功。自己在自己环境里调试一下。悉雨辰寂

求C语言大侠帮帮菜鸟~!
1、switch 只能用 char int long 等整形数值 没用错 2、switch(b) 建议修改为 if(b==0.0)printf("Enter data error!\\n");break;else{ c=a\/b,printf("=%f\\n",c);}

C语言关于switch函数的个题目。。答得好有加分啊。。
就是BD,至少语法上BD没有问题 A必然是错的,switch语句(switch是结构化的语句,更规范的说是控制流语句,不是函数!)对象只能是整型值,不能使浮点型值,函数pow返回的值是double型的,显然不正确,不能通过编译的yideanbiyide

c语言题目,求大侠解答
首先要知道以下几点:1、default不管放在前后,default语句是最后执行的;2、如果default后面带有break,那么程序就会正常跳出switch,否则,程序会继续向后执行switch语句(不管符不符合case)3、case2不是case 2,少了空格(- -感觉这里有点坑),那case2算什么?大概只能算是个goto标签吧,知识有限不敢确定,...

请教一下 C语言 不用if ?: swith等任何判断语句 比较a和b的大小“大侠...
得行的话要采用我的答案哦,不然的话打字就白打了.呵呵 ~~~(算了,我还是给你代个值好看些.)a=1,b=2 a=a+b (现在a=3,b=2)b=a-b (现在a=3,b=1)a=a-b (好,最后就OK了! a=2,b=1)简单吧!程序的话就不用说怎么写了吧!

C语言的几个判断题,求各位大侠帮助啊!
2、switch后面圆括号内的表达式的值和case后面的常量表达式的值都必须是整型或数字符型,不允许是浮点型;\/\/正确。3、循环for( ; ; )的循环条件始终为真;\/\/错误。可以为假的,为假时退出循环。4、break语句执行时退出本层循环,continue语句结束本次循环。\/\/正确。5、C语言中,用格式符“%s”...

请高手用C语言帮忙做个编程的题目,谢谢了!
switch(chose){ case 1:for(i = 0; i< 500; i++){ if(IsDevided(i,3)&&IsDevided(i,5)&&IsDevided(i,7)){ printf("%d",i);} } printf("\\n");break;case 2:for(i = 0; i < 500; i++){ if(IsDevided(i,3)){ printf("%d",i);} } printf("\\n");break;case 3...

c语言命令符科学计算器,求助中
用switch语句自己做吧,不难的,就是麻烦了一点!!

因为,刚学的C语言,遇到了问题,大侠们,字典一下。。
include<stdio.h> void main(void) \/\/这里是括号,不是尖括号 { int x=4294967296; \/\/这里缺少分号结束语句。printf("\\nx=%d",x); \/\/这里引号不全。}

相似回答
大家正在搜