C语言如何实现输出语句格式化?数字输出除末尾外追加逗号怎么做
修复方案
原有代码问题修正
首先你现有代码存在几处语法/逻辑错误,会导致无法正常运行:
- 读取上下界的
scanf未加取地址符&,会触发内存访问错误 - 第二个for循环的迭代变量
i未声明,第一个for循环内定义的i是块级作用域,循环外无法直接访问 - 条件判断中数组名误写为
arr,同时缺少右括号 - 上下界读取逻辑要和输入对应:你输入的第一个是下界、第二个是上界,判断逻辑要匹配变量定义
逗号输出控制实现
要实现「仅数字之间加逗号分隔,末尾无逗号」,最常用的方案是增加一个首元素标记位:第一个符合条件的元素直接输出,后续所有元素都先输出, 再输出数值,天然避免末尾多余逗号。
完整可运行代码
#include <stdio.h> int main() { int numVals; int max, min; printf("How many integers to enter?\n"); scanf("%d", &numVals); int array[numVals]; printf("Please enter %d integers: \n", numVals); for (int i = 0; i < numVals; ++i) { scanf("%d", &array[i]); } printf("Lower and upper bounds: \n"); // 补充取地址符,按输入顺序:第一个是下界min,第二个是上界max scanf("%d %d", &min, &max); int first_flag = 1; // 首元素标记位,1表示当前还没有输出过元素 for (int i = 0; i < numVals; ++i) { if (array[i] >= min && array[i] <= max) { if (first_flag) { printf("%d", array[i]); first_flag = 0; } else { printf(", %d", array[i]); } } } return 0; }
使用你给出的示例输入测试,输出结果为25, 0, 33,完全符合要求。
内容的提问来源于stack exchange,提问作者CMOS_BATTERY
相关产品推荐
相关产品推荐

