我必须用c ++编写一个程序,其中用户输入数字N,然后在第二行中,他输入的数字与N一样多,不再多。输出应该是输入数字中所有正数之和。我必须使用for循环。此外,到目前为止,仅在声明中,我们还没有涉及太多内容。
我尝试过的代码仅给出正数之和,但是我无法使程序使用N个输入并停止。只要用户输入数字,它要么只计算一个,要么继续计算。
#include <iostream>
using namespace std;
int main ()
{
int n, sum=0;
cin>> n;
cout<<endl;
cout<<"Enter numbers"<<endl;
for (int i=1; i<=n; i++)
{
cin>>i;
if(i>0)
{sum=sum+i;
}
cout<<sum<<endl;
}
return 0;
}
问题在于您使用相同的变量(i
)进行循环和输入。
for (int i=1; i<=n; i++)
{
cin>>i;
无论输入什么,都会cin>>i
破坏程序的逻辑。添加一个单独的输入变量,并保持i
循环。
例:
#include <iostream>
int main() {
int n, sum = 0;
std::cout << "How many numbers do you want to enter? \n";
std::cin >> n;
std::cout << std::endl;
std::cout << "Enter numbers: \n";
for(int i = 1; i <= n; i++) {
std::cout << i << ": ";
int input;
if(std::cin >> input) {
if(input > 0) {
sum = sum + input;
}
std::cout << sum << std::endl;
} else
break; // user failed to enter a number
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句