输入一个整数判断这个整数是几位数,并把这个整数逆序输出!

本文介绍了一个简单的Java程序,该程序能够接收用户输入的整数,判断其位数并输出该整数的逆序形式。通过使用Scanner类读取用户输入,并利用字符串操作实现逆序。

import java.util.Scanner;

/**
 *
 * 问题:输入一个整数判断这个整数是几位数,并把这个整数逆序输出!
 *
 * @author Administrator
 *
 * 程序如下:
 *
 */
public class Reverse {
   
    public static void main(String args[]){
        System.out.println("请输入一个整数,按Enter键结束!");
        Scanner s=new Scanner(System.in);
        String str=s.next();
        Reverse r=new Reverse();
        System.out.println("数字"+str+"为"+r.getDigits(str)+"位数");
        r.getReverse(str);
        System.out.println();              
       
    }
   
    public int getDigits(String s){
        return s.length();
    }
    public void getReverse(String s){
        char[] c=s.toCharArray();
        System.out.print("数字"+s+"逆序输出为:");
        for(int i=c.length-1;i>=0;i--){
            System.out.print(c[i]);
        }
    }
   
}

运行结果如下:

 

run:
请输入一个整数,按Enter键结束!
123456
数字123456为6位数
数字123456逆序输出为:654321
成功生成(总时间:3 秒)

以下几种不同的C语言实现方法可以实现输入一个不多于5位的正整数逆序输出该数输出几位数: ### 方法一:逐位判断法 ```c #include<stdio.h> int main(){ int a,b,c,d,e,n; printf("请输入一个不多于5位数的正整数: "); scanf("%d",&n); a=n/10000; //万位 b=n%10000/1000; //千位 c=n%1000/100; //百位 d=n%100/10; //十位 e=n%10; //个位 if(a!=0) { printf("%d是5位数逆序是:%d%d%d%d%d\n",n,e,d,c,b,a); } else if(b!=0) { printf("%d是4位数逆序是:%d%d%d%d\n",n,e,d,c,b); } else if(c!=0) { printf("%d是3位数逆序是:%d%d%d\n",n,e,d,c); } else if(d!=0) { printf("%d是2位数逆序是:%d%d\n",n,e,d); } else { printf("%d是1位数逆序是:%d\n",n,e); } return 0; } ``` 此方法通过对输入的数进行逐位判断,分别确定其万位、千位、百位、十位和个位,再根据每一位是否为零判断该数的位数逆序输出位数字[^1]。 ### 方法二:循环倒序法 ```c #include<stdio.h> int main() { long num, numt; int a = 0; printf("请输入一个不多于5位的正整数: "); scanf("%ld", &num); int flag = 1; //判断几位数 if (num >= 10000 && num < 100000) { printf("num是一个位数\n"); } else if (num >= 1000 && num < 10000) { printf("num是一个位数\n"); } else if (num >= 100 && num < 1000) { printf("num是一个位数\n"); } else if (num >= 10 && num < 100) { printf("num是一个位数\n"); } else if (num >= 0 && num < 10) { printf("num是一个位数\n"); } else { flag = 0; } if (flag == 1) { //倒序计算 numt = num; while (num) { a = a * 10 + num % 10; num = num / 10; } printf("倒序是:%ld\n", a); } else { printf("输入错误!请输入0 - 100000的数字\n"); } return 0; } ``` 该方法先判断输入数的位数,再通过循环不断取余和整除操作将数字倒序,最后输出倒序后的数字。若输入不符合要求,会提示输入错误[^2]。 ### 方法三:数组存储法 ```c #include<stdio.h> int main() { int x, n = 10000, j = 0, i = 0; int arr[5] = {'0'};//定义数组以将键入的整数存入 printf("请输入一个不多于5位的正整数: "); scanf("%d", &x); while (n > 0) { if (x / n < 10 && x / n > 0) { arr[i] = x / n; ++j; ++i; x -= n * (x / n); } n /= 10; } printf("逆序是:"); while (i > 0) { printf("%d", arr[i - 1]); i -= 1; } printf("\n位数是 %d\n", j); return 0; } ``` 此方法将输入的数按位存入数组,同时计算位数,最后逆序输出数组元素输出位数[^3]。 ### 方法四:通用位数计算法 ```c #include <stdio.h> int main() { int n; printf("请输入数:"); scanf("%d", &n); int m = n; if (n <= 0 || n > 99999) { printf("enter data error\n"); return 0; } //1. 获取位数 int count = 0; while (n != 0) { n /= 10; count = count + 1; } printf("位数是 %d\n", count); //2. 逆序输出 int a = 0; n = m; while (n) { a = a * 10 + n % 10; n = n / 10; } printf("逆序是: %d\n", a); return 0; } ``` 该方法先判断输入是否合法,再通过循环计算输入数的位数,最后再次使用循环将数字逆序输出[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值