注册 登录
编程论坛 C语言论坛

初来乍到,向各路大神致敬!

想有钱有钱 发布于 2020-12-14 23:17, 1030 次点击
现在有个问题,希望大神们帮帮忙。江湖救急啊,救救孩子吧。
功能:从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。
例如:当s中的数为:7654321时,t中的数为:1357。
3 回复
#2
rjsp2020-12-15 09:45
长整型变量
那也就是允许是负数了?

程序代码:
long foo( long n )
{
    // 先得转化成无符号类型
    unsigned long t = n<0 ? 0ul-(unsigned long)n : n;
    long result = 0;
    for( ; t; t/=100 )
        result = result*10 + t%10;
    return result;
}

#include <assert.h>

int main( void )
{
    assert( foo(7654321) == 1357 );
    assert( foo(-7654321) == 1357 );
}
#3
想有钱有钱2020-12-27 22:14
谢谢大神,我看懂了,就是0ul-(unsigned long)n还没学过,我可以用判断语句吗?if(n<0)t=-n;else t=n;
#4
想有钱有钱2020-12-27 22:19
回复 2楼 rjsp
抱歉这么迟回复你,大神,我注册之后一直没有再登录这个论坛,刚刚才看到你的解答,太感谢了。
1