C语言找出大于一个数的最小回文数的代码

下面代码内容是关于C语言找出大于一个数的最小回文数的代码,希望能对码农们有用途。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(){
char data[10] = {0}, res[10] = {0}, state[10] = {0}, len = 0, pos, bit = 0;
scanf("%s",data);

len = strlen(data);
    pos = len/2 - 1;
}
else{
    pos = len/2;
}

while(pos - bit >= 0){
    if(len % 2 == 1){
        if(data[pos - bit] >= data[pos + bit]){
            res[pos - bit] = data[pos - bit];
            res[pos + bit] = data[pos - bit];
        }
        else{
            data[pos - bit + 1]++;
            memset(&data[pos - bit + 2], ‘0‘, len - (pos - bit+1));
            bit = 0;
            continue;
        }
        bit ++;
    }
    else{
        if(data[pos - bit] >= data[pos + 1 + bit]){
            res[pos - bit] = data[pos - bit];
            res[pos + 1 + bit] = data[pos - bit];
        }
        else{
            data[pos - bit ]++;
            memset(&data[pos - bit + 1], ‘0‘, len - (pos - bit+1) + 1);
            bit = 0;
            continue;
        }
        bit ++;
    }

}

printf("回文数为%s", res);

}

原文地址:https://blog.51cto.com/14122754/2386672

时间: 2024-10-03 13:45:23

C语言找出大于一个数的最小回文数的代码的相关文章

判断一个数是否为回文数,字符串是否为回文字符串

使用C语言编写程序 判断一个数是否为回文数.(ps:回文数也是一个数字,数字的特点是正反序是同一个数字,如12321,3443就是回文数). 要判断该数字是否为回文数,可以通过模除得到该数的反序数字,进行比较是否相等来判读. 具体实现如下: void Practice() { int num, value, flag, var; value = 0; flag = 1; scanf("%d", &num); var = num; while(num) {//value存储num

判断一个数中最大回文数的长度

判断一个数中最大回文数的长度 :例如12332112345654321中最大的回文数是12345654321,长度为11 public static void palindrome(String str) { int len = str.length(); int max = 1; for(int i = 1; i < len; i++){ int low = i-1; //偶数情况 int high = i; while(low >= 0 && high < len &

判断一个数是否为回文数或者打印特定范围的回文数。

回文数:设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数. 1 public class PracticeDemo { 2 /** 3 *@Function: isPalindrome 4 *@Description:判断1个数是否为回文数(一个数正着读和反着读一样). 5 *@Input:一个整型数 6 *@Return_Type: boolean 7 *@Return:判断是否为回文花数(true和false) 8 *@Other:利用字符串知识点来解决

判断一个数是否为回文数

#include <stdio.h> int is_palindromic(int num) {  char _old = num;  char _new = 0;  while (num)  {   _new = _new * 10 + (num % 10);   num = num / 10;  }  if (_new == _old)  {   return 1;  }  else  {   return 0;  } } int main() {  int num = 0;  scanf

C语言-郝斌笔记-004判断是否为回文数

判断是否为回文数 1 # include <stdio.h> 2 3 int main(void) 4 { 5 int val; //存放待判断的数字 6 int m; 7 int sum = 0; 8 9 printf("请输入您需要判断的数字: "); 10 scanf("%d", &val); 11 12 m = val; 13 while (m) 14 { 15 sum = sum * 10 + m%10; 16 m /= 10; 17

9.18 判断一个数是否是回文数

[题目]: 定义回文数的概念如下: 1.如果一个非负数左右完全对应,则该数是回文数,例如:121,22等 2.如果一个负数的绝对值左右完全对应,也是回文数,例如:-121,-22等 给定一个32位整数num,判断num是否是回文数 题目来源:左程云老师<程序员代码面试指南> 原文地址:https://www.cnblogs.com/latup/p/10204849.html

c语言练习3——判断一个5位数是否回文数

#include<stdio.h> #include<stdlib.h> /*题目:判断一个五位数是否为回民数.*/ int main(){ int a,a1,a2,a3,a4,a5; while(1){ printf("请输入一个5位数:"); scanf("%d",&a); a1=a%10; a2=a/10%10; a3=a/100%10; a4=a/1000%10; a5=a/10000; if(a1==a5&&

回文数C语言

题目描述 若一个数(首位不为0)从左到右读与从右到左读都是一样,这个数就叫做回文数,例如12521就是一个回文数. 给定一个正整数,把它的每一个位上的数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止.给定的数本身不为回文数. 例如:87则有: STEP1: 87+78=165 STEP2: 165+561=726 STEP3: 726+627=1353 STEP4: 1353+3531=4884 编写一个程序,输入M(12<=M<=1

(C语言)回文数的判断

问题描述: 判断一个数是否为回文数: 121: 12321: 1234321: 程序分析: 1. 回文数(palindromic number):是指一个数的最高位和最低位上的数相等,第二高位与次低位上的数相等,也就是关于中间"对称".如上面的三个数情况是一个回文数. 2.将这个数扩展成一个数组,将这个数的各个位上的数取出来并且一一赋给这个数组. 3.判断这个数组中的元素之间的关系是否符合回文数的特征.并且将结果输出.这个程序写了一个函数来实现这一功能. 代码如下: #include&