如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数,例如32123就是一个回文数。 但事实上, 17在某种意义上也是一个回文数,因为它的二进制(10001)是一个回文数。

//<<<<<<<<<<<<<—往下输入/插入题目---->>>>>>>>>>>>>>>>>>:/* 记得加 /
/
如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数,例如32123就是一个回文数。
但事实上,
17在某种意义上也是一个回文数,因为它的二进制(10001)是一个回文数。
在2~10进制下,确认一些十进制数是不是回文数。//十进制的数码足够使用.考虑写一个基数在10之内的n进制转换器(从10十进制到n进制(n<10))
输入(当然可以考虑判断是否回文的角度和可以采取的标准多样的)
输入有多组,直到EOF为止。
每组数据 包含 一个 十进制整数n(1<n<50000)。
输出
Yes或者No,每个测试输出占一行。

样例输入
17
19
样例输出
Yes
No


#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
// // 拷贝到平台的时候把my_fuction_lib.h注释掉.
//#include "my_fuction_lib.h"

//在此下方插入自定义函数对的声明:
void number_system_converter(int num,int n_sys,char *buf_return);
void reverse_string(char * str);
//主函数main
int main()
{
    //复制模版式删除这个或者再下面一个
    int n;
    
    while( scanf("%d",&n) != EOF)
    {
        int flag = 0;
        for(int i = 2 ;i <= 10;i++)
        {
            
            char buf_return[100];
            char buf_reverse[100];
            
        

            number_system_converter(n,i,buf_return);
            int len = strlen(buf_return);
            int len_last = len - 1;

            
            for(int i = 0;i < len;i++)
            {
                buf_reverse[i] = buf_return[len_last - i];
            }
            buf_reverse[len] = 0;//截断,使之成为字符串.

            if(strcmp(buf_reverse,buf_return) == 0)
            {
                flag++;
                // printf("Yes");
                 break;
            }
            // else
            // {
            //     //printf("No");
            // }
            
        }
        if(flag == 0)
        {
            printf("No\n");
        }
        else
        {
            printf("Yes\n");
        }
        
    }
    
    return 0;
} 
//主函数结束.
//在下方编写自定义函数:
// void reverse_string(char * str)
// {
//     int len = strlen(str);
//     for(int i = 0;i<len/2;i++)/* 画个图,算出len的值,标上两端及中间的关于(len的表达式),将会一目了然 */
//     {
//         char temp;
//         temp = str[len-1 - i] ;
//         str[len-1 - i] = str[i];
//         str[i] = temp;
        
//     }
// } 
void number_system_converter(int num,int n_sys,char *buf_return)
{   
    int quotient;/* 商(除法所得的结果)商数/'kwo??nt/;份额;返回商的整数部分 */
    int remainder;/* 余数 */
    quotient = num / n_sys;
    int i = 0;
    for(; quotient > 0;i++)//这里的i在上头初始化过了
    {
        quotient = num / n_sys;
        remainder = num % n_sys;
        
        /* 逆序填充 */
        buf_return[i] = remainder+48;//从数字转换为字符

        num = quotient;/* num得到了迭代,则其他含有num的表达式也将得到迭代. */
    }
    buf_return[i] = '\0';//截断该字符串for的i++已将位置下移
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值