2013-12-15 16 views
-3

我不知道這段代碼有什麼問題。我在'處理它'函數中收到錯誤。功能練習 - 三角形數字功能在C中不起作用

#include <stdio.h> 

int main(int argc, const char * argv[]) 
{ 

    double getIt(); 
    { 
     double num; 
     printf("Please enter a number: "); 
     scanf("%lf",&num); 
     return num; 
    } 

    double processIt(double triangNum); 
    { 
     for (int counter=1;counter<=triangNum;counter++) 
     { 
      triangNum=triangNum+counter; 
     } 
     return triangNum; 
    } 

    void printIt(double orig,double triang); 
    { 
     double orig; 
     double triang; 

     printf("Your original number is %lf, while your triangular number is %lf",orig,triang); 
    } 

    int main(); 
    { 
     double origNum=getIt(); 
     double triangNum=processIt(origNum); 
     printIt(origNum,triangNum); 
    } 

} 
+0

你爲什麼要在這裏處理'double'? –

+0

下次您收到錯誤時,請在您的帖子中列出**。 (然而,看看反應,我可以看到爲什麼你避開它。) – usr2564301

回答

3

在函數定義的每個開始語句之後刪除分號!前者爲 。

double getIt() // no semicolon here 
{ 
double num; 
printf("Please enter a number: "); 
scanf("%lf",&num); 
return num; 
} 
+0

使用xcode時,我收到一個錯誤,它告訴我在函數結尾處放一個分號。 – user2276450

+0

誰讓你把分號? –

+1

@ user2276450你甚至有麻煩看看我的答案嗎? (和C書?或者其他什麼?)你不能把一個函數放在另一個函數內。 – 2013-12-15 22:11:33

2

更何況你有兩個main()函數;一個嵌入到另一箇中......你無法在C中完成這項工作。你需要將全部函數定義移動到全局範圍(並且最重要的是,閱讀初學C教程)。

2

去除分號之後,也注意到double processIt(double triangNum)

for (int counter=1;counter<=triangNum;counter++) 
{ 
    triangNum=triangNum+counter; 
} 

你不停地在每個迭代countercounter增加triangNum始終保持低於triangNum,所以for循環永遠不會結束。

0

無論你之前的循環出了什麼問題,導致triangNum是一個垃圾數。獲取nth三角形數是一個簡單的等式:

double processIt(double n) 
{ 
    return (n * (n+1))/2; 
} 

例如用於5的輸入,這將返回15


其他的事情你的代碼錯誤:

你的origtriang本地聲明掩蓋你的參數。

void printIt(double orig,double triang); 
{ 
    // double orig; 
    // double triang; 

    printf("Your original number is %lf, while your triangular number is %lf",orig,triang); 
} 

在其他答案中指出的問題:您將整個程序嵌入main中,並在函數聲明後放入分號。