| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1742 人关注过本帖
标题:if改为switch
只看楼主 加入收藏
睡神之首
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2004-5-7
收藏
 问题点数:0 回复次数:18 
if改为switch

当a为正数时,把下面的语句改为switch语句

if (a<30) m=1; else if (a<40) m=2; else if (a<50) m=3; else if (a<60) m=4; else m=5;

我是这样改的 请指教

switvh (a<>) {case a<30 : m=1; case a<40 : m=2; case a<50 : m=3; case a<60 : m=4; default : m=5;

}

搜索更多相关主题的帖子: switch 
2004-05-19 21:29
kuangjingbo
Rank: 1
等 级:新手上路
帖 子:312
专家分:0
注 册:2004-4-24
收藏
得分:0 

好象不行

根本编译不过去

即使能编译过去,在每一个的case语句后面也应该有break的


永不放弃!
2004-05-19 22:20
jiely
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2004-5-15
收藏
得分:0 

好象if的条件不够严密:

当 a=10时,m=1,2,3,4


我的爱好:C和数据库!正在学VC++ 我的QQ:345895839,有共同爱好的加我!期待着与你共同进步!
2004-05-19 22:46
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

jiely,

这里if 的判断的条件是严密的,没有什么问题。 因为当 a=10时, 第一个判断条件就已经满足了,这样下面的 else if 语句不会执行,所以当a=10时,m=1。

需要指出的是,switch 语句需要给入整形数。而不是一个逻辑判断条件。所以以上的改写不对。

原则上任何switch 语句都可以改写为 if else 语句,反之也亦然。但往往视方便而决定使用何种语句。 在这里我觉得还是 if else 来得方便。

不过程序还可以优化为:

#include <stdio.h>

int main() { int test = 61; int m = 0; if(m = test<30?1:0) ; else if(m = (test<60 && test>=30)?(int)(test-10)/10:0) ; else m = 5;

printf("%d\n", m);

return 0;

}


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-05-20 10:55
以德服人
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2004-5-20
收藏
得分:0 

要+break滴

2004-05-20 11:11
睡神之首
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2004-5-7
收藏
得分:0 

jiely的回帖里面test是什么意思啊?

还有就是我知道这道题IF好用些 但是题目是要改成用switch编写 望指教


己不所欲,勿施于人。 有心为善虽善不赏,无心为恶虽恶不罚。
2004-05-21 11:03
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

switvh (a/10) {case 1: m=1; case 2: m=1;break; case 3: m=2;break; case 4 : m=3;break; case 5 : m=4;break; default : m=5;

}


我的主页 http://www.
2004-05-25 19:36
睡神之首
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2004-5-7
收藏
得分:0 

switch (a>=60) case 1 : m=5;break; case 0 : switch (m>=50) case 1 : m=4;break; case 0 : switch (m>=40) case 1 : m=3;break; case 0 : switch (m>=30) case 1 : m=3;break; case 0 : switch (m>=30) case 1:m=2;break; default :m=1;

以上是一位大大教我的 因为论坛的问题 所以他的回复不见了


己不所欲,勿施于人。 有心为善虽善不赏,无心为恶虽恶不罚。
2004-05-27 19:38
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用睡神之首在2004-05-27 19:38:30的发言:

switch (a>=60) case 1 : m=5;break; case 0 : switch (m>=50) case 1 : m=4;break; case 0 : switch (m>=40) case 1 : m=3;break; case 0 : switch (m>=30) case 1 : m=3;break; case 0 : switch (m>=30) case 1:m=2;break; default :m=1;

以上是一位大大教我的 因为论坛的问题 所以他的回复不见了

什么大大?一个白痴!误已误人!别信他!

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-06-01 15:14
睡神之首
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2004-5-7
收藏
得分:0 
那该怎么编啊?

己不所欲,勿施于人。 有心为善虽善不赏,无心为恶虽恶不罚。
2004-06-03 10:15
快速回复:if改为switch
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024253 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved