如何在for循环中用printf将偶数输出在单个大括号内?
解决思路与代码修改
你的问题根源在于每次找到偶数就重复打印了整行前缀和单独的大括号,所以会输出多份重复的句子。要实现目标格式,需要把固定文本和数字输出拆分处理:
- 先在循环开始前打印固定前缀和左大括号,只执行一次
- 循环内只处理偶数的数字和分隔逗号(注意避免开头出现多余逗号)
- 循环结束后补全右大括号和句号
修改后的代码示例:
#include <stdio.h> int main() { int n = 10; // 可替换成你需要的范围上限 int i; int is_first_even = 1; // 标记是否是第一个偶数 // 先输出固定前缀和左大括号 printf("The even number in range are {"); for(i=1; i<=n; i++){ if(i % 2 == 0){ // 直接判断偶数,无需额外变量r if(!is_first_even){ printf(", "); // 非第一个偶数,先输出分隔逗号 } printf("%d", i); is_first_even = 0; // 找到第一个偶数后更新标记 } } // 输出结尾的大括号和句号 printf("}.\n"); return 0; }
如果不想用标记变量,也可以先找到第一个偶数直接打印,之后的偶数前面加逗号,逻辑类似:
#include <stdio.h> int main() { int n = 10; int i; int has_found_even = 0; printf("The even number in range are {"); for(i=1; i<=n; i++){ if(i % 2 == 0){ if(has_found_even){ printf(", "); } printf("%d", i); has_found_even = 1; } } printf("}.\n"); return 0; }
运行这两段代码,都会输出你想要的格式:
The even number in range are {2, 4, 6, 8, 10}.
内容的提问来源于stack exchange,提问作者Peanut
相关产品推荐
相关产品推荐

