如何用C++结合do while语句实现从数字中删除指定数字
C++ 基于do while语句实现数字指定位删除方案
可以实现,核心思路是逐位拆解原数字,过滤掉要删除的位后重新拼接为新数字,用do while循环保证哪怕输入数字为0也能至少执行一次位处理逻辑。
实现代码
#include <iostream> using namespace std; int main() { long long n; // 用long long避免大数字溢出 int del_num; cout << "请输入原数字:"; cin >> n; cout << "请输入要删除的数字(0-9):"; cin >> del_num; // 校验删除的数字是否合法 if (del_num < 0 || del_num > 9) { cout << "要删除的数字必须是0-9的单个整数" << endl; return 1; } long long res = 0; long long weight = 1; // 位权重,初始为个位权重1 long long temp = n; // 用临时变量操作,不修改原输入 do { int current_bit = temp % 10; if (current_bit != del_num) { res += current_bit * weight; weight *= 10; } temp = temp / 10; } while (temp != 0); // 直到所有位处理完毕停止循环 cout << "处理后的结果为:" << res << endl; return 0; }
核心逻辑说明
- 用临时变量存储原数字,避免修改原始输入值
- 每次取临时变量的最后一位(
temp % 10)做判断:如果不是要删除的数字,就将该位乘以当前位权重累加到结果中,同时权重乘以10进位;如果是要删除的数字则直接跳过,权重保持不变 - 每次处理完一位后将临时变量除以10,移除已经处理过的最后一位
- do while循环会先执行一次位处理逻辑,再判断临时变量是否为0,保证输入数字为0的场景也能正常处理
运行示例
- 输入原数字
10200、待删除数字2,输出结果:1000 - 输入原数字
1234、待删除数字3,输出结果:124
内容的提问来源于stack exchange,提问作者mohammad j bakhshi
相关产品推荐
相关产品推荐

