整数逆序输出

整数逆序输出(C语言)

要求输入任意一正整数,把这个正整数以逆序的方式输出。

输入:123
输出:321

我们以上面这对数据举例,输入数123,输出数321。
通过观察,我们可以发现,输入数和输出数的位数相同,输入数的百位1在输出数中作为个位,输入数的个位3作为输出数的个位。

也就是说整数逆序本质上是数位的颠倒

所以我们只需要判断输入数是几位数,然后获取输入数各数位的值,拼凑出输出数就可以了。

三位数举例:

int x;  //用于存放输入数
int units, tens, hundreds;  //用于存放个、十、百位的值
int result;  //用于存放结果

printf("请输入一个三位正整数:");
scanf("%d", &x);

//获取各数位的值
hundreds = x/100;
tens = x % 100 / 10;
units = x % 10;

//拼凑结果
result = units*100 + tens*10 + hundreds;

printf("%d", result);

这种方法的缺点是要根据输入数的位数的不同制定不同的运算策略,不够聪明。

于是我们用第二种方法:利用循环逐一输出其各数位

也就是先输出它的个位,再输出它的十位,,以此类推,在输出结果上是效果一样的。

int x;
scanf("%d", &x);
while (x != 0)
{
	printf("%d", x%10);
	x /= 10;
}

上面的程序利用一个循环,依次获得输入数的个位、十位、百位……并即时输出。

但有一个小瑕疵,类似于输入1000时,输出是0001。程序只是对输入数的各数位值进行了机械的输出,并没有利用其得到真实的结果。

我们可以对其进行优化:综合上面两种方法的特点

方法一的特点是用各数位的值拼凑出结果数
方法二的特点是用循环依次获得数位的值

int Reverse_Output(int x)
{
	int result = 0;
    while (x != 0)
    {
	    result = result*10 + x%10;
	    x /= 10;
    }
    return result;
}

大家在纸上跑一遍这个程序, 就能很快理解核心部分。

  • 34
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以使用递归法将整数输出。具体步骤如下: 1. 定义一个递归函数,输入参数为需要输出整数。 2. 判断输入的整数是否为0,如果为0,则停止递归。 3. 如果输入的整数不为0,则先输出它的个位数,再递归输出其余位数。 4. 在递归函数中,每次将输入的整数除以10,将得到的商作为下一次递归的输入参数。 下面是使用C++实现的代码示例: ```c++ #include<iostream> using namespace std; void reverse(int n){ if(n == 0) return; // 递归终止条件 cout << n % 10; // 输出个位数 reverse(n / 10); // 递归输出其余位数 } int main(){ int n = 12345; reverse(n); // 输出结果为:54321 return 0; } ``` 在这个示例中,输入的整数为12345,递归输出的结果为54321。 ### 回答2: 递归法是一种函数调用自身的方法。将整数输出可以通过递归法来实现。具体的步骤如下: 1. 判断整数是否为0,如果是,则递归结束。 2. 取整数的最后一位数字,可以通过取模运算(整数除以10的余数)来得到。 3. 输出该位数字。 4. 将整数除以10,取整得到去掉最后一位数字后的整数。 5. 调用递归函数,将去掉最后一位数字的整数作为参数传入,重复上述过程。 下面是一个具体的实现示例: ```python def reverse_print(num): if num == 0: # 递归结束条件:整数为0 return digit = num % 10 # 取整数的最后一位数字 print(digit) # 输出该位数字 num = num // 10 # 去掉最后一位数字 reverse_print(num) # 递归调用,传入去掉最后一位数字的整数 # 测试 num = 12345 reverse_print(num) # 输出:5 4 3 2 1 ``` 这样,通过递归调用,我们可以将整数输出。 ### 回答3: 递归法是一种通过调用自身来解决问题的方法。递归法将问题分解为一个或多个子问题,并通过不断调用自身来解决子问题,最终得到问题的解。下面用递归法来实现将整数输出。 首先,我们需要定义一个递归函数来解决这个问题。这个函数接受一个整数作为输入,并将其输出。具体的步骤如下: 1. 首先,将输入的整数转换为字符串,以便我们可以逐个输出它的数字。 2. 如果字符串长度为1,表示递归已经到达最底层,直接输出这个字符即可。 3. 否则,递归调用函数本身,将剩余的子字符串作为新的输入。 4. 在递归调用的返回值前,将当前字符输出。 5. 最后,将输出的字符串拼接在一起,得到最终的结果。 例如,输入整数12345,按照上述步骤进行输出的过程如下: 1. 将整数转换为字符串"12345"。 2. 递归调用函数本身,输入为"2345"。 3. 继续递归调用,输入为"345"。 4. 再次递归调用,输入为"45"。 5. 继续递归调用,输入为"5"。 6. 字符串长度为1,输出字符"5"。 7. 返回到上一步骤,输出字符"4"。 8. 返回到上一步骤,输出字符"3"。 9. 返回到上一步骤,输出字符"2"。 10. 返回到上一步骤,输出字符"1"。 11. 最终得到输出的字符串"54321"。 这就是利用递归法将整数输出的过程。递归法在解决该问题时,将问题分解为更小的子问题,并通过递归调用不断解决子问题,最终得到整数输出

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值