从输入中添加连续整数(从Python翻译到C++)

0 投票
5 回答
8432 浏览
提问于 2025-04-16 17:25

我想请教一下我的作业问题。我觉得我快要搞明白了。我们计算机科学课现在正在从学习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”时它不会停止。你能帮我吗?提前谢谢你的回复。

5 个回答

0

C++中的循环比Python要基础一些,for循环更简单,它主要由三个部分组成:初始化表达式、循环测试表达式和计数表达式。你代码中的问题主要出在测试表达式上。记住,只有当测试表达式为真时,循环才会执行。你需要在条件i<num为真的时候进行循环。你的循环一直在运行是因为num总是>= 1,或者说你写的1 <= num总是成立。

如果想在一行上打印所有内容,不要使用endl

1

修正后的代码:

#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;
}
0

这个:

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

应该是:

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

撰写回答