全新的程序员,耳朵里的绿色,我可以成为一只青蛙。该程序的目的是使用for循环(不是简单的公式)将所有整数添加到用户指定的值。它完美地执行for循环的所有代码,但for循环似乎没有运行。以下是有问题的代码:
#include "stdafx.h"
#include <iostream>
int main(int num=0)
{
int sum = 0;
std::cout << "This program will sum all integers up to a given value";
std::cout << std::endl << std::endl;
std::cout << "Please enter a number "<<std::endl;
std::cin >> num;
std::cout << std::endl << "You've chosen the number " << num<<std::endl;
for (int i = 1; i <= num; ++i)
sum += i;
return (sum);
std::cout << "The sum of all numbers up to " << num << " is " << sum;
}
感谢任何帮助!
答案 0 :(得分:2)
当它第一次遇到return
时,程序将结束。
请将return
放在main
功能的末尾。
还有一件事,不应该在num
函数中使用参数main
。
单独编写一个函数sum_all_integers
,然后在main
函数中调用它。
答案 1 :(得分:1)
好消息:您的代码有效!问题是,当调用return (sum);
时,退出该函数,并且不会执行打印出答案的行。
我还建议在您的包含后添加using namespace std;
行,这样您就不会受到如此多的std::
污染。 main也不应该带任何参数,所以将int num=0
行放在主块中。
哦,你也应该知道你的return
行缩进。
答案 2 :(得分:0)
在本节中
for (int i = 1; i <= num; ++i)
sum += i;
return (sum);
您的计划将退出。
这归结为其他答案提到的内容:来自return
的{{1}}表示退出该计划。请记住,即使在main
或while
这样的循环中也是如此 - 例如,人们可能会设计一个搜索函数,该函数会在结果出现时立即退出。
要提前退出for
循环,请使用break
。要继续下一次迭代并跳过循环中的其他代码,请使用continue
。
另请注意,for
的缩进具有误导性 - 它将在return
循环后执行,因为缺少括号(for
)只会{}
循环通过下一行,for
请记住,C ++ 不是一种空白敏感语言,因此缩进对逻辑没有任何意义(我喜欢在类似的大块中滥用它)通过制表符对齐代码)。这也是一个很好的例子,为什么通常的做法是使用括号,即使在非必要时也是如此。 编辑另见Apple的臭名昭着&#34; goto fail&#34;错误。
答案 3 :(得分:-1)
你在循环后立即返回总和:
for (int i = 1; i <= num; ++i)
sum += i;
return (sum);
这意味着,您总结数字,然后在打印结果之前退出程序。