2014-02-16 16 views
0

好吧,我需要编写一个函数,它接受一个整数参数并打印每个数字的总和。例如,n = 10将是1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10。需要修复一个简单的循环

int SumOneToN(int n) 
{ 
    int x = 0; 
    while (x <= n) 
    { 
     cout << x+(x+1) << " "; 
     x++; 
    } 
    cout << endl; 
} 

那么这里发生了什么? 1.将函数设置为SumOneToN。 2.初始化x为0. 3.创建一个while循环,当x小于我们的参数时,我们把x加到x + 1(这样我们就可以得到我们当前的x值加到下一个) ,打印它,然后我们添加到x的循环再次去,直到我们遇到参数。

这就是我认为它应该工作,反正。其实什么是返回:

1 3 5 7 ..等

我不知道我哪里错了?

+0

提示:应该有一个变量来存储总和。 –

+0

好吧,它不会实际返回任何东西,因为你的编译器应该告诉你。 – chris

+0

@余浩 - 最好记住一些数学。不需要循环 –

回答

3

试试这个:

int SumOneToN(int n) 
{ 
    int x = 1, sum=0; 
    while (x <= n) 
    { 
     sum=sum+x; 
     cout << sum << " "; 
     x++; 
    } 
    cout << endl; 
    return sum; 
} 
+0

为什么返回0?这是无意义的,你应该返回函数计算结果! – user1520427

+1

它应该是'return sum;'。 –

+0

他只是想打印数组到达那个特定的元素..如果你想返回总和,直到n然后使用“返回和”。 –

1

为什么不使用一些数学的没有摆在首位的循环?

int SumToOne(int n) { 

    return (n * (n + 1))/2; 
} 
+0

这是正确的答案 - 为什么当你不需要循环? +1的数学 – user1520427

+1

@ user1520427 - 我设法保持清醒过程中,有关性爱的兔子 –

+1

@Ed_Heal哈哈耶,我可以告诉。显然没有人设法通过:/ – user1520427

0

嘿,你使用的是相同的变量进行求和&作为循环变量

试试这个代码

int add(int n) 
{ 
    int sum=0; 

    for(int i=1;i<=10;i++) 
     sum=sum+i; 

    return sum; 
} 
+0

...但首先缩进 –

0
int SumOneToN(int n) 
{ 
    int sum=0; 
    for(int x=1;x<=n;x++) 
    { 
     sum+=x; 
     cout << sum << " "; 
    } 
    cout << endl; 
    return sum; 
} 
0

写一个 “+” 号的倒逗号和cout x;一次在while循环之前。如果你想通过SUM来完成,你必须引入另一个变量,上面的解决方案是足够公平的。

#include <iostream> 
using namespace std; 

int SumOneToN(int n) 
{ 
    int x = 1; 
    cout << x ; 
    x++; 
    while (x <= n) 
    { 
     cout << " + " << x ; 
     x++; 
    } 
    cout << endl; 
} 

int main() 
{ 
    int x; 
    cin >>x; 
    SumOneToN(x); 
    return 0; 
} 
0

你可以试试这个:

int SumOneToN(int n){ 
    int sum=n,x=1; 
    while(x<n){ 
     cout<<x<<"+"; 
     sum+=x; 
     x++; 
    } 
    cout<<x; 
    return sum; 
} 

注意:这不会打印一个额外的 '+' 后,最后一个号码。