If else语句混淆了c++
if else statement confused c++
#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
语句不在循环控制之下。不管数字的性质如何,它只执行一次。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- 使用if-else将数字转换为单词
- c++ std::enable_if .... else?
- 如果 else 语句不断循环
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- C++ If/Else 语句被跳过
- 为什么我的最后一个 ELSE 条件无法正确执行
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 如何将 if else 语句重写为 switch 语句
- 在 C++ 中的 if-else if- else 语句期间更改变量
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 具有嵌套 if-else 的循环的时间复杂度
- 如果 else 语句使用大写和小写字母
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 为什么无论输入如何,所有 if-else 语句都会打印?
- 多个'if'语句,不带'else'