【发布时间】:2012-11-06 20:50:40
【问题描述】:
这可能是一个非常简单的问题,但我需要将 array[0] 和 array[1] 中的两个 int 值复制到一个整数中。
例如,如果 array[0]=1 和 array[1]=6,我需要整数等于“16”。 数组的任何元素的范围都是 0 到 9。
我有什么机会? 非常感谢!
【问题讨论】:
-
array[0]是 21,array[1]是 416 是什么?并确保您了解位值系统。
这可能是一个非常简单的问题,但我需要将 array[0] 和 array[1] 中的两个 int 值复制到一个整数中。
例如,如果 array[0]=1 和 array[1]=6,我需要整数等于“16”。 数组的任何元素的范围都是 0 到 9。
我有什么机会? 非常感谢!
【问题讨论】:
array[0] 是 21,array[1] 是 416 是什么?并确保您了解位值系统。
array[0] 总是代表 10 的位置,array[1] 总是代表 1 的位置吗? array[0] 或 array[1] 的值是否会大于 9 或小于 0?会有数组[2] 或数组[3] 来表示 3 位或 4 位数字吗?
如果上述问题的答案是“是”、“否”和“否”,那么答案不就是简单的算术吗?
int result = (array[0] * 10) + array[1];
如果数据没有预先检查范围,那么您需要添加该步骤。即使数据是预先范围检查的,您也应该考虑添加该步骤以更加确定。
'10' 在上面的例子中也是一个幻数。不硬编码 10 可能是明智的,而是基于数组的大小。考虑存在数组[2] 的情况。 . .数组[n]。然后呢?
【讨论】:
一种简单的方法是将整数转换为字符串,联系比,然后再次转换,这次是从字符串转换为整数。
char s1[30]; // String that will hold the first integer
char s2[15]; // String that will hold the second integer
int intResult;
首先将int转换为字符串:
sprintf(s1, "%d", array[0]);
sprintf(s2, "%d", array[1]);
将两个字符串连接在一起:
s1 = strcat(s1,s2);
然后将字符串结果转换为整数。 intResult = atoi(s1);
【讨论】: