C语言 java 整数逆序,回文数判断

#include<stdio.h>

int main()
{
    int a=1234567;
    int remainder=0;
    int reverse_a=0;
    printf("a=%d\n",a);
    while(a!=0)
    {
        remainder=a%10;//求余数
        reverse_a=reverse_a*10+remainder;//
        a=a/10;
    }
    printf("a=%d\n",a);
    printf("reverse_a=%d\n",reverse_a);
    reverse_num(&a,&reverse_a);
    printf("a=%d\n",a);
     printf("reverse_a=%d\n",reverse_a);
     reverse_num(&reverse_a,&a);
     printf("a=%d\n",a);
     printf("reverse_a=%d\n",reverse_a);
     reverse_num(&a,&reverse_a);
     printf("a=%d\n",a);
     printf("reverse_a=%d\n",reverse_a);
     return 0;
}
void reverse_num(int* num,int* revers_num)
{
    int remainder;
    while(*num!=0)
    {
        remainder=*num%10;//求余数
        *revers_num=*revers_num*10+remainder;//
        *num=*num/10;
    }
}

结果:

a=1234567
a=0
reverse_a=7654321
a=0
reverse_a=7654321
a=1234567
reverse_a=0
a=0
reverse_a=7654321
应用:判断回文数:

回文数:例1234567654321;

#include<stdio.h>
void main()
{
    int i,temp,palindromic_num;
    printf("三位数的回文数有:\n");
    int count=0;
    for(i=100;i<1000;i++)
    {
        temp=i;
        palindromic_num=isPalindromic(&temp);
        if(palindromic_num!=-1)
        {
            printf("%6d",palindromic_num);
            if(((++count)%10)==0)
                printf("\n");
        }
    }
}
void reverse_num(int* num,int* revers_num)//逆序num,结果放在reverse_num指针指向的地址空间里
{
    int remainder;
    while(*num!=0)
    {
        remainder=*num%10;//求余数
        *revers_num=*revers_num*10+remainder;//
        *num=*num/10;
    }
}
int isPalindromic(int* aaa)//判断一个数数不是回文数,如果是就返回这个回文数,如果不是就返回-1表示不是回文数
{
    int aa=*aaa;//保存指针a指向的空间的值
    int temp=0;
    reverse_num(aaa,&temp);
    if(aa==temp)
    {
//         printf("%7d是回文数\n",aa);
         return aa;
    }
    return -1;//返回负数表示不是回文数
}
结果:
三位数的回文数有:
   101   111   121   131   141   151   161   171   181   191
   202   212   222   232   242   252   262   272   282   292
   303   313   323   333   343   353   363   373   383   393
   404   414   424   434   444   454   464   474   484   494
   505   515   525   535   545   555   565   575   585   595
   606   616   626   636   646   656   666   676   686   696
   707   717   727   737   747   757   767   777   787   797
   808   818   828   838   848   858   868   878   888   898
   909   919   929   939   949   959   969   979   989   999

java实现:

package Ctojava;

import java.util.Scanner;

public class ReverseNum
{
	public static void main(String[] args)
	{
		int n=123456;
//		System.out.println("n="+n);
//		System.out.println("m="+reverseNum(n));
		int m=0;
		Scanner scanner=new Scanner(System.in);
		System.out.print("输入一个数:");
		n=scanner.nextInt();
		if(n==reverseNum(n))
			System.out.println(n+"是回文数");
		else
			System.out.println(n+"不是回文数");
	}
	public static int reverseNum(int n)//基本类型是值传参
	{
		int m=0;
		int remainder;
		while(n!=0)
		{
			remainder=n%10;//取最后一位
			m=m*10+remainder;//先前移一位,再加上余数
			n=n/10;
		}
		return m;
	}
}
测试:

输入一个数:12321
12321是回文数

输出10000内(四位数以内)的回文数:

package Ctojava;

import java.util.Formatter;

public class Palindrome
{
	static Formatter formatter=new Formatter(System.out);
	public static void main(String[] args)
	{
		int count=0;
		for(int i=10;i<=10000;i++)
		{
			if(isPalindrome(i))
			{
				count++;
//				System.out.print(i+",");
				formatter.format("%5d", i);
				if(count%10==0)
					System.out.println();
			}
				
		}
	}
	public static int reverseNum(int n)
	{
		int m=0;
		int remainder;//余数
		while(n!=0)
		{
			remainder=n%10;
			m=m*10+remainder;
			n=n/10;
		}
		return m;
	}
	public static boolean isPalindrome(int n)
	{
		return n==reverseNum(n);
	}
}
结果:

   11   22   33   44   55   66   77   88   99  101
  111  121  131  141  151  161  171  181  191  202
  212  222  232  242  252  262  272  282  292  303
  313  323  333  343  353  363  373  383  393  404
  414  424  434  444  454  464  474  484  494  505
  515  525  535  545  555  565  575  585  595  606
  616  626  636  646  656  666  676  686  696  707
  717  727  737  747  757  767  777  787  797  808
  818  828  838  848  858  868  878  888  898  909
  919  929  939  949  959  969  979  989  999 1001
 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002
 2112 2222 2332 2442 2552 2662 2772 2882 2992 3003
 3113 3223 3333 3443 3553 3663 3773 3883 3993 4004
 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005
 5115 5225 5335 5445 5555 5665 5775 5885 5995 6006
 6116 6226 6336 6446 6556 6666 6776 6886 6996 7007
 7117 7227 7337 7447 7557 7667 7777 7887 7997 8008
 8118 8228 8338 8448 8558 8668 8778 8888 8998 9009
 9119 9229 9339 9449 9559 9669 9779 9889 9999




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值