c语言回文数判断有没有爹告诉我哪里错了

这个函数为什么第二个循环不进入啊,别的方法我知道我只是想知道这个哪里错了以及怎么改

img

(m/pow(10,cnt-1))==(m%10)这个条件估计难达成。你可以在前面分别输出这两个值看看。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7798573
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言设计 第四版 谭浩强 例10.3 从键盘读入若干个字符串,对他们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存(文件输入输出)
  • 除此之外, 这篇博客: C语言中的递归中的 递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。直到某一条件跳出! 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 例1、计算5的阶乘
    在这里插入图片描述
    例2、

    #include <stdio.h>
    /* 定义获取单词数量的函数 */
    int getWordNumber(int n)
    {   
        if(n == 1)
        {
            return 1;    //第一天只会1个单词
        }
        else{
            return getWordNumber(n-1)+n ;       //到第n天会的单词数量
        }
    }
    int main()
    {
        int num = getWordNumber(10);     //获取会了的单词数量
        printf("小明第10天记了:%d个单词。\n", num);
        return 0;
    }
    

    例3、猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。

    #include <stdio.h>
    int getPeachNumber(n)
    {
        int num;  
        if(n==10)
        {
          return 1 ;    //递归结束条件
        } 
        else
        {
            num = (getPeachNumber(n+1)+1)*2; 
            printf("第%d天所剩桃子%d个\n",n, num); 
        }
        return num;
    }
    int main()
    {
        int num = getPeachNumber(1);
        printf("猴子第一天摘了:%d个桃子。\n", num);
        return 0;
    }
    

    在这里插入图片描述
    例4、有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2人大两岁。问第2个人,说比第1个人大两岁。最后 问第1个人,他说是10岁。请问第5个人多大?

    程序分析:

    利用递归的方法,递归分为回推和递推两个阶段。要想知道第5个人岁数,需知道第4人的岁数,依次类推,推到第1人(10岁),再往回推。

    #include <stdio.h>
    int getAge(n)
    {
    	int num;   
    	if (n == 1)
    	{
    		return 10;    //递归结束条件
    	}
    	else
    	{
    		num = getAge(n-1) +2;   
    		printf("第%d个人的年纪是%d\n", n, num); 
    	}
    	return num;
    }
    int main()
    {
    	int num = getAge(5);
    	printf("第5个人%d岁了\n", num);
    	return 0;
    }
    

    在这里插入图片描述
    例5、喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int Capsule(n)//num 每次的瓶盖数.n 每次喝到的饮料.sum 一共喝到的饮料
    {
    	int sum;
    	if (n < 1)
    	{
    		return 1;
    	}
    	else {
    	sum = Capsule(n/2) +n;
    	}
    	return sum;
    }
    int main(void)
    {
    	int n = 20;//喝的汽水的数量
    	printf("所喝汽水的数量为%d\n",Capsule(n));
    }
    

    在这里插入图片描述

  • 您还可以看一下 张勇老师的初级到CS开发高手通用权限管理系统全程实录课程中的 编写递归算法绑定树型菜单小节, 巩固相关知识点

在你的代码上修改的,仅供参考,谢谢!

img

img

img

img

img

#include <stdio.h>
#include<math.h>

int main(int argc, char *argv[])
{
    int m, n, cnt = 0;
    scanf("%d", &m);
    n = m;
    while (n > 0)
    {
        n /= 10;
        cnt++;
    }

    printf("\n%d\n\n", cnt);

    while (cnt > 0 && (m / (int)pow(10, cnt - 1) == m % 10))
    {
        m = m / 10;
        m -= m / (int)pow(10, cnt - 2) * (int)pow(10, cnt - 2);
        cnt -= 2;
        printf("1");
    }

    puts("\n");
    cnt < 2 ? puts("yes") : puts("no");
    return 0;
}