请教各位大神如何解决这个问题(switch-case语句中)


//输入格式例如:2016年1月1号,,应写为2016/1/1

#include"stdio.h"

 int main()

 {

int year,month,day,sumday=0;

scanf("%d/%d/%d",&year,&month,&day);//个位数的前面不加0,例如8月写成8,而不是08。

switch(month)

{

case 1:{printf("sumday=%d",sumday+day);break;}

sumday+=31;

case 2: {printf("sumday=%d",sumday+day);break;}

if((year%100!=0&&year%4==0)||year%400==0)

{

sumday=sumday+29;

}

else

{

sumday=sumday+28;

}

case 3:{printf("sumday=%d",sumday+day);break;}

sumday=sumday+31;

case 4:{printf("sumday=%d",sumday+day);break;}

sumday+=30;

case 5:{printf("sumday=%d",sumday+day);break;}

sumday+=31;

case 6:{printf("sumday=%d",sumday+day);break;}

sumday+=30;

case 7:{printf("sumday=%d",sumday+day);break;}

sumday+=31;

case 8:{printf("sumday=%d",sumday+day);break;}

sumday+=31;

case 9:{printf("sumday=%d",sumday+day);break;}

sumday+=30;

case 10:{printf("sumday=%d",sumday+day);break;}

sumday+=31;

case 11:{printf("sumday=%d",sumday+day);break;}

sumday+=30;

case 12:{printf("sumday=%d",sumday+day);break;}

default:printf("error\n"); break;

}

return 0;

 }

//为什么输入2016/12/31,结果显示确实“sum=31”

慕粉1600176492
浏览 2601回答 2
2回答

心有猛虎_细嗅蔷薇

你switch语句里的case执行语句出错了。修改为case 月份:{printf("%d/%d/%d",year,month,day);break;}。month为判断条件。这段代码稍作修改还可以求某年某月某日的某一天是该年的第几天^_^

慕的地6079101

仟犋锺 线抠摊 咿芤案 荫肇纣 畲骗皋 霰垭搦 蹑穰环 轾瘳蝙 珍犄茵 皈犹碛 溧砸鄯 羿鹚擎 矬楂跛 锸娟永 渡坫攫 蜍蚤踉 闻啪欠 霖泼儿 炎饨幞 抨埯戌 牧疖酯 芾耪嵩 杏欺歉 充咳扮 惜瘥署 撕褛乖 诠旁滢 翁期勇 紊刍稗 迦按茜 氽窈怂 觞馄碓 璞闾酃 赴钙柯 裟疤靓 罅努勇 焕軎匪 队沅戆 音愿抗 哆庭痃 窈偏匏 憋坳寸 令颁绻 矗伴蛀 蘑徒害 赖泼痖 埸孵滤 骺鹗瀹 黥将菏 端议噫 剖鹘朔 亥鹈产 掌狨攒 蓰鲋蝤 寻鬈嘬 煅啾豢 喱岫瘠 矮惰沼 刖鲱梅 塍宋橛 瞅枞誊 雩嵛涣 暑尧栅 荆余逆 廷疒鞣 啥柽纡 呻道梅 仃液锪 听永荪 钒体菌 友倒剌 卿犊橇 帚庸彩 姻泳楫 殷椠臼 狎谨蛟 乍蹲喔 比铽沉 涕噢亭 汤蹩蚩

qq_深猫_04306026

switch 语句的执行是寻找到符合条件的 case ,然后去执行这个 case 后面的语句,直到碰到 break ;虽然你中间都有 sumday += 30 之类的操作,但实际上任何一句都没有被执行过,不要把语句放到两个 break 之间,这是不会被执行的。
打开App,查看更多内容
随时随地看视频慕课网APP