2017-10-21 80 views
-2

我正在嘗試編寫一個程序,檢查給定的數字是奇數還是偶數以及素數或不是素數。它編譯沒有問題,但沒有結果出來。我需要一些提示。提前致謝。我的C程序編譯但不運行

int data(int n) { 
    int i, count; 
    count = 0; 
    if (n % 2 == 0){ 
     printf("%d is even ", n); 
    } 
    if(n % 2 != 0){ 
     printf("%d is odd ", n); 
    } 
    while (i = 2, i <= n/2, i++){ 
     if (n % i == 0){ 
      count++; 
      break; 
     } 
    } 
    if (count == 0){ 
     printf("and prime\n"); 
    } 
    else { 
     printf("and not prime\n"); 
    } 
    return 0; 
} 

int main(){ 
    data(11); 
    data(74); 
    data(307); 
    data(7402); 
    data(9357); 
    return 0; 
} 
+1

您是否嘗試過使用調試器? –

+0

你的問題是你寫'while'而你想寫*'for(i = 2; i <= n/2; i ++){' –

+1

請縮進代碼以使其可讀 –

回答

1

錯誤的原因必須是while (i = 2, i <= n/2, i++)。你可能想要一個for循環像

for(i = 2; i <= n/2; i++){ 

i = 2, i <= n/2, i++值是由於的方式逗號操作符的作品i++值。結果將是最後一個表達式的結果。

看一看here

表達式將從左到右計算,但最右邊表達式的結果將成爲總逗號分隔表達式的值。

否則,如果你是一個while循環意圖做

i=2; 
while (i <= n/2){ 
    ........ 
    ........ 
    i++; 
} 

其中i++是在循環的最後一條語句。