请求调试代码:实现注册号反转输出850234,计划用指针处理
问题调试与修正
你的代码存在几个关键错误,导致无法输出预期的反转结果850234,以下是问题分析和修正方案:
错误点梳理
- 循环条件错误:
while (number <= 10)初始number为432058,远大于10,循环直接跳过,reverseNumber始终为0。正确条件应为while (number > 0),确保数字还有剩余位时持续循环。 - 数字更新逻辑错误:
number= 10;是直接将number赋值为10,而非去掉最后一位。需改为number /= 10;(等价于number = number / 10;),每次循环丢弃数字的最后一位。 - 命名空间缺失:代码中使用
cout但未指定std::前缀,也未声明using namespace std;,编译时会因找不到cout定义报错。
修正后的基础版本代码
#include <iostream> int main() { int number = 432058; int reverseNumber = 0; while (number > 0) { int digit = number % 10; reverseNumber = reverseNumber * 10 + digit; number /= 10; } std::cout << "M.Estahsan --> Reversed Registration Number: " << reverseNumber << std::endl; return 0; }
运行这段代码即可得到预期输出850234。
基于指针的实现版本
如果你想按原计划用指针处理变量,这里提供指针版本的实现:
#include <iostream> int main() { int number = 432058; int reverseNumber = 0; int* numPtr = &number; int* revPtr = &reverseNumber; while (*numPtr > 0) { int digit = *numPtr % 10; *revPtr = *revPtr * 10 + digit; *numPtr /= 10; } std::cout << "M.Estahsan --> Reversed Registration Number: " << *revPtr << std::endl; return 0; }
该版本通过指针numPtr和revPtr分别指向number和reverseNumber,解引用指针完成变量操作,同样能得到正确结果。
内容的提问来源于stack exchange,提问作者Estahsan Haider
相关产品推荐
相关产品推荐

