逆向输出的数字

书上的一个例子:感觉很有趣:便贴出了,分享一下

 

public class ad{
  public static void main(String args[]){
     int number=(int)(Math.random()*1000000);  //产生一个1000000以内的正整数
     int remainder;
     System.out.println("要处理的数字是:"+number);
     System.out.print("nixiangshuchude shuzi:");
     while(number>0){  //循环直到数字变成0为止
        remainder = number % 10;  //分离出个位
        System.out.print(remainder);
        number /= 10;
     }
  }
}


 结果:

要处理的数字是:563039
fanxiang shuru 
930365

以下是使用C语言实现逆向输出数字功能的一种方法,基于递归逻辑[^2]: ```c #include <stdio.h> int reverseNumber(int num, int result) { if (num < 10) { // 如果当前数字小于10,则表示已经处理到最后一位 return num + result; } else { result += num % 10; // 取出最后一位并累加到结果中 result *= 10; // 结果左移一位以便存储下一位 return reverseNumber(num / 10, result); // 继续处理剩余部分 } } void main() { int number, reversedResult = 0; printf("请输入一个整数:"); scanf("%d", &number); reversedResult = reverseNumber(number, reversedResult); printf("逆序后的结果:%d\n", reversedResult); system("pause"); } ``` 此代码实现了通过递归方式逆向输出数字的功能。具体来说,`reverseNumber` 函数会不断提取输入数字 `num` 的最低位,并将其加入到 `result` 中。当 `num` 小于10时,意味着已到达最后一个数字,此时返回最终的结果。 对于另一种需求——保留前导零的情况(如将500逆序为005),则需采用不同的策略来逐位打印每一位数字而不是构建完整的反转数值[^3]。下面是相应的解决方案: ```c #include <stdio.h> #include <math.h> void printReversedDigits(int n){ if(n >= 10){ printReversedDigits(n / 10); // 处理更高位的部分 } printf("%d", n % 10); // 打印当前最低位 } int countDigitLength(int value){ double length=log10(value)+1e-10; return floor(length); // 计算原始数据长度用于填充前置'0' } int main(){ int inputNum,digitLen,tempStore; printf("请输入一个正整数:"); scanf("%d",&inputNum); digitLen=countDigitLength(inputNum); tempStore=inputNum; while(tempStore>=(pow(10,(digitLen)-1)) || !(tempStore%(int)(pow(10,(digitLen)-1))==0)){ printReversedDigits(tempStore/(int)(pow(10,(digitLen)-1))); putchar('0'); // 当高位不足时补充‘0’ --digitLen; tempStore%=((int)(pow(10,(digitLen)))); } if(digitLen!=0 && inputNum !=0 ){ for(;digitLen>=1;--digitLen){ putchar('0'); } } putchar('\n'); return 0; } ``` 以上代码能够满足即使原数字有前导零也能正确显示的要求。它先计算出整个数字的总位数,接着逐步分解该数字直至每位都被单独打印出来,在必要处补足缺失的零。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值