免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1242 | 回复: 8
打印 上一主题 下一主题

关于unsigned int 倒置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-07 07:59 |只看该作者 |倒序浏览
如:unsigned int u=123,请输出321。
我想到的是将u转换成字符串,再进行倒置处理。
请问有不通过数组,直接根据运算得出结果的算法吗?

论坛徽章:
0
2 [报告]
发表于 2006-03-07 08:31 |只看该作者
是否可以将个位、十位等都拆出来,然后再倒置。

论坛徽章:
0
3 [报告]
发表于 2006-03-07 08:42 |只看该作者
原帖由 jeffwang8001 于 2006-3-7 08:31 发表
是否可以将个位、十位等都拆出来,然后再倒置。

很不好意思,这个我也想到了,也要用到数组。
他们提示是*一个数,然后可能再进行一些处理后就能得到吧(我想)

论坛徽章:
0
4 [报告]
发表于 2006-03-07 08:47 |只看该作者
递归法
int prt( unsigned u)
{
        unsigned u1;

        u1 = u / 10 ;
        printf( "%d",u%10);
        if ( u1 != 0 ) prt( u1 ) ;
        return 0;
}

论坛徽章:
0
5 [报告]
发表于 2006-03-07 08:55 |只看该作者
原帖由 wenlq 于 2006-3-7 08:47 发表
递归法
int prt( unsigned u)
{
        unsigned u1;

        u1 = u / 10 ;
        printf( "%d",u%10);
        if ( u1 != 0 ) prt( u1 ) ;
        return 0;
}

郑重说明,输入参数为一unsigned int,输出也是一unsigned int。谢谢。

论坛徽章:
0
6 [报告]
发表于 2006-03-07 08:56 |只看该作者

  1. #include<stdio.h>

  2. int
  3. main ()
  4. {
  5.         unsigned int a, b;
  6.         a = 345678900;
  7.         b = 0;

  8.         printf ("%u\n", a);

  9.         while (a)
  10.         {
  11.                 b=b*10 + a%10;
  12.                 a/=10;
  13.         }
  14.         printf ("%u\n", b);
  15. }
复制代码

论坛徽章:
0
7 [报告]
发表于 2006-03-07 08:59 |只看该作者
unsigned prt( unsigned u)
{
        unsigned u1;
        static unsigned result=0;

        u1 = u / 10 ;
        result = result*10 + u%10;
        if ( u1 != 0 ) prt( u1 ) ;
        return result;
}

[ 本帖最后由 wenlq 于 2006-3-7 09:00 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-03-07 09:11 |只看该作者
原帖由 win_hate 于 2006-3-7 08:56 发表
[code]
#include<stdio.h>

int
main ()
{
        unsigned int a, b;
        a = 345678900;
        b = 0;

        printf ("%u\n", a);

        while (a)
        {
                b=b*10 + a%10;
                a/=10;
        }
        printf (" ...

这个不错。

论坛徽章:
0
9 [报告]
发表于 2006-03-07 09:13 |只看该作者
原帖由 wenlq 于 2006-3-7 08:59 发表
unsigned prt( unsigned u)
{
        unsigned u1;
        static unsigned result=0;

        u1 = u / 10 ;
        result = result*10 + u%10;
        if ( u1 != 0 ) prt( u1 ) ;
        retur ...

这个也可以,不过没有上面那个简单易懂。
唉,当时我怎么就转不过来呢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP