如何使用C中给定整数的数字填充数组?

时间:2015-11-04 13:28:07

标签: c arrays integer

因此,假设您的代码中有一个整数声明

int my_num = 967892; 

你有一个数组

int a[6]; 

你如何将这个整数放入数组中,看起来像这样?

{ 9, 6, 7, 8, 9, 2 }

5 个答案:

答案 0 :(得分:2)

也许是这样:

const unsigned char digits[] = { 9, 6, 7, 8, 9, 2 };

但是当然,你的问题有很多不清楚的地方。

如果您想在运行时执行此操作,因为您的评论现在让我相信,您当然需要更多代码。此外,制作阵列" fit"确切的数字,因为这需要运行时调整数组。

核心操作是% 10,当应用于数字时会产生最右边的数字(" 1"数字)。

答案 1 :(得分:2)

您可以通过获取每个数字并将其放入数组来完成此操作。感谢@unwind考虑使用query = query.Where(e => e.Dates.Count == 1 && e.Dates[0] == myDateValue); ,因为数字没有符号。我没有想到这一点。

DISClAIMER :这段代码未经测试,但从理论上讲,如果我没有犯下任何社区将会抓到的错误,那就完成了你的任务。

注意:当unsigned int为否定时,此程序是实现定义的。有关这意味着什么的更多信息,请参阅this SO问题。此外,该帖子重复的问题中接受的答案具有比此更短的代码,但使用theNum(根据评论者)可能不准确。

log10

答案 2 :(得分:0)

如果这应该动态完成:

  1. 确定位数为<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" omit-xml-declaration="no" encoding="UTF-8" indent="yes" /> <xsl:strip-space elements="*"/> <xsl:key name="ref-on-page" match="page/p/text()" use="matches(., '\sbeat\s', 'i')"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <!-- putting links to glossary terms in text how to make this hit on only the first occurrence on the page? --> <xsl:template match="page/p/text()[. is key('ref-on-page', true(), ancestor::page)[1]]"> <xsl:analyze-string select="." regex="\s(beat)\s" flags="i"> <xsl:matching-substring> <xsl:text> </xsl:text> <term keyref="beat"> <xsl:value-of select="regex-group(1)"/> </term> <xsl:text> </xsl:text> </xsl:matching-substring> <xsl:non-matching-substring> <xsl:value-of select="."/> </xsl:non-matching-substring> </xsl:analyze-string> </xsl:template> </xsl:stylesheet>
  2. 分配一个足够大的数组(N)来保存数字。
  3. 循环>=N次切断数字并将其存储在2下分配的数组中。

答案 3 :(得分:0)

我认为你想要达到这样的目的:

int arr[SOME_SIZE];
int len = int_to_array(arr,421);
assert(len == 3);
assert(arr[0] == 4);
assert(arr[1] == 2);
assert(arr[1] == 1);

由于这可能是一个家庭作业问题,我不会给出完整的答案,但是你想要一个循环,并且你想要一种从int获取最后一个十进制数字的方法,以及删除最后一位数的int。

所以这里有一个暗示:

421 / 10 == 42
421 % 10 == 1

如果要创建正确长度的数组,有多种方法:

  • 你可以循环两次;一次计数数字(然后创建数组);再次填充
  • 您可以填充比您需要的更大的数组,然后创建一个新数组并根据需要复制更多成员
  • 你可以填充比你需要的更大的阵列,然后使用realloc()或类似的(我们以前没有过的奢侈品!)

答案 4 :(得分:0)

最低有效数字为num%10

下一个数字可以通过num / = 10;

找到

这适用于正数,但是为负数

定义了实现