| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1131 人关注过本帖
标题:回文数问题(请哪位用C给我编个程序)
只看楼主 加入收藏
夏851773277
Rank: 1
等 级:新手上路
帖 子:48
专家分:6
注 册:2011-4-18
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:9 
回文数问题(请哪位用C给我编个程序)
Description

若一个数(首位不为0)从左到右读与从右到左读都是一样,这个数就叫做回文数,例如12521就是一个回文数。
给定一个正整数,判断它是否是回文数。

Input

一个正整数

Output

若是回文数,输出YES,否则输出NO

Sample Input


12521

Sample Output


YES

Source
搜索更多相关主题的帖子: 正整数 
2011-09-11 11:36
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:1 
还是你自己来吧

                                         
===========深入<----------------->浅出============
2011-09-11 11:38
夏851773277
Rank: 1
等 级:新手上路
帖 子:48
专家分:6
注 册:2011-4-18
收藏
得分:0 
自己能来,我就不用请教你们了,我是编了一个,但是不符合题目的要求
2011-09-11 11:52
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <math.h>

int check_out(int);

int main(void)
{
    int n;
   
    while (scanf("%d", &n) != EOF)
        if (check_out(n))
            puts("YES");
        else
            puts("NO");
           
    return 0;
}

int check_out(int n)
{
    int i = (int)ceil(pow(10, (int)log10(n)));
    int j = 1;
   
    while (i > j) {
        if (n / i % 10 != n / j % 10)
            return 0;
        i /= 10;
        j *= 10;
    }
   
    return 1;
}

My life is brilliant
2011-09-11 11:55
夏851773277
Rank: 1
等 级:新手上路
帖 子:48
专家分:6
注 册:2011-4-18
收藏
得分:0 
int check_out(int n)
{
    int i = (int)ceil(pow(10, (int)log10(n)));
    int j = 1;
   
    while (i > j) {
        if (n / i % 10 != n / j % 10)
            return 0;
        i /= 10;
        j *= 10;
    }
楼上给的那个程序,这个函数是什么意思?能给我详细解读一下吗?
2011-09-11 13:38
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:3 
回复 5楼 夏851773277
其实还可以这样:
程序代码:
#include <stdio.h>

#define IS        1
#define NOT       0

int check_out(unsigned);

int main(void)
{
    unsigned n;        // 负数应该不能作为回文数判断吧?
   
    while (scanf("%u", &n) != EOF)
        check_out(n) == IS ? puts("YES") : puts("NO");
       
    return 0;
}

int check_out(unsigned n)
{
    char buffer[10 + 1];    // 4294967295 + '\0'
    int  begin = 0;
    int  end   = sprintf(buffer, "%u", n) - 1;
   
    while (begin < end) {
        if (buffer[begin] != buffer[end])
            return NOT;
        begin++;
        end--;
    }
   
    return IS;
}



[ 本帖最后由 lz1091914999 于 2011-9-11 17:29 编辑 ]

My life is brilliant
2011-09-11 14:56
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:2 
int i;
scanf("%d",&i);
char a[100];
sprintf(a,"%d",i);
for(i=0;i<strlen(a)/2;i++)
if(a[i]!=a[strlen(a)-1-i])
break;
if(i>=strlen(a)/2)
puts("yes");
else puts("no");
2011-09-11 15:25
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:1 
回复 楼主 夏851773277
有几个思路仅供参考:把个位十位百位……各个数提取出来,然后比较,还有个就是把读取到的数字放入数组然后反输出,再用strcmp比较,目前想到这

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-11 15:36
shine031127
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-7-8
收藏
得分:0 
回复 4楼 lz1091914999
int i=(int)ceil(pow(10,log10(n)),经典!
2011-09-11 16:39
iwonply
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2011-8-24
收藏
得分:0 
4楼的,膜拜啊!
2011-09-11 17:05
快速回复:回文数问题(请哪位用C给我编个程序)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018773 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved