If else语句混淆了c++

if else statement confused c++

本文关键字:c++ else 语句 If      更新时间:2023-10-16
#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如果不为真会拉出else?还是我错过了什么?

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

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

如果我说对了,你会想1. 输入一个数字;2.1如果数字是正数,则循环遍历它。2.2如果是否定的,则显示错误信息。

问题是你的循环,其中条件是,检查i(它是零)是否小于数字。然而,如果你输入一个负数,i将比正整数更大,你不会循环通过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;
}

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

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

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

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;
}

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