例如: 1:123456应转换为214365 2:12345应转换为103254
答案 0 :(得分:1)
int32_t conv(int32_t n){
char buff[16], *p = &buff[1];
int i, v = n < 0 ? -n : n;
sprintf(p, "%010d", v);
for(i=0;i<5;++i,++p){
char c;
c = *p;
*p = p[1];
*(++p) = c;
}
buff[0] = (n < 0) ? '-' : ' ';
return atoi(buff);
}
size_t conv(size_t n){
size_t q, r, wk, mul=1, ret = 0;
for(;n;n/=100, mul*=100){
wk = n % 100;
r = wk % 10;
q = wk / 10;
ret += (r * 10 + q)*mul;
}
return ret;
}
,
答案 1 :(得分:0)
首先澄清一下:字符串中整数与该整数的十进制表示之间存在差异。你想要第二个。
正如H2CO3所指出的那样,你可以使用模数自行完成:将你的数字分解为十进制数,然后进行交换,然后重新计算数字(仅限mul / add)。
这是另一种方式:
使用malloc和sprintf从整数创建一个字符串。
循环播放字符串并进行字符交换
打印该字符串,或者如果要将其转换回带有atoi的整数