C++计算找零代码如何删除最后输出末尾的+号
C++找零输出末尾多余+号的解决方法
- 方法1:前置分隔符法(最推荐,逻辑简单无额外性能开销)
核心逻辑是用标记位判断是否为第一个输出的面额,仅在非第一个面额前输出加号,避免末尾追加多余符号。
示例代码:
bool is_first = true; if (n500 > 0) { if (!is_first) cout << " + "; cout << n500 << " x 500"; is_first = false; } if (n200 > 0) { if (!is_first) cout << " + "; cout << n200 << " x 200"; is_first = false; } // 剩余n100到n1的判断逻辑都按上述格式修改即可 return 0;
- 方法2:写入字符串流后裁剪末尾
先把所有输出内容写入内存字符串流,最后删除末尾多余的加号和空格,适合不想修改原有判断逻辑的场景。
示例代码:
#include <sstream> #include <string> // ... 其他原有代码 ostringstream oss; if (n500 > 0) { oss << n500 << " x 500 + "; } if (n200 > 0) { oss << n200 << " x 200 + "; } // 剩余n100到n1的判断保持原有逻辑不变,全部写入oss对象 string res = oss.str(); // 输出前删除末尾多余的 " + " 三个字符,需先判断字符串非空避免越界 if (!res.empty()) { res = res.substr(0, res.size() - 3); } cout << res; return 0;
- 方法3:控制台回退删除字符(不推荐,仅适合纯控制台输出场景,输出到文件时会残留控制字符)
不需要修改原有输出逻辑,全部内容输出完成后用退格符覆盖末尾多余字符即可:
// 原有所有输出逻辑保持不变 cout << "\b\b\b "; // 退格三次删除末尾的 " + ",最后补空格覆盖残留的加号 return 0;
内容的提问来源于stack exchange,提问作者Liutauras
相关产品推荐
相关产品推荐

