#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就应该停止打印..
答案 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;
肯定会有帮助