2016-11-15 30 views
0
#include <iostream> 
using namespace std; 
int sumTo(int a, int b); 


int main() 
{ 
int start; 
int end; 

cout << "Enter one number " << endl; 
cin >> start; 
cout << "The second number " << endl; 
cin >> end; 

int total = sumTo(start, end); 


cout << "The sum of the integers btween these 2 numbers is " <<total<<endl ; 

return 0; 

} 
int sumTo(int a, int b) 
{ 
    int sum = 0; 
    for (int x = a; x <= b; x++) 
    { 

     sum += x; 
     cout << sum << endl; 
     return sum; 
    } 
} 

嗨,這樣一個它需要找到兩個輸入數字之間的所有數字的總和。現在它只返回第一個輸入數字,不知道爲什麼?只返回x = a或'開始'變量的第一個值

+1

爲您解決問題的正確工具是你的調試器。您應該先詢問Stack Overflow,然後逐行執行代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 – Danh

+1

將'return'語句移出循環。你在第一次迭代中從函數返回。 –

+0

謝謝@IgorTandetnik太簡單了。 – Drewdinie

回答

2

您的代碼存在問題,return sum;已放置在for循環中。這將導致for循環僅運行一次,因爲該函數已經返回了sum的值,即a

int sumTo(int a, int b) 
{ 
    int sum = 0; 
    for (int x = a; x <= b; x++) 
    { 

     sum += x; 
     cout << sum << endl; 
     return sum; // Here is your problem. 
    } 
} 

你的函數實際上應該是

int sumTo(int a, int b) 
{ 
    int sum = 0; 
    for (int x = a; x <= b; x++) 
    { 

     sum += x; 
     cout << sum << endl; 
    } 
     return sum; // This line should be placed here instead. 
} 
+0

謝謝你這個修好了!!! – Drewdinie