当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;
}
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;
}
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;
以上是一位大大教我的 因为论坛的问题 所以他的回复不见了