c++-C++小白来提问,关于回文数

问题描述

C++小白来提问,关于回文数

编写回文数的代码中遇到这么一段

    int i = 0;
    int j = 0;
    while ((i <= (int)strlen(str) / 2) && (j == 0))
    {
        if (*(str + i) == *(str + (strlen(str) - i) - 1))
        {
            i++;
        }
        else
            j = 1;
    }
    return j == 0 ? 1 : 0;

这段怎么理解啊,尤其是
if (*(str + i) == *(str + (strlen(str) - i) - 1))
有点看不懂。。。
谢谢解答哈。

解决方案

回文是从两边开始,i 从前往后,

比如str是0123456789

那么i=0时,*(str + i)就是0,

strlen(str) - i, 是从后往前, 但是需要-1,比如9是在第10位,但是str[9]位置

*(str + (strlen(str) - i) - 1) 就是9

如果这两个相等,if (*(str + i) == *(str + (strlen(str) - i) - 1)) 就是这句话的意思,再往下走,i++,就是走到1和8的位置,比较

解决方案二:

前面跟后面比对,以此类推

时间: 2024-09-28 23:04:18

c++-C++小白来提问,关于回文数的相关文章

javascript-js判断五位数为回文数

问题描述 js判断五位数为回文数 用求余的方法判断一个五位数是否为回文数,num/10000%10,求具体代码 解决方案 function isPlain(num){ var first = parseInt(num/10000); var last = num%10; if(first == last && parseInt((num - first*10000)/1000) == parseInt((num-last)/10)%10){ return true; }else{ retu

C语言中判断一个数是否是回文数

注:回文数即数字顺着和反着是同一个数! 看了郝斌老师的C语言视频,虽然还只看了80多个,但是还是有一些体会,编程应该养成良好的编程风格,至少到现 在为止写的这些小程序都应该有下面这样一个过程: 1,流程:(知道程序是按照怎样的顺序运行的) 2,功能:(理解程序的作用) 3,试数:(我个人简单的理解为测试过程,把自己当作计算机去执行程序) /* 2012年4月20日 10:36:23 判断一个数是否是回文数 */ #include <stdio.h> int main(void) { int v

求1O~1000之间的回文数

一个数是不是回文数,先将其数字分离,用一数组a存放,然后将相应数字进行比较.为此引入一标志变量flag,其值为1表示是回文数,为0表示不是回文数. 程序如下: /*程序8-1S,求lO~1000之间的回文数*/ main() {int i,X: int a[8],j: int b,e: int flag; for(i=10; i<1000l i++) {j=O:x=i;/*将数字分离,用一数组存放*/ while(x>O) {a[j]=x%10; x/=1O: j++: } flag=1:/*

PHP输出两个数字中间有多少个回文数的方法

 这篇文章主要介绍了PHP输出两个数字中间有多少个回文数的方法,实例分析了回文数的概念与相关判断技巧,需要的朋友可以参考下     本文实例讲述了PHP输出两个数字中间有多少个回文数的方法.分享给大家供大家参考.具体分析如下: "回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php for($i=10;$i<100;$i++

php找出指定范围内回文数且平方根也是回文数的方法

这篇文章主要介绍了php找出指定范围内回文数且平方根也是回文数的方法,实例分析了php判断回文的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php找出指定范围内回文数且平方根也是回文数的方法.分享给大家供大家参考.具体如下: 一.要求: 给出两个数值X和Y,统计在这个区间里的回文数,并且要求它们的平方根也是回文数.其中 1<= x <= y < 10 14 二.解决方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

c语言-特殊回文数,大神们帮忙看一看,为什么编译通过而不会运行

问题描述 特殊回文数,大神们帮忙看一看,为什么编译通过而不会运行 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行. 样例输入 52 样例输出 899998 989989 998899 #include int main() { int a,b,c,d,e,f,n,m; scanf("%dn&quo

Python计算回文数的方法_python

本文实例讲述了Python计算回文数的方法.分享给大家供大家参考.具体如下: 这里检查数字是不是回文数,用196算法生成一个数字的回文数 num = 905; def is_Palindrome(num): """ 判断一个数字是不是回文数,这里有些取巧了 :param num: :return: """ """ :param num: :return: """ temp = "

求助c语言回文数问题~~~

问题描述 求助c语言回文数问题~~~ #include<stdio.h> int main() { int i,t=0,s=0; for(i=1000;i<10000;i++,s=0,t=0){ t=i; while(t){ s=s*10+t%10; t/=10; } if(s==i) printf("%d",i); } return 0; } 结果是0分...... 请问哪里错了 解决方案 每个输出是不是需要一个换行呢? #include<stdio.h>

c语言-C语言求回文数,满足m,m*m和m*m*m均为回文数

问题描述 C语言求回文数,满足m,m*m和m*m*m均为回文数 C语言求回文数,满足m,m*m和m*m*m均为回文数 编程求出11~999之间的回文数 解决方案 http://zhidao.baidu.com/link?url=J6jUedovjtgkY_S7HCLan1mMkWtPOuAMp_UOyQhknhcPebh_fAYjMrATK4snNimhu9gZev0tFUGuTFGCnAGHwa 参考