我搜索了这个,但我没有用C语言找到这个问题的明确答案。
想象一下,我有一个int a = 123
和另一个int b = 456
。
如何合并它们才能获得combine(a, b) == 123456
?
答案 0 :(得分:5)
您可以将a
乘以10到幂的N,其中N是b
中的位数,然后将该数字加到b
。< / p>
效率较低,您可以将两者都转换为字符串,将它们连接起来,然后将该字符串解析为整数。
在任何一种情况下,都有可能出现整数溢出。
如果允许b
为否定,则必须进一步定义所需的结果。
答案 1 :(得分:1)
首先找到&#34; b&#34;中的位数。 这可以按如下方式完成:
int find_num_digits(int b)
{
int i = 0;
while (b > 0)
{
b = b/10;
i++;
}
return i;
}
然后做: c = a * 10 ^ find_num_digits(b)+ b;
&#34; C&#34;是结果。 你必须确保&#34; c&#34;没有超出界限。
答案 2 :(得分:0)
int combine(int a, int b) {
return 1000*a + b;
}
更一般地说:
int combine(int a, int b) {
if (b==0) return a;
return combine(a, b/10)*10+ b%10;
}