如何组合2个整数以获得1?
我搜索了这个,但我没有找到C语言中这个问题的明确答案。
想象一下,我有一个int a = 123
而另一个int b = 456
。
如何组合它们以获得combine(a, b) == 123456
?
您可以乘以10到10的幂,其中N是b
的位数,然后将该数字加到b
。
效率较低,您可以将两者都转换为字符串,将它们连接起来,然后将该字符串解析为整数。
在任何一种情况下,都有可能出现整数溢出。
如果允许b
为负数,则必须进一步定义所需结果。
首先找到“b”中的位数。这可以通过以下方式完成:
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;
结果是“c”。 你必须确保“c”不会超出范围。
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; }