如何以简单的方式从 C 中的循环中删除最后一个逗号?

新手上路,请多包涵

该程序用于打印素数直到给定输入,并用逗号分隔每个素数。

 void main(){

    int N, counter=0, isPrime;

    int k, j;

    cout << "Enter maximum range: ";

    cin >> N;

    for (j=2; j<=N; j++){

        isPrime = 0;
        k = 2;

        while (k<j){

            if (j%k==0){

                isPrime++;
            }
            k++;
        }
        if (isPrime==0){

            if (k==N){
                cout << j;
            }
            else{
                cout << j << ",";
            }
            counter++;
        }
    }
    cout << endl;
    system("pause");
}

它只删除素数输入的最后一个逗号,而不是任何其他输入。我怎样才能解决这个问题?

 Input: 23
Output: 2,3,5,7,11,13,17,19,23
Input: 8
Output: 2,3,5,7,
Input: 9
Output: 2,3,5,7,

原文由 Talha Gillani 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

不需要 if then else 这么多:

 std::string delim = "";
for( auto&& item : vec )
{
   std::cout << delim << item;
   delim = ",";
}

所有情况都不需要检查,例如向量是否为空。

如果你在开头接受一个额外的空格,只需将字符串替换为char,然后性能会得到更大的提升。

原文由 user5405790 发布,翻译遵循 CC BY-SA 4.0 许可协议

不要删除最后一个逗号。而是在除第一个条目之外的每个条目 之前 插入逗号。

原文由 Ben 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题