【问题标题】:Repeat each element in array "i" times in C在C中重复数组“i”中的每个元素
【发布时间】:2019-03-06 01:35:47
【问题描述】:

这必须在 C 中完成。 我正在寻找一种方法来获取包含以下元素的数组:

a = {1,2,3}

给定一个变量,比如i,如果i = 3,每个元素复制到一个新的数组i次如下:

b = {1,1,1,2,2,2,3,3,3,}

这是我目前所拥有的:

for(i = 0; i < size_S-inter_seq; i++) //size of new array - times copied
{
  for(j = 0; j < size_X; j++)  //size of old array
  {
    for(k = 0; k < inter_seq; k++) //times to be copied
    {
      b[i+k] = a[j];
    }
  }
}

谢谢

顺序很重要。 谢谢。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我尝试了一系列嵌套循环,但似乎都没有工作。抱歉,这似乎是一个简单的问题,我是一名仍在努力学习 C 的学生。
  • 请阅读:stackoverflow.com/help/asking 至少,您应该提供minimal reproducible example 并说明您得到什么输出以及您期望什么。
  • 向我们展示您迄今为止的最佳尝试,以及您从中获得的输出,以及它的问题所在,我们可以帮助您解决它 - 这是一个 MCVE (minimal reproducible example)。不要向我们展示代码,我们所能做的就是投反对票。我们不为您编写代码;我们将帮助解决解决问题的诚实尝试。
  • 一个问题是确保您知道数组a 有多大;另一个问题是确保b 足够大以容纳ia 副本。有很多方法可以解决问题;我们需要看看您尝试了什么,以校准哪些响应可能对您有所帮助。目前,说“malloc()free()”可能会吓跑你——但对于那些知道自己做什么的人来说,它们是一个有效的选择。如果您在 Windows 上使用 MCVS,则与在 Linux 或 Mac 上使用 GCC 或 Clang 时有不同的选择。

标签: c arrays loops duplicates copy


【解决方案1】:

这段代码应该可以解决问题:

int a[] = {1,2,3};
int i = 3;
int len = (sizeof a)/(sizeof a[0]);
int b[i*len];
for(int k=0; k<len; k++)
    for(int j=0; j<i; j++)  
        b[k*i + j] = a[k];

【讨论】:

  • 这似乎有效,谢谢!对所有的混乱感到抱歉。这是我在 SO 上提出的第一个问题。我会将此作为学习经验,并在问题上更加清晰并阅读指南。
  • @michael 学习如何在论坛上提问是一种技能,你正在培养你的编程技能。
猜你喜欢
  • 2017-05-26
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2022-01-17
  • 2018-08-14
  • 2014-10-17
相关资源
最近更新 更多