论坛: 编程破解 标题: if和elseif用多了不好,请看这两者的等价。 复制本贴地址    
作者: ljsh012 [ljsh012]    论坛用户   登录
前几天作了个喝酒猜拳的游戏
这是起初自己的一段代码(vc++.net下,用的是.net的类库):
代码:

if(sender==rb1)
{
mekouhao=0;
sqShow->Text="空对空";
}
else if(sender==rb2)
{
sqShow->Text="敬你一杯";
mekouhao=1;
}
else if(sender==rb3)
{
sqShow->Text="弟兄好啊";
mekouhao=2;
}
else if(sender==rb4)
{
sqShow->Text="三啜啜";
mekouhao=3;
}
else if(sender==rb5)
{
sqShow->Text="四季发财";
mekouhao=4;
}
else if(sender==rb6)
{
sqShow->Text="五亏手";
mekouhao=5;
}
else if(sender==rb7)
{
sqShow->Text="六六大顺";
mekouhao=6;
}
else if(sender==rb8)
{
sqShow->Text="巧七";
mekouhao=7;
}
else if(sender==rb9)
{
sqShow->Text="八仙过海";
mekouhao=8;
}
else if(sender==rb10)
{
sqShow->Text="酒会醉人";
mekouhao=9;
}
else if(sender==rb11)
{
sqShow->Text="甩开瞧瞧";
mekouhao=10;
}


后经高人指点,把上面繁琐的if 和else if语句变为下面的几行,自己觉得很好。帖出来和大家分享。
代码:

System::Windows::Forms::RadioButton *Rbs[]={rb1,rb2,rb3,rb4,rb5,rb6,rb7,rb8,rb9,rb10,rb11};
    for(int k=0;k<11;k++)
    { if(sender==Rbs[k])
  {
        sqShow->Text=Rbs[k]->Text;
        mekouhao=k;
        break;
  }
    }


帖张图吧,因为上面的sqShow->Text=Rbs[k]->Text,红色的Text就是图片上的文字(直接从那里获得文字),你看,这个for循环少了多少代码。


[此贴被 霜泉(ljsh012) 在 01月18日14时49分 编辑过]

地主 发表时间: 05-01-18 14:22

回复: 286 [unique]   版主   登录
switch(sender)
{
case rb1:sqShow->Text="空对空";mekouhao=0;break;
case rb2:sqShow->Text="敬你一杯";mekouhao=1;break;
case rb3:sqShow->Text="弟兄好啊";mekouhao=2;break;
case rb4:sqShow->Text="三啜啜";mekouhao=3;break;
case rb5:sqShow->Text="四季发财";mekouhao=4;break;
case rb6:sqShow->Text="五亏手";mekouhao=5;break;
case rb7:sqShow->Text="六六大顺";mekouhao=6;break;
case rb8:sqShow->Text="巧七";mekouhao=7;break;
case rb9:sqShow->Text="八仙过海";mekouhao=8;break;
case rb10:sqShow->Text="酒会醉人";mekouhao=9;break;
case rb11:sqShow->Text="甩开瞧瞧";mekouhao=10;break;
default:sqShow->Text="Error";mekouhao=11;break;
}

--------------------------------------------------------------------------------


B1层 发表时间: 05-01-18 16:34

回复: cike [cike]   论坛用户   登录
老大:
我也有个问题
switch 语句和  if  语句
哪个运行起来快一些?

B2层 发表时间: 05-01-18 21:16

回复: ljsh012 [ljsh012]   论坛用户   登录
从时间复杂度看是一样的,空间复杂度的话要省好多。

286老大的switch语句也是一种方法,但是switch(sign)
sign不能为字符串阿(只能为字符或者整型值阿)。rb1和rb2等等不能转成整型吧。


[此贴被 霜泉(ljsh012) 在 01月18日21时51分 编辑过]

B3层 发表时间: 05-01-18 21:48

回复: jhkdiy [jhkdiy]   版主   登录
确实不错,学到东西了。

B4层 发表时间: 05-01-19 00:40

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号