【问题标题】:How to separated numbers by a comma in output? [duplicate]如何在输出中用逗号分隔数字? [复制]
【发布时间】:2020-12-19 10:22:54
【问题描述】:

我想找到给定范围内的素数。 输出编号必须用逗号分隔。

#include <iostream>
using namespace std;

int main() 
{
int i,j,lower, upper;
cin >> lower;
cin >> upper;
for (i = lower + 1; i < upper; i++)
{
    for  (j = 2; j < i; j++)
    {
        if (i % j == 0)
        {
            break;
        }
    }
        if (j == i)
        {
        cout << i ;
        cout << ",";
        }
   }
  }

输入:11 20

输出必须是:13,17,19

但我的代码打印出一个额外的逗号,而且它不仅仅是在数字之间。你能帮帮我吗?!

【问题讨论】:

  • 换个角度思考问题。而不是“在除最后一个数字之外的每个数字之后放置一个逗号”将其更改为“在除第一个之外的每个数字之前放置一个逗号”。判断您在第一个数字时比在最后一个数字时要容易得多。

标签: c++ primes


【解决方案1】:

您可以将结果存储在向量中,而不是立即打印结果,这样您就可以准确地知道要打印多少个数字。然后你用这种方式打印你的矢量:

std::vector result;
std::string output = "";

for (size_t i = 0; i < result.size(); ++i) // Notice the ++i, not i++
{
  if (i != 0)
    output += ", ";
  output += result[i];
}

如果您不想将结果存储在向量中,可以将布尔值 firstResult 定义为 true(如果您还没有打印昏迷),然后在打印第一个结果时定义为 false,并且你在数字之前打印逗号。

int main() 
{
   bool firstResult = true;

   [...]

   if (j == i)
   {
      if (!firstResult)
         cout << ",";
      firstResult = false;
      cout << i ;
   }
}

【讨论】:

    猜你喜欢
    • 2021-06-20
    • 2019-10-23
    • 1970-01-01
    • 2017-06-27
    • 2019-07-10
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多