我想请求一些关于我的硬件的帮助。我想我真的快要弄清楚了。我们的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