if else语句混淆了c ++

时间:2011-09-19 05:35:50

标签: c++ if-statement

#include <iostream>
using namespace std;

int main()
{
    int positiveInteger;

    cout << "Please input an integer up to 100." << endl;

    cin >> positiveInteger;

    int result = 0;
    for (int i = 0; i <= positiveInteger; i++)
    {
        if ( positiveInteger >= 0 )
        {
          result += i;
        }
        else 
        {
          cout << "Please input a positive integer." << endl;
        }
    }

    cout << result;
    return 0;
}

上面我有一个for循环,中间有一个if else语句。我很困惑,因为我希望它是如此,当我输入一个非负的整数时,它将循环if结果。但我希望它是如此,如果我输入一个负数,它说请输入一个正整数。这就是为什么我在if语句中设置它只有上面的数字和=到0会返回结果,但是如果我输入一个负数我得到0我想要它说“请输入一个正整数”。我不明白我做错了什么。不是if语句如果是真的拉if,如果它不是真的拉其他?或者我错过了什么?

5 个答案:

答案 0 :(得分:4)

如果输入负数,则永远不会进入循环。一种更适合这种情况的方法是:

do
{
    input a number;
    if( positive )
         do something;
} while( not positive );

答案 1 :(得分:3)

如果我做对了,你想要 1.输入一个数字; 2.1如果数字是正数,则循环通过它。 2.2如果是否定的,则显示错误消息。

问题是你的循环,其中条件是,检查i(这是零)是否小于数字。但是,如果你输入一个负数,我会比positiveInteger更大,你不会循环if。我修改了你的代码

using namespace std;

int main()
{
    int positiveInteger;

    cout << "Please input an integer up to 100." << endl;

    cin >> positiveInteger;

    int result = 0;
    if ( positiveInteger >= 0 ){
       for (int i = 0; i <= positiveInteger; i++)
       {
           result += i;
       }
       cout << result;
    }
    else {
        cout << "Please input a positive integer." << endl;
    }

    return 0;

}

答案 2 :(得分:1)

我认为您的代码会受益于某些重新排列。我的结构是这样的:

do { 
    cout << "please enter a number between 1 and 100";
    number = get_number():
} while (number < 1 || number > 100);

cout << sum_series(1, number);

答案 3 :(得分:1)

您获得的输出是因为您的循环在非负数处失败。您应该尝试以下方法:

int main()
{

int positiveInteger;

cout << "Please input an integer upto 100." << endl;

cin >> positiveInteger;

int result = 0;
if ( positiveInteger < 0 )
{

    cout << "Please input a positive integer." << endl;

}
else{


   for (int i = 0; i <= positiveInteger; i++)
   {

    result += i;

   }

 cout << result;

 }
return 0;

}

答案 4 :(得分:0)

根据我的理解,如果数字是负数,你希望接受另一个输入。但cin语句不在循环控制之下。它只执行一次而不管数字的性质。