#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,如果它不是真的拉其他?或者我错过了什么?
答案 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
语句不在循环控制之下。它只执行一次而不管数字的性质。