2014-09-19 79 views
-1
//Prime test 
    if(iSelectedOp == 6) 
    { 
     printf("Enter positive integer to be tested: \n"); 
     scanf("%d", &dInteger1); 
     int i; 
     int f; 
     for (i= 2; i < 10; i++) 
     { 
      if (num1 % i == 0); 
       f++; 
       printf("%d is prime\n", dInteger1); 
      else  
       printf("no prime\n"); 
      } 

    } 

嘿所有,我在這裏有一個函數,需要一個輸入數字,並告訴用戶,如果它是素數或否。我收到一個錯誤,說我還有一個沒有以前的if。我相信這是我錯過的一些語法。有任何想法嗎?素數如果其他錯誤

+2

嘗試從第一個if中除去';'。 – 2014-09-19 02:03:31

+0

並將'{'大括號''''圍繞'f ++;的printf(...);'。 – 2014-09-19 02:15:56

回答

1

您有以下你內心如果不止一個語句,所以它需要支架

if (num1 % i == 0) 
{ 
    f++; 
    printf("%d is prime\n", dInteger1); 
} 
else  
    printf("no prime\n"); 

而且,你有if後多餘的分號。

爲避免混淆並使代碼更易於閱讀,我通常會使用是否需要它們。儘管這是一個風格點,但並非絕對必要。

if (num1 % i == 0) 
{ 
    f++; 
    printf("%d is prime\n", dInteger1); 
} 
else  
{ 
    printf("no prime\n"); 
} 
1
if (num1 % i == 0); 
       ^delete this 

它應該是:

沒有大括號,if(和whilefor等)語句的身體只能走直到;(所以if (true) a(); b();a()是唯一部分由if覆蓋; b()始終執行,因爲它不在if的範圍之內)。

0

您的if語句後面有一個分號,可防止跟隨else。在相關說明中,我認爲您的實施方法根本不起作用...這可能更接近您要查找的內容:

bool prime = true; 
    for (i = 2; i*i <= dInteger1; i++) 
    { 
     if (dInteger1 % i == 0) 
      prime = false; 
    } 
    if(prime) 
     printf("%d is prime\n", dInteger1); 
    else 
     printf("no prime\n");