新手求教

icbc_atm 2011-12-07 04:49:59
给出一个百分制的成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,80到89为B,70到79为C,60到69为D,60以下为E。
这是我刚学完选择语句和循环语句后面的联系题。用if语句好实现。现在请问可以用switch语句比if语句更简单的实现吗?或者是用if语句就是最简单的了?
...全文
96 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
icbc_atm 2011-12-08
  • 打赏
  • 举报
回复
谢谢大家,特别是10楼,我本来不知道怎么用switch写的,现在知道了!
yisikaipu 2011-12-07
  • 打赏
  • 举报
回复
int main()
{
int score=0;

cout <<"score=";
cin >>score;

char level='X';

switch(score/10)
{
case 6:
level='E';
break;
case 7:
level='C';
break;
case 8:
level='B';
break;
case 9:
case 10:
level='A';
break;
default:
;
}

cout <<"level=" <<level <<endl;

system("pause");

return 0;
}
yuegeman 2011-12-07
  • 打赏
  • 举报
回复
常量与字符 果断用switch 楼主你不switch 清晰明了吗
yisikaipu 2011-12-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bazzi2011 的回复:]所谓按照switch的方式来处理,意思是按照和switch差不多的办事手法来进行代码运行,而不是用switch语句来处理,明白?[/Quote]

你本来的说法算含糊,现在的说法却可以算是错误了 :)

差不多当然差不多,因为无非都是比较和跳转

但是像楼主这里的例子,switch的办事手法恰恰与if没什么相似可言(当然这是指一般情况)

用switch一般都采用跳表方式实现,不需要像if那样逐次比较,我不知道哪个编译器(在合适的时候)会自动把if的逐次比较转换为跳表来处理
bazzi2011 2011-12-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yisikaipu 的回复:]
呵呵,楼上,这与我#2楼的疑问不是一回事吧
[/Quote]

所谓按照switch的方式来处理,意思是按照和switch差不多的办事手法来进行代码运行,而不是用switch语句来处理,明白?
yisikaipu 2011-12-07
  • 打赏
  • 举报
回复
呵呵,楼上,这与我#2楼的疑问不是一回事吧
bazzi2011 2011-12-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yisikaipu 的回复:]
引用 1 楼 bazzi2011 的回复:而如果写成if(){...}else if(){...}else{...}这种形式,则if语句内部还是会转换成switch形式来执行的。

这个说法有可靠依据?
[/Quote]

这是 林锐 的书中说的,书中说道:

if语句只有
if
else
形式

没有
if
else if
else
形式

也就是说else if这句话其实相当于另外一个新的if语句,即:
if
if
else
这样的形式





yisikaipu 2011-12-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bazzi2011 的回复:]而如果写成if(){...}else if(){...}else{...}这种形式,则if语句内部还是会转换成switch形式来执行的。[/Quote]

这个说法有可靠依据?

bazzi2011 2011-12-07
  • 打赏
  • 举报
回复
一般来说,用if还是switch,取决于判断条件是否为常量,
,则优先用switch,,优先用if。

case语句中要求的是常量,一般是不能进行逻辑判断的,所以如果条件不是常量的话,用if语句优于switch语句。

单单拿楼主的这道题来说,由于判断条件是常量,肯定要优先用switch比较好!

而如果写成if(){...}else if(){...}else{...}这种形式,则if语句内部还是会转换成switch形式来执行的。

所以建议楼主写这道题采用switch方式。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧