C ++中有多个if-else

时间:2015-08-29 07:14:07

标签: c++

我对c ++中多个if-else的简单程序感到困惑。代码

如下。

include<iostream.h>
void main()
{
int i;
cout<<"Enter the number:";
if(i==1)
{
cout<<"Sunday";
}

if(i==2)
{
cout<<"Monday";
}
else
{
cout<<" invalid input";
}
}

当我尝试运行此代码时,输​​出会显示此信息。

Enter the number:1
Sunday invalid key

所以我的问题是为什么输出执行Else部分虽然输出为True ..?请帮我 。谢谢

6 个答案:

答案 0 :(得分:3)

这是因为你没有&#34;多个if-else&#34;,真的。您有一个if(没有else),然后是另一个if。这两个是独立的。你可能想要:

if(i==1)
{
    cout<<"Sunday";
}
else if(i==2)
{
    cout<<"Monday";
}
else
{
    cout<<" invalid input";
}

这样可以确保只有在满足上述任何条件时才会运行最终的else块。

答案 1 :(得分:1)

首先检查i是否等于1。如果是这种情况,则打印“星期日”。此时if语句已完成。之后,您检查(在单独的if州)是否i等于2,如果是这种情况,则打印“星期一”,如果不是,则打印“无效输入”。要获得所需的结果,请写

else if (i == 2)

仅在if不为1时执行第二个else / i语句。

或者,您可能希望使用switch语句。

switch(i)
{
    case 1:
        cout << "Sunday";
        break;
    case 2:
        cout << "Monday";
        break;
    default:
        cout << "invalid input";
        break;
}

但如果使用break,请不要忘记switch

答案 2 :(得分:0)

您有两种不同的条件。一个是:

if(i==1) {
    cout<<"Sunday";
} // this statement ends here.

另一个:

if(i==2) {
    cout<<"Monday";
} else {
    cout<<" invalid input";
}

" invalid input"不是2时,第二个结果始终为i

答案 3 :(得分:0)

此代码中存在多个错误。我在这里解释并修复了它 -

#include<iostream.h>
void main()
{
    int i;
    cout<<"Enter the number:";
    cin >> i; //take the input number from the user
    if(i==1)
    {
        cout<<"Sunday";
    }    
    /* the i==1 and i==2 block will run separately unless you connect them with an else */
    else if(i==2) 
    {
        cout<<"Monday";
    }
    else
    {
        cout<<" invalid input";
    }
}

答案 4 :(得分:0)

如果你想要正确的处理,你必须把别的东西放进去:

if(i==1)
    cout<<"Sunday";
else if(i==2)
    cout<<"Monday";
else
    cout<<" invalid input";

使用else if,不处理第二个和第三个条件,因为第一个条件是alredy有效的。在你的代码中,它首先在第一个条件下处理代码,而不是因为输入不等于2,否则处理else下的代码。

答案 5 :(得分:0)

这是因为您对同一输入使用了两个分支语句

1。第一个if()语句检查您的值是否等于1

if(i == 1)
    std::cout << "Sunday"; // here you have print "Sunday for 1

2. 然后再次使用其他if-else语句检查您的值

if(i == 2)
  std::cout << "Mondey";
else
  std::cout << "invalid input";  // here you have print "invalid input" 
                                 //since i is not equal to 1