【问题标题】:if else statement confused c++if else语句混淆了c ++
【发布时间】:2011-09-19 05:35:50
【问题描述】:
#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 true 拉 if 并且 if it not true 拉 else 吗?还是我错过了什么?

【问题讨论】:

  • 等一下,我刚刚意识到结果返回 0,但为什么不说请输入一个正整数?

标签: c++ if-statement


【解决方案1】:

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

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

【讨论】:

  • 这被认为是一个 do while 循环吗?
  • 哦,我还没研究过。
【解决方案2】:

如果我猜对了,你想 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;

}

【讨论】:

  • 哇,这很有趣,我没想到要在里面放一个 forloop。
  • 我还把cout &lt;&lt; result 放在了 if 语句中,所以当我打印时它不会返回 0 请输入一个肯定的!
  • 是的,实际上我错过了那个。您确实应该这样做,因为您提到自己的原因:)
  • @David Wolever:感谢您的编辑,我刚回来 :)
【解决方案3】:

我认为您的代码将受益于一些重新排列。我会像这样构造它:

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

cout << sum_series(1, number);

【讨论】:

  • 啊,我还没有在循环时学会这个。那么根据我的理解,while 会更有效吗?
  • 它的效率不如逻辑:你总是希望至少读取一次数字,这就是 do/while 循环的目的。
【解决方案4】:

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

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;

}

【讨论】:

    【解决方案5】:

    据我了解,如果数字为负数,您希望接受另一个输入。但是cin 语句不受循环控制这样做。无论数字的性质如何,它只执行一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      相关资源
      最近更新 更多