简单的程序,无法获得循环执行

时间:2016-01-28 05:35:25

标签: c++

全新的程序员,耳朵里的绿色,我可以成为一只青蛙。该程序的目的是使用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;
}

感谢任何帮助!

4 个答案:

答案 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}}表示退出该计划。请记住,即使在mainwhile这样的循环中也是如此 - 例如,人们可能会设计一个搜索函数,该函数会在结果出现时立即退出。

要提前退出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);

这意味着,您总结数字,然后在打印结果之前退出程序。