| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1823 人关注过本帖, 1 人收藏
标题:回文数
只看楼主 加入收藏
tredy6t
Rank: 2
等 级:论坛游民
帖 子:41
专家分:59
注 册:2015-8-6
结帖率:45.45%
收藏(1)
已结贴  问题点数:5 回复次数:6 
回文数
程序代码:
#include<stdio.h>
#include <conio.h>
#include<string.h>
int main()
{ 
    unsigned int i,j,k,n=0;
    char s[81];
    memset(s,'\0',81);
    for(i=100;i<65530;i++)
    {
        j=0;
        while(i)
        {
            s[j]=i%10;
            j++;
            i/=10;
        }
        for(k=0;k<=j;k++)
            if(s[k]!=s[j-k])
                break;
            if(k==j+1)
            {
                printf("%d ",i);
                n++;
                if(!(n%10))
                    putchar('\n');
            }
            memset(s,'\0',81);
    }
    getch();
    return 0;
}

咋不出结果
搜索更多相关主题的帖子: color color color 
2016-01-03 00:20
tredy6t
Rank: 2
等 级:论坛游民
帖 子:41
专家分:59
注 册:2015-8-6
收藏
得分:0 
出来了
程序代码:
#include<stdio.h>
#include <conio.h>
#include<string.h>
int main()
{ 
    unsigned int i,j,k,n=0,temp;
    char s[81];
    memset(s,'\0',81);
    for(i=100;i<1000;i++)
    {
        j=0;
        temp=i;
        while(temp)
        {
            s[j]=temp%10;
            j++;
            temp/=10;
        }
        for(k=0;k<j;k++)
            if(s[k]!=s[j-1-k])
                break;
            if(k==j)
            {
                printf("%d ",i);
                n++;
                if(!(n%10))
                    putchar('\n');
            }
            memset(s,'\0',81);
    }
    getch();
    return 0;
}
2016-01-03 00:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:2 
提问时,要先将要求说清楚,比如“求3位数中的回文数,例如121、999,每十个数一行

程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned i=10; i!=100; ++i )
        printf( "%u%u%c", i, i/10, " \n"[(i+1)%10==0] );

    return 0;
}
就这么简单,没什么好说的
2016-01-04 08:52
eFun
Rank: 6Rank: 6
等 级:禁止访问
威 望:1
帖 子:58
专家分:400
注 册:2015-12-27
收藏
得分:0 
回复 3楼 rjsp
不能通用于大于1000的数据。
2016-01-04 12:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用eFun在2016-1-4 12:25:24的发言:

不能通用于大于1000的数据。
题目要求大于1000吗?我看他的代码中是  for(i=100;i<1000;i++)

代码仍然是通用的,比如4位数
程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned i=10; i!=100; ++i )
        printf( "%u%02u%c", i, i%10*10+i/10, " \n"[(i+1)%10==0] );

    return 0;
}



2016-01-04 13:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:3 
回复 4楼 eFun
估计你要的是这个:
程序代码:
#include <stdio.h>
#include <assert.h>

int main( void )
{
    const unsigned digital = 6;

    assert( digital != 0 ); // 位数不可以为0

    // 计算开始数,也就是 10的(digital-1)/2次方
    unsigned first = 1;
    for( unsigned i=0; i!=(digital-1)/2; ++i )
    {
        assert( first*10/10 == first ); // 确保数值不溢出
        first *= 10;
    }

    for( unsigned i=first; i!=first*10; ++i )
    {
        if( digital == 1 ) // 1位数没有镜像
            printf( "%u%c", i, " \n"[(i+1)%10==0] );
        else
        {
            // 求i前digital/2位的镜像
            unsigned mirror = 0;
            for( unsigned j=digital%2==1?i/10:i; j!=0; j/=10 )
                mirror = mirror*10 + j%10;   

            printf( "%u%0*u%c", i, digital/2 ,mirror, " \n"[(i+1)%10==0] );
        }
    }

    return 0;
}

2016-01-04 14:43
南庭
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-5-9
收藏
得分:0 
回复 2楼 tredy6t
" \n"[(i+1)%10==0] 这个是什么语法能否给讲讲呢,第一次见,不甚感谢!
2016-01-05 14:49
快速回复:回文数
数据加载中...
 
   



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

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