C++输入字符n作为主标记未转换为数字输出异常问题排查
问题排查与修复方案
问题根因
- 代码未对主标记
z的取值做特殊判断,当输入的z为"n"时,没有按照规则替换为对应数字,直接原样输出了字符串n - 现有循环逻辑的计数规则和输出边界不符合需求:外层循环变量从1开始,额外在循环外多输出一次主标记,和预期的0~x的数字序列不匹配
修复后代码
#include <iostream> #include <string> using namespace std; int main() { string z,zz =""; int x,y; cin >> x >> y >> z >> zz; // 外层循环覆盖0到x的全部数字节点 for (int a = 0; a <= x; ++a) { // 主标记为n时输出对应数字,否则输出原标记 if (z == "n") { cout << a; } else { cout << z; } // 最后一个数字节点后不需要输出次标记 if (a != x) { for (int b = 1; b <= y; ++b) { cout << zz; } } } return 0; }
效果验证
输入3 9 n a时,循环逻辑执行如下:
- a=0:输出0,后跟9个a
- a=1:输出1,后跟9个a
- a=2:输出2,后跟9个a
- a=3:输出3,无后续次标记输出
最终输出为0aaaaaaaaa1aaaaaaaaa2aaaaaaaaa3,完全符合预期。
内容的提问来源于stack exchange,提问作者Azerya
相关产品推荐
相关产品推荐

