2016-12-04 66 views
1

我寫了這個代碼1和輸入值之間打印出所有質數:如何從C中的輸出中省略最終的逗號(,)?

#include <stdio.h> 
#include <conio.h> 

int main() 
{ 
//Declaration of variables: 
    int N, i, j, isPrime, n; 

// Ask user for input the upper limit for the generation of primes (N) 
printf("Enter the value of N\n"); 
scanf("%d",&N); 

if (N==1){ 
    printf("There are no prime numbers before 1. Please recompile. \n"); //print out an error if 
    // 1 is inputted as the upper limit for the generation of primes. 
} 

/* For every number between 2 to N, check whether it is prime number or not */ 

else 
    printf("The primes between 1 and %d are: ", N); 

for(i = 2; i <= N; i++){ 
    isPrime = 0; 

     /* Check whether i is prime or not */ 
     for(j = 2; j <= i/2; j++){ 

     /* Check If any number between 2 to i/2 divides I completely If it divides, the numebr cannot be a prime. */ 

      if(i % j == 0){ 
       isPrime = 1; 
       break; 
      } 
     } 

     // print out the primes if the conditions are met 

    if(isPrime == 0 && N != 1) 
     printf("%d, ", i); 
} 

return 0; 
} 

它的偉大工程,但我得到一個逗號分隔每個值之後,包括最後一個。我想從最後一個顯示的逗號中刪除。

非常感謝您提前。

最好。

+2

通過印刷'2'第一,然後*預謀*逗號代替* *追加它 – StoryTeller

+0

'的printf( 「%d」,,I)'的每個數字後寫入一個逗號。你需要改變它。想想在紙上寫出列表時要做什麼,然後嘗試將其轉換爲程序代碼。 –

+1

知道'2'是一個素數,你可以從計算中跳過這個數字並打印'2',然後在後面的輸出位置上逗號*之前*數字(oops類似於@StoryTeller)。 –

回答

2

由於它是有點難以確定循環迭代是最後一個,一個可以把逗號前的輸出,而不是後的輸出,並省略第一個逗號如下所示,其中的註釋爲簡潔起見刪除。

int isFistIteraion = 0; 
for(i = 2; i <= N; i++) 
{ 
    isPrime = 0; 
    for(j = 2; j <= i/2; j++){ 
     if(i % j == 0){ 
      isPrime = 1; 
      break; 
     } 
    } 
    if(IsPrime == 0 && N != 1){ 
     if (0 == isFirstIteration){ 
      isFirstIteraion = 1; 
      printf("%d", i); 
     } else { 
      printf(", %d", i); 
     } 
    } 
}