【问题标题】:"copy" elements of array in order into an "int"? C [closed]将数组的元素“复制”到“int”中? C [关闭]
【发布时间】: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 是什么?并确保您了解位值系统。

标签: c arrays integer


【解决方案1】:

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]。然后呢?

【讨论】:

  • 我说这可能是一个简单的问题:P 这正是我所需要的。太感谢了!!只要网站让我接受答案,我就会接受。
  • 如果数组[0]中有21个,数组[1]是416,你将有626个。不应该是21416吗?
  • 当然,这取决于输入的指定范围。所写的规范显然是模棱两可的,需要加强。也许,当 array[0] 为 21 时,您应该将两者相乘!不应该是8736吗?
  • 很公平,我刚看完。
  • 这提出了一个很好的观点。我在阅读该问题时的假设是该数组表示以 10 为基数的数字。您的假设是无论长度如何,数字都需要连接。这就是为什么在提出问题时提供一些关于你为什么要尝试做某事的信息很重要的原因。如果没有这些额外信息,很容易找到您认为是答案的解决方案,但无法有效缓解潜在问题!
【解决方案2】:

一种简单的方法是将整数转换为字符串,联系比,然后再次转换,这次是从字符串转换为整数。

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 2021-01-26
    • 2012-01-13
    • 2012-12-25
    • 2018-04-22
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多