如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数,例如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++已将位置下移
}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平