C++实现整数各位逆序打印及指定编程作业需求咨询
问题解答:C++逆序打印整数各位 & 实现PrintDigits函数
嘿,我来帮你搞定这两个问题!咱们先理清楚核心思路,再上完整的代码实现。
1. 逆序打印整数各位的核心逻辑
要逆序输出一个整数的各位数字,其实就两步循环操作,再处理一个特殊情况:
- 先忽略正负号(负号不属于数字位),用绝对值统一处理所有整数
- 用
% 10取当前数字的个位,打印出来 - 用
/ 10去掉已经打印的个位,让下一位变成新的个位 - 重复上面两步直到数字变为0
- 特殊情况:如果输入是0,得单独打印0,不然循环不会触发
2. 完整代码实现
下面是完全符合要求的PrintDigits函数和main函数,注释已经写得很清楚了:
#include <iostream> #include <cstdlib> // 用于abs()函数取绝对值 // 定义PrintDigits函数:接收整数,逆序打印各位数字(每行一个),返回打印的数字个数 int PrintDigits(int num) { int count = 0; // 处理输入为0的特殊情况 if (num == 0) { std::cout << 0 << std::endl; return 1; } // 取绝对值,统一处理正负数字 int abs_num = abs(num); while (abs_num > 0) { // 获取当前个位数字 int digit = abs_num % 10; // 打印数字,每行一个 std::cout << digit << std::endl; // 去掉已打印的个位数字 abs_num /= 10; // 计数加1 count++; } return count; } int main() { int num1, num2; // 获取用户输入的两个整数 std::cout << "请输入第一个整数:"; std::cin >> num1; std::cout << "请输入第二个整数:"; std::cin >> num2; // 处理第一个数并输出结果 std::cout << "\n第一个数的逆序各位数字:" << std::endl; int count1 = PrintDigits(num1); std::cout << "共打印了 " << count1 << " 个数字\n" << std::endl; // 处理第二个数并输出结果 std::cout << "第二个数的逆序各位数字:" << std::endl; int count2 = PrintDigits(num2); std::cout << "共打印了 " << count2 << " 个数字" << std::endl; return 0; }
代码小说明:
- 用
abs()函数处理正负输入,确保不管是正数还是负数,都只打印数字部分的逆序 - 单独处理
num == 0的情况,避免遗漏0的输出 - 每次循环都会打印一个数字并计数,最后返回总个数
main函数会提示用户输入两个整数,分别调用PrintDigits并展示结果和数字数量
举几个测试例子:
- 输入
123,会输出3、2、1,返回3 - 输入
-456,会输出6、5、4,返回3 - 输入
0,会输出0,返回1
内容的提问来源于stack exchange,提问作者Holly Thorsted
相关产品推荐
相关产品推荐

