将两个整数合并为1?

时间:2013-09-13 20:16:09

标签: c integer

我是初学者使用C.我想将两个整数组合成1.参见示例代码。

#include <stdio.h>

int main()
{
    int age[4];
    int mouse[4];
    mouse[0]=50;
    age[0]=23;

    age[1]=mouse[0]age[0];

    printf("%d",age[1]);
    return 0;
}

正如你所看到的,我有50个鼠标[0],23个年龄[0],我希望年龄[1]为5023.

最简单的方法是什么?这将是大型代码的一小部分,所以我真的想保持简单。并原谅愚蠢的变量名称!

谢谢大家!

5 个答案:

答案 0 :(得分:2)

你不能连接这样的整数:你需要通过一些基本的数学来完成它。

将“合并”视为乘法,然后加法:

age[1] = mouse[0]*100 + age[0];

以下是它的工作原理:

A = 23
B = 50, B*100 = 5000

    23
+ 5000
------
  5023

请注意,此技巧仅在第二个数字恰好有两位数时才有效。当第二个数字有N个数字时,您需要在执行添加之前将第一个数字乘以N次幂为10。

答案 1 :(得分:0)

age[1] = 1000*mouse[0] + age[0]

如果你想要一个更通用的解决方案,一个不依赖于mouse[0]是两位数的解决方案,你可以定义一个函数来获得位数:

int digits(int num) {
    return ceil(log10(num));
}

然后你可以像这样整合整数:

age[1] = ((int)pow(10, digits(mouse[0])))*mouse[0] + age[0];

答案 2 :(得分:0)

我认为您的意思是age[1]=mouse[0]age[0];age[1]=mouse[0]+age[0]; 如果您始终可以确定两个数字的大小(例如两位数),那么只需乘以100即可将数字移到age[1]=mouse[0] * 100 + age[0];

如果您不知道确切的数字,那么您可以使用log10计算您将值移到多远的位置:

age[1] = mouse[0] * (int)pow(10, (int)log10(age[0])) + age[0];

答案 3 :(得分:0)

由于OP正在进行字符串连接,隐藏到文本,连接然后返回int

char buf1[64+64];
char buf2[64];
sprintf(buf1, "%d", mouse[0]);
sprintf(buf2, "%d", age[0]);
strcat(buf1, buf2);
age[1] = atoi(buf1);

有多种方法可以将int转换为文本,sprintf()只是简单易用的方法。还有一些将文本转换为int的人。您必须注意-符号和缓冲区溢出。

答案 4 :(得分:0)

您似乎对连接两个整数的文本表示感兴趣。

int mouse = 50;
int age = 23;

char combi[BUFSIZ];/*char array to contain the "combination"*/

/*print two ints together in one c-string*/
snprintf(combi, BUFSIZ, "%d%d", mouse,age);
printf("value = %s\n", combi); /*print as string*/

这会将value = 5023打印到您的终端,在某些解释语言中,可以更容易地连接字符串,文本和数字表示会自动转换,但在C中,这需要非常小心地完成。