判断一个数是否为回文数,给一个数求出是几位数,逆序输出这个数

判断一个是不是回文数/回文内容,逆序输出一个数

package arithmetic;

/**
 *      判断一个是不是回文数。
 *      判断是否为回文内容
 *      给一个数求出是几位数,逆序输出这个数
 *
 * @author sunRainAmazing
 *
 */
public class PalindromeNumber {

    public static void main(String[] args) {

        isPalindromeNumber_array(1);
        isPalindromeNumber_array(10001);
        isPalindromeNumber_array(123433);


        isPalindromeNumber_charAt("天连水尾水连天");
        isPalindromeNumber_charAt("雾锁山头山不锁雾");

        isPalindromeNumber_substring("231132");
        isPalindromeNumber_substring("222332");

        isPalindromeNumber_toCharArray(222332);
        isPalindromeNumber_toCharArray(10001);



    }
    /**
     * 判断一个输入的int类型的数是否为回文数
     *      给一个数求出是几位数---见2、while区块代码
     *      逆序输出这个数---见3、for循环体
     * @param number 判断的数字
     */
    public static void isPalindromeNumber_array(int number){
        //1、定义出需要的变量
        int temp,flag;
         flag=temp=number;
        int count=1;

        //2、求出相应的位数
        while((number=number/10)!=0){
            count++;
        }

        //3、将各位数加入到数组中去
        //      ---可以通过for在将其赋值的结果输出
        int[] arr=new int[count];
        for (int i = 0; i < count; i++) {
            arr[i]=temp%10;
            temp/=10;
        }

        //4、进行判断对应的数是否相等
        for (int i = 0; i < count; i++) {
            if(arr[i] != arr[count-1-i]){
                System.out.println(flag+" 不是回文数");
                return ;    //这里不能使用break
            }
        }
        System.out.println(flag+" 是回文数");
    }




    /**
     * 利用String字符串的相应方法
     *      主要用到的方法: 
     *              求长度:.length()方法
     *                          charAt(int index)  返回指定索引处的 char 值。 
     * 
     * @param number
     */
    public static void isPalindromeNumber_charAt(String str){
        //将其转为数组
        int length=str.length();
        for (int i = 0; i < length/2; i++) {
            if(str.charAt(i)!=str.charAt(length-1-i)){
                System.out.println(str+" --->不是回文内容");
                return;
            }
        }
        System.out.println(str+" --->是回文内容");
    }






    /**
     * 利用String字符串的相应方法
     *      主要用到的方法:
     *          length()        计算字符串的长度
     *          String  substring(int beginIndex, int endIndex) 
     *                      返回一个新字符串,它是此字符串的一个子字符串。 
     *                      区间  [a,b)   为前闭后开,取前不取后
     *          equals()    判断两个字符串是否相等
     * @param number
     */
    public static void isPalindromeNumber_substring(String str){
        //将其转为数组
        int length=str.length();
        for (int i = 0; i < length/2; i++) {
            if(!str.substring(i, i+1).equals(str.substring(length-1-i, length-i))){
                System.out.println(str+" --->不是回文内容");
                return;
            }
        }
        System.out.println(str+" --->是回文内容");
    }





    /**
     * 利用String字符串的相应方法
     *          char[]   toCharArray() 
     *                将此字符串转换为一个新的字符数组。 
     * @param number
     */
    public static void isPalindromeNumber_toCharArray(int number){
        //将其转为数组
        char[] arr=(number+"").toCharArray();
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=arr[arr.length-1-i]){
                System.out.println(number+" 不是回文数");
                return;//注意这里 不能使用break
            }
        }
        System.out.println(number+" 是回文数");
    }


}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: #include <stdio.h> int main() { int n, num, rev = 0; printf("请输入一个:"); scanf("%d", &n); num = n; while (num != 0) { rev = rev * 10 + num % 10; num /= 10; } if (n == rev) { printf("%d是回文数\n", n); } else { printf("%d不是回文数\n", n); } return 0; } ### 回答2: 要判断一个是否回文数,可以使用C语言编写一个实现该功能。 首先,我们需要定义一个,函的输入参一个,返回值为布尔类型。 函的实现思路如下: 1. 将输入的整保存为一个临时变量temp。 2. 使用两个指针i和j,分别指向temp的首位和末位。 3. 循环比较i和j指向的字符是否相等,若不相等,则返回false,表示该不是回文数;若相等,则将i向右移动一位(i++),将j向左移动一位(j--),继续比较。 4. 循环终止条件为i大于等于j。 5. 若循环结束后,所有比较都相等,则返回true,表示该回文数。 以下是用C语言实现的代码: ```c #include <stdbool.h> bool isPalindrome(int num) { // 将输入的整保存为一个临时变量temp int temp = num; // 初始指针位置 int i = 0, j = 0; // 遍历比较首尾字符 while (temp) { // 获取temp的最高位,即首位 int digit = temp % 10; // 更新temp的首位 temp /= 10; // 判断首尾字符是否相等 if (i == j) { // 首尾指针相等,向外扩展比较 i /= 10; j *= 10; } else { // 首尾指针不相等,返回false return false; } } // 比较结束,返回true return true; } ``` 在主程序中,可以调用isPalindrome函判断某个整是否回文数。例如: ```c #include <stdio.h> int main() { int num; printf("请输入一个:"); scanf("%d", &num); if (isPalindrome(num)) { printf("%d是回文数\n", num); } else { printf("%d不是回文数\n", num); } return 0; } ``` 以上是用C语言实现判断一个是否回文数的方法,希望对您有所帮助。 ### 回答3: 要用C语言编写一个判断一个是不是回文数的程序,可以按照以下步骤进行: 1. 首先,定义一个判断一个是否回文数。函名可以叫做`isPalindrome`,参一个。 2. 在函内部,将输入的整保存在一个临时变量中,因为后面的处理会修改原始据。 3. 创建一个变量`reversedNum`,用于保存原始整的逆序。 4. 使用一个循环,将原始整的各个字从个位数开始逐个取,并将其累积到`reversedNum`中。 5. 当原始整变成0时,表示已经将所有字取,并得到了逆序。 6. 最后,将原始整和逆序进行比较,如果相等则说明是回文数,返回1;否则,返回0。 7. 主函中,根据返回值为1或0,输相应的结果。 以下是一个示例代码的实现: ```c #include <stdio.h> int isPalindrome(int num) { int temp = num; int reversedNum = 0; while (temp != 0) { reversedNum = reversedNum * 10 + temp % 10; temp /= 10; } if (num == reversedNum) return 1; // 是回文数 else return 0; // 不是回文数 } int main() { int num; printf("请输入一个:"); scanf("%d", &num); if (isPalindrome(num)) printf("%d 是回文数。\n", num); else printf("%d 不是回文数。\n", num); return 0; } ``` 以上的代码会读取一个,并判断是否回文数,然后输相应的结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值