printf中三元运算符实现数组元素格式化输出的填空问题
问题:补全C语言循环实现数组元素的特定格式输出
给定一个包含n个整数的数组a,需补全以下for循环的空白部分(不得修改其他代码),实现以下输出规则:
- 若数组元素个数大于1,第一个元素后输出冒号
: - 其余元素之间输出逗号
, - 最后一个元素后输出换行符
\n
待补全的代码:
for (int i = 0; i < n; i++) { printf("%d%c", a[i], ":,\n"[_____]); }
输入输出示例
- 输入数组:
1 2 3 - 输出结果:
1:2,3
空白处的解决方案
填入以下逻辑:
i == n-1 ? 2 : (i == 0 ? 0 : 1)
逻辑解释
字符串":,\n"的三个字符对应索引如下:
- 索引0:
:(冒号) - 索引1:
,(逗号) - 索引2:
\n(换行符)
通过三目运算符根据当前循环索引i选择对应索引:
- 当
i == n-1(处理最后一个元素),选择索引2,输出换行符 - 当
i == 0(处理第一个元素),选择索引0,输出冒号 - 其余情况(处理中间元素),选择索引1,输出逗号
补全后的完整代码:
for (int i = 0; i < n; i++) { printf("%d%c", a[i], ":,\n"[i == n-1 ? 2 : (i == 0 ? 0 : 1)]); }
内容的提问来源于stack exchange,提问作者imtiaz
相关产品推荐
相关产品推荐

