-4

我是使用 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;
}

如您所见,mouse[0] 中有 50 个,age[0] 中有 23 个,我希望 age[1] 为 5023。

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

谢谢大家!

4

5 回答 5

2

你不能像这样连接整数:你需要通过一些初等数学来做到这一点。

将“组合”视为乘法加加法:

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

下面是它的工作原理:

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

    23
+ 5000
------
  5023

请注意,此技巧仅在第二个数字正好有两位数时才有效。当第二个数字有N数字时,您需要将第一个数字乘以N10 的 - 次方,然后再执行加法。

于 2013-09-13T20:18:51.777 回答
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. 您必须注意-符号和缓冲区溢出。

于 2013-09-13T20:47:37.630 回答
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 中需要非常小心地完成。

于 2013-09-13T20:56:02.613 回答
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];
于 2013-09-13T20:18:18.513 回答
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];

于 2013-09-13T20:20:44.067 回答