我是初学者使用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.
最简单的方法是什么?这将是大型代码的一小部分,所以我真的想保持简单。并原谅愚蠢的变量名称!
谢谢大家!
答案 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中,这需要非常小心地完成。