首页 > 解决方案 > 打印列表时省略最后一个逗号

问题描述

我想显示两个数字之间的质数,例如 2,5,7,11,但它显示为 2,5,7,11,有一个额外的“,”。

#include <stdio.h>
int main()
{
   int n1,n2,f,i,j;

   scanf("%d %d", &n1, &n2);

   for(i=n1; i<n2; ++i)
   {
      f=0;
      for(j=2; j<=i/2; ++j)
      {
         if(i%j==0)
         {
            f=1;
            break;
         }
      }
      if(f==0)
        if(i!=1)
         printf("%d,",i);
   }
   return 0;
}

标签: clistformattingcomma

解决方案


回答问题但不考虑@Bathsheeba 提出的观点:

#include <stdio.h>

int main()
{
   int n1,n2,f,i,j;

   scanf("%d %d", &n1, &n2);

   int itemCount = 0;  // NEW

   for(i=n1; i<n2; ++i)
   {
      f=0;
      for(j=2; j<=i/2; ++j)
      {
         if(i%j==0)
         {
            f=1;
            break;
         }
      }

      if (f == 0  &&  i != 1)  // TESTS COMBINED
      {
        if (itemCount++ > 0) putchar(',');  // HERE
        printf("%d",i);                     // COMMA REMOVED
      }
   }
   printf("\n"); // newline at the end
   return 0;
}

添加逗号后真正删除逗号的唯一方法是在运行时构建缓冲区 - 这是一种合理的方法 - 所以在这里我们必须只在需要时生成逗号,除了第一个物品。


推荐阅读