从输入中添加连续整数(从 Python 转换为 C++)

Adding consecutive integers from an input (Translated from Python to C++)

本文关键字:转换 C++ Python 整数 输入 添加 连续      更新时间:2023-10-16

我想请求一些关于我的硬件的帮助。我想我真的快要弄清楚了。我们的CompSci课程目前正在从学习Python转向(入门)C++。由于两者略有相似之处,因此由于我们是初学者,建议我们用Python(我们非常熟悉)编写问题,并使用我们刚刚学到的基础知识将其转换为C++。要解决的问题是一个简单的"将 1 中的连续整数添加到该数字,给定一个正整数输入"。所以一个例子是:

>>Enter a positive integer: 10
>>1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

我尝试翻译成C++的 Python 代码(这是成功的)是:

num = int(raw_input("Enter a positive integer: "))
sum = 0
for i in range(1, num):
    sum += i
    print i, "+",
print num, "=", sum+num

还有我不成功的C++代码:

#include <iostream>
using namespace std;
int main()
{
    int num;
    int sum;
    int i;
    sum = 0;
    cout << "Please enter a positive integer: " << endl;
    cin >> num;
    for (i=0; 1 <= num; i++)
        {
        sum = sum + i;
        cout << i << "+" << endl;
        }
    cout << num << "=" << sum + num << endl; 
    return 0;
}

但输出只是一个从 0 到无穷大的无限、无结束的加法序列,从上到下。更糟糕的是,它没有像我想要的那样直线打印。如您所见,我确实试图逐字翻译它;我以为这是万无一失的。我的 for 循环一定有问题。由于C++没有像 Python 那样有自己的"范围"类,我认为中间条件语句("1 <= num;")将充当范围。为什么我的"="符号没有打印出来?而且我不明白为什么当它达到"num"时它不会终止。觉得你能帮上忙吗?我提前感谢您的答复。

固定代码:

#include <iostream>
using namespace std;
int main()
{
    int num;
    int sum;
    int i;
    sum = 0;
    cout << "Please enter a positive integer: " << endl;
    cin >> num;
    // Here you had 1 <= num which was always true for positive num
    // and it did not depend on value of i.
    for (i = 1; i < num; ++i)
        {
        sum = sum + i;
        cout << i << "+";  // Here you had endl which produced newline characters.
        }
    cout << num << "=" << sum + num << endl;-
    return 0;
}

这个:

for (i=0; 1 <= num; i++)

应该是:

for (i=0; i <= num; i++)

试试这个。

#include <iostream>
using namespace std;
int main()
{
    int num;
    int sum;
    int i;
    sum = 0;
    cout << "Please enter a positive integer: ";
    cin >> num;
    for (i=0; i < num; i++)
        {
        sum = sum + i;
        cout << i << " + ";
        }
    cout <<num << " = " << sum+num << endl; 
    return 0;
}

我真的不了解 Python,但代码

for i in range(1, num): 

看起来真的很像

for (int i=1; i <= num; ++i) 

还是可能

for (int i=1; i != num; ++i) 

哪个看起来更像C++?

C++ 中的循环比 Python 最基础,for 循环更简单,它基于三个表达式:初始值设定项表达式、循环测试表达式和计数表达式。特别是代码中的错误是测试表达式。请记住,如果测试表达式为 true,则执行循环。如果条件i<num为真,则需要循环。你的循环永远不会结束,因为num总是>= 1,或者正如你写的1 <= num总是

要在一行上打印每个内容,请不要使用endl