回文数的判断(三种方法)

回文数的判断(三种方法)最近做了一点关于回文数的总结 首先先写一篇关于回文数判断的几种方法 回文数的概念 即是给定一个数 这个数顺读和逆读都是一样的 例如 121 1221 是回文数 123 1231 不是回文数 方法一 试用情境 处理小数字 使用数学方法 输入的回文数 x 的范围为 x lt 10 9 int 存储 或者 x lt 10 18 longlong 存储的数 数字的范围不大 这里写的是 int 存储情况

#include<stdio.h> int main() { int x,newed,t,n; while(scanf("%d",&x)!=EOF) { newed=0; n=x; do { newed=newed*10+x%10; x/=10; }while(x>0); if(n==newed) printf("Yes\n"); else printf("No\n"); } return 0; }

方法二:
试用情景,处理大数字。使用字符串处理方式。因为回文数关于中心对称,只要比较对称的数即可。

#include<stdio.h> #include<string.h> int main() { int i,length,flag=1; char a[100]; gets(a); length=strlen(a); for(i=0;i<=length/2;i++) { if(a[i]!=a[length-i-1]) { flag=0; break; } } if(flag==1) printf("yes"); else printf("no"); return 0; }

方法三:
试用情景,处理大数字。使用栈的思想。和字符串处理方式类似,这里是比较出栈元素与串中字符,如不等,则是no。

#include<stdio.h> #include<string.h> #define StackSize 100 typedef struct { char data[StackSize];//开栈为100; int top=0; }SeqStack; int main() { SeqStack s; char str[100]; scanf("%s",str); int len=strlen(str); int i,flag=1; for(i=0;i<len/2;i++)//将一半字符入栈 s.data[s.top++]=str[i]; if(len%2) i++; //奇数时自动跳过中间的数字,如121,跳过2,比较1 while(s.top)//相当于EmptyStack(&s),判断是否栈空. { 
  // 每弹出一个字符与相应字符比较 char temp=s.data[--s.top]; if(temp!=str[i]){ flag=0; }else{ i++; } } if(flag==0){ printf("no\n"); }else{ printf("yes\n"); } return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233045.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 矩阵与线性方程组

    矩阵与线性方程组

    2021年6月6日
    107
  • Pytest(13)命令行参数–tb的使用

    Pytest(13)命令行参数–tb的使用前言pytest使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败。–tb=style参数可以设置报错的时候回溯打印内容,可以设置参

    2022年7月31日
    5
  • c语言将时速转换成配速,配速与时速换算(跑步配速和时速换算)

    c语言将时速转换成配速,配速与时速换算(跑步配速和时速换算)时间除以路程,一般时间单位用分,路程单位用千米。比如20分钟跑了3千米,那配速就是20/3=6.66,也就是6分40秒每公里,一般说成640的配速。配速是针对长跑来说的,对短跑和中跑是不采用这个概念的。马拉松运动讲究匀速,在匀速的状态下才能更好地发挥自己的实力。很多跑步爱好者很注意控制速度。他们根.时速的意思是当时跑步的速度,配速是平均每公里耗时几分钟消耗是指跑步消耗的热量相当于每小时跑多少千…

    2022年6月28日
    67
  • Java基础:instanceof用法详解以及注意事项

    Java基础:instanceof用法详解以及注意事项Java基础:instanceof用法详解以及注意事项instanceofinstanceof使用注意事项instanceof使用示例instanceof应用场景instanceofinstanceof是Java的一个保留关键字,左边是对象,右边是类,返回类型是Boolean类型。它的具体作用是测试左边的对象是否是右边类或者该类的子类创建的实例对象,是,则返回true,否则返回false。instanceof使用注意事项先有继承关系,再有instanceof的使用。当该测试对象创建时右边的声明

    2025年6月22日
    2
  • 获取不同长度的UUID[通俗易懂]

    获取不同长度的UUID[通俗易懂]在公司,有时候让处理一些命名规则时,要使用一个唯一标识,还是十六进制的,需要多少位看领导心情.怎么做呢?你别说用随机产生组合的方法啊?虽然那个可行,但是我觉得难受.知道有UUID这个玩意儿之后,那就好办了.UUID含义是通用唯一识别码(UniversallyUniqueIdentifier),这是一个软件建构的标准,也是被开源软件基金会(OpenSoftwareFoundatio

    2022年8月10日
    13
  • 浅谈linux的命令行解析参数之getopt_long函数「建议收藏」

    浅谈linux的命令行解析参数之getopt_long函数「建议收藏」前言     在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNUC提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。一、关于命令行参数   命令行参数可以分为两类,一类是短选项,一类是长选项,短选项在参数前加一杠"-",长选项在参数前连续加两杠"–",如下表(ls命令参数)所示,…

    2022年4月28日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号