C++程序输出提示文本前出现多余前缀数字该如何解决
问题根源
输出前的多余数字是你主动打印的布尔值,来源有两处:
- main函数中存在两行多余的输出语句,C++默认会把bool类型的true输出为
1、false输出为0,这是前缀数字的主要来源 isMale和isTall函数的输入错误分支中,递归调用函数时额外用cout输出了返回的布尔值,用户输入无效内容时也会多打印0/1
修复步骤
- 删掉main函数里的两行多余输出代码:
cout << ismale; cout << istall;
你不需要向用户展示这两个布尔变量的原始值,删除后就不会出现前缀的0/1了。
- 修改两个判断函数的输入错误分支,去掉递归调用前的cout:
把isMale函数里的cout << isMale();改为直接调用isMale();
把isTall函数里的cout << isTall();改为直接调用isTall();
这里仅需要触发递归让用户重新输入,不需要输出函数返回的布尔值。
额外优化建议(可选)
用递归做输入校验如果连续多次输入错误,有栈溢出的风险,新手更推荐用while循环实现输入校验,逻辑更稳妥。
内容的提问来源于stack exchange,提问作者Matthew Geyko
相关产品推荐
相关产品推荐

