C语言如何避免打印数字组合时末尾输出多余逗号和空格
C代码多余逗号空格问题解决方案
你的代码问题出在每打印一组两位数字后都会无条件输出逗号和空格,所以最后一组89后面也多了这两个字符,和预期输出不符。
推荐修改方案(通用型)
新增一个标记位判断是否是第一组输出,把「每组后加分隔符」的逻辑调整为「每组前加分隔符,第一组除外」,无需硬编码判断最后一组的数值,适配性更强。
修改后完整代码如下:
int main(void) { int d1, d2; int is_first = 1; // 标记是否为第一组输出 d1 = 48; while (d1 < 58) { d2 = d1 + 1; while (d2 < 58) { // 非第一组先输出分隔符 if (!is_first) { putchar(','); putchar(' '); } putchar(d1); putchar(d2); // 第一组输出后修改标记 is_first = 0; d2++; } d1++; } putchar(10); return (0); }
可选简化方案(适配当前固定场景)
如果不想新增标记变量,也可以直接判断当前是否是最后一组输出(即d1 == 56对应字符'8',d2 == 57对应字符'9'),仅当不是最后一组时输出逗号和空格:
int main(void) { int d1, d2; d1 = 48; while (d1 < 58) { d2 = d1 + 1; while (d2 < 58) { putchar(d1); putchar(d2); // 不是最后一组才输出分隔符 if (!(d1 == 56 && d2 == 57)) { putchar(','); putchar(' '); } d2++; } d1++; } putchar(10); return (0); }
两种方案都可以实现你要的输出效果。
内容的提问来源于stack exchange,提问作者Marlon
相关产品推荐
相关产品推荐

