2011-01-09 75 views
-1
#include <stdio.h> 
void fun(int x) 
{ 
    if(x<=20) 
    { 
    printf("d\n",x); 
    return fun(2*x); 
    return fun(x/2); 
    } 
} 
main() 
{ 
     int x; 
     printf("Enter the number\n"); 
     scanf("%d",x); 
     fun(x); 
} 
+2

隱式`int`?一種方法返回兩個? – 2011-01-09 10:20:59

回答

3

這應該是scanf("%d", &x);,並且可能printf("%d\n", x);

另外,您從void函數返回一些東西(兩次!)。您的代碼將無法正常工作。

+1

+1。 GCC編譯它。當然,用'牆壁'(正確)抱怨。 – 2011-01-09 10:22:38

+0

@比利,我想這只是降低了返回值。但是,如果它優化了函數調用,因爲它的結果從來沒有被使用過,那將很有趣。感謝您的信息:) – 2011-01-09 10:24:52

1

如果您打算打印x的值,它應該是printf(「%d \ n」,x); 你缺少%symbol.also函數中的第二個return語句將永遠不會執行。

+0

雖然這是真的,但這不是導致段錯誤的原因。 – 2011-01-09 10:26:19

0

除了其他人說的之外,在修復所有其他編程錯誤之後,您正在將程序指向無限遞歸。

+0

編寫一個函數Compute(int x),使其輸出x,2x,4x,8x ...的值。直到數值不超過20000.達到20000後,它再次從...... 8x,4x,2x,x回來並停在那裏。 注意:(1)不能在函數中使用任何局部變量 (2)不能使用任何循環(for或while或do..while)或任何GOTO語句。 – Ankur 2011-01-09 10:55:38

0
#include <stdio.h> 
void fun(int x) 
{  
    if(x<=20000) 
    { 
    printf("%d\n",x); 
     fun(x<<1);  
    printf("%d\n",x); 
    } 
} 
main() 
{ 
     int x; 
     printf("Enter the number\n"); 
     scanf("%d",&x); 
     printf("\n"); 
     fun(x); 
     system("pause"); 
} 

這是正確的程序,我一直在尋找。謝謝大家!