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

来源:互联网 发布:数据与营销 编辑:程序博客网 时间:2024/06/04 00:40
#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=1234567a=0reverse_a=7654321a=0reverse_a=7654321a=1234567reverse_a=0a=0reverse_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+"是回文数");elseSystem.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;}}
测试:

输入一个数:1232112321是回文数

输出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