525925 2022-01-31 02:00 采纳率: 0%
浏览 37

c语言对称数n,求大于n的最小对称数

问题遇到的现象和发生背景

为什么感觉代码中没有考虑到最高位、中间位和个位是9但不全为9(例如90909)的情况,但答案还是对的?
照代码来看不应该变成了00000有错误了吗

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • _GX_ 2022-01-31 05:34
    关注
    #include <stdio.h>
    #include <math.h>
    
    int is_palindrome(int x)
    {
        if (x < 0 || (x % 10 == 0 && x != 0))
            return 0;
    
        int reverted = 0;
        while (x > reverted)
        {
            reverted = reverted * 10 + x % 10;
            x /= 10;
        }
    
        return x == reverted || x == reverted / 10;
    }
    
    int main()
    {
        int n;
        scanf("%d", &n);
        while (1)
        {
            n++;
            if (is_palindrome(n))
            {
                printf("%d", n);
                break;
            }
        }
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 请提交代码 1月31日
  • 创建了问题 1月31日