c - 打印列表时省略最后一个逗号
问题描述
我想显示两个数字之间的质数,例如 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;
}
解决方案
回答问题但不考虑@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;
}
添加逗号后真正删除逗号的唯一方法是在运行时构建缓冲区 - 这是一种合理的方法 - 所以在这里我们必须只在需要时生成逗号,除了第一个物品。
推荐阅读
- regex - 正则表达式(VS Code)查找和替换子字符串
- python - 将列表从 Maple 发送到 Python
- pine-script - 修复 pine 脚本中的错误 Stock Screener
- amazon-web-services - AWS GLUE:通过 SSH 隧道的 MySQL
- sql - 如何更改主键默认值?
- unity3d - 如何让孩子变换位置
- python - Python 元素树 ParseError
- office365 - RichApi.Error ItemNotFound Office.context.document.addHandlerAsync
- nodes - Nervos/CKB - 我如何知道我的本地测试网 CKB 节点何时与网络完全同步?
- python - 有没有办法为多个返回提供类型提示