C++冰雹序列作业:如何让最后一行末尾换行匹配自动评分要求?
修正冰雹序列输出格式问题
你的代码核心功能正常,但输出格式存在两个关键问题:
- 所有数字后都追加了制表符
\t,导致最后一行末尾多出一个无效制表符 - 循环结束后未输出换行,不符合自动评分器对最后一行末尾必须有换行的要求
修改后的代码
#include <iostream> using namespace std; int main() { int n; int lineCount = 0; cin >> n; while (true) { // 先输出当前数字 cout << n; lineCount++; // 到达序列终点,退出循环 if (n == 1) break; // 判断是否需要换行或添加制表符 if (lineCount % 10 == 0) { cout << endl; } else { cout << "\t"; } // 生成下一个冰雹数 n = (n % 2 == 0) ? n / 2 : 3 * n + 1; } // 确保最后一行末尾有换行 cout << endl; return 0; }
关键修改说明
- 调整输出逻辑:先输出数字,再根据当前行已输出的数量决定加制表符还是换行,彻底避免末尾多余的制表符
- 强制末尾换行:循环结束后主动输出
endl,保证无论最后一行有多少个数字,末尾都有符合要求的换行 - 简化冰雹数生成:用三元运算符替代if-else,逻辑更紧凑(也可以保留原if-else结构,不影响功能)
测试输入25时,输出会完全匹配题目给出的示例格式,包括最后一行的换行和无多余制表符。
内容的提问来源于stack exchange,提问作者Canadian Gamer
相关产品推荐
相关产品推荐

