2016-03-05 70 views
-3

沒有編譯器錯誤,但我沒有看到來自printf的語句(循環之後)。循環之前的printf是很好的。我無法解決這個問題。printf不工作爲什麼?

int prime(int n); 


    int main(void) 
    { 
     int num = 0; 
     bool prime; 
     int n; 
     int count; 
     int sum; 

     printf("Enter the limit:", n); 
     scanf("%d", &n); 
     printf("Primes up to %d\n", n); 


     // loop 
     for(int i =2; i <= n; i++) 
     { 
      prime = true; 
      for(int j =2; j < i; j++) 
      { 
       if(i%j == 0) 
       { 
        prime = false; 
        break; 
       } 
      } 
      if(prime) 
      { 
       num += i; 
       printf("%d ", i); 

      } 
     } 
     return num; 
     count++; 
     sum += count; 
     // sum of primes 

     printf("Number of primes: \n", sum); 
    } 

這是爲什麼?

+0

'return num;':此行終止函數執行。它將在執行後沒有任何內容。 –

+0

謝謝,我不知道。 – blacklune

+0

編譯時是否啓用了所有警告('-Wall -Wtratra')?你的編譯器應該告訴你一些關於'printf'調用和未初始化的變量。那是什麼'int prime(int n);'關於什麼?此外,這看起來不像C++。 – 5gon12eder

回答

5

因爲你之前return num,這意味着它結束你的功能之前。如果將函數的結尾更改爲:

count++; 
sum += count; 
// sum of primes 

printf("Number of primes: \n", sum); 
return num; 
+0

謝謝,我不知道。 – blacklune