在上一学期之后我该怎么做才能删除逗号?

时间:2015-09-22 16:54:26

标签: c

#include <stdio.h>

int main()
{
  int n1, n2, temp, n, d, p;
  printf("Enter two numbers(The limits of your prime numbers): ");
  scanf("%d %d", &n1, &n2);
  if (n1>n2)
  {
      temp=n1;
      n1=n2;
      n2=temp;
  }
  printf("The prime numbers between %d and %d are: ", n1, n2);
  for(n=n1;(n<=n2)||(n<2000);++n)
  {
      p=1;
      for(d=2; d<=n/2; ++d)
      {
        if(n%d==0)
        {
          p=0;
          break;
        }
      }
      if(p==1)
      {
        if (n==1)
        {continue;}
        printf("%d",n);
        //I don't know what to put here so that the last term won't have a comma
        printf(", ");

      }
  }
  return 0;
}

我正在尝试在两个间隔(包括两个)之间打印素数,但最后一个术语总是有逗号。我需要一种方法来阻止逗号在最后一个学期后打印。逗号后面跟着一个空格。

例如(我目前的情况):

Input:1 10 Output:2, 3, 5, 7,

What it should be:2, 3, 5, 7

我忘了提到一旦“n”超过2000就应该停止打印..

5 个答案:

答案 0 :(得分:2)

一个非常常见的问题,独立于编程语言,更多的是逻辑思维练习。在这种情况下,您无法告诉您何时打印最后号码,但可以告诉您何时首先打印 。使用该知识并将", " 第一个放在循环中,在第一次迭代时省略它。

编辑:例如使用一个标志:if (firstRun) { firstRun = 0; } else { fputs(", ", stdout); }

答案 1 :(得分:2)

在数字前单独打印逗号,并且如果这是第一个素数,则有条件说明,不要打印逗号。否则打印出来......

答案 2 :(得分:0)

试试这个

 (n<=n2)?printf(","):(n<2000?printf(","):printf("\n"))

答案 3 :(得分:0)

这样的事情:

char *separator = "";

for (...) {
    ...
    printf("%s%d", separator, n);
    separator = ",";
}

答案 4 :(得分:-1)

我为您的问题使用提供了很好的解决方案

printf(“\ b \ b”); // \ b \ b

之后的2个时间空间

它包括返回0之前;声明如:

 if(p==1)
  {
    if (n==1)
    {continue;}
    printf("%d",n);
    //I don't know what to put here so that the last term won't have a comma
    printf(", ");

  }
   }
 printf("\b\b  "); //here insert code 
 return 0;

肯定会有帮助