我怎么能只用if语句重写这个选择结构?

时间:2017-02-03 19:08:46

标签: c control-structure

我要求创建一个程序的问题,用户要输入一个整数值(1到4之间),并根据输入生成一个特定的输出。

当输入的值不在1和4之间时,它还必须向用户提供错误。

我设法使用if和else语句编写它,但是,我想知道是否可以仅使用if语句来编写它。

If and Else statement

2 个答案:

答案 0 :(得分:1)

有很多方法可以给这只猫上皮!虽然不使用else语句就是其中之一,设置这样的约束似乎是不必要的,并且使代码可读性降低,并且对else实际上做任何事情都等同于if ( ! resp_1 == 1 ||... )也注意到你是多余的在if语句中检查resp_1是否等于1或2或3或4,然后再单独检查并打印文本。

我的建议是使用一个开关,它是可读的,并且可以快速实现

switch(resp_1){
  case(1): /*print*/ break;
  case(2): /*print*/ break;
  case(3): /*print*/ break;
  case(4): /*print*/ break;
  defualt: /*Print if not 1,2,3,4*/
}

答案 1 :(得分:1)

如果您必须仅使用if语句,那么只需将它们全部链接起来。

if        (resp_1 == 1) {
  // Print output for 1
} else if (resp_1 == 2) {
  // Print output for 2
} else if (resp_1 == 3) {
  // Print output for 3
} else if (resp_1 == 4) {
  // Print output for 4
} else {
  // Print error
}

if-else语句(确切地)执行一个分支。在这里,每个else分支都是另一个if-else语句。因此,只会执行一个分支;有效输入的分支之一,或最后一个全部分支。

虽然可以使用一个标志并且在没有单个else条款的情况下编写它,但是IMO对于你想要发生的事情要清楚得多。编写代码时,请始终选择最能捕获您意图的选项。两周之后,如果代码需要澄清,那么首先要更容易向自己解释。