【发布时间】:2021-11-04 13:10:51
【问题描述】:
标题可能有点混乱,所以我将在这里更详细地解释我的目标; 我想编写一个代码,该代码采用 x 个数字的输入数组
index_x = [0,0,1,0,1,0,0,0,1,0,0,1,0];
然后我想编写一个逻辑,它将生成一个索引为所有 1 的数组
index_ones = [3,5,9,12];
从 Jacon 略微修改的当前代码:
编辑 1:
#include <stdio.h>
int index_x[] = {0,0,1,0,1,0,0,0,1,0,0,1,0}; // any number of elements
int len = 12;
int main(void) {
int arr[len];
int j = 0;
for (int i = 0; i < len; i++)
if (index_x[i])
arr[j++] = i; // save and advance j only if value is "1"
for (int i = 0; i < j; i++) // only print below j !
printf("%d\n", arr[i]);
}
输出:
2
4
8
11
从这个输出中,我想生成另一个数组,它是这些元素之间的差异。在这种情况下,新数组将是 {2,4,3}。
编辑 2:我将把它移到另一个线程,因为讨论现在已经从一个问题转移到另一个问题。不想让未来的用户复杂化。
【问题讨论】:
-
你知道怎么写循环吗?你知道如何遍历数组吗?您能否编写将 1 复制到另一个数组 (
[1,1,1,1]) 的代码?您如何用纸和铅笔执行此操作? -
从一个类似但更简单的问题开始。你能遍历并打印
index_x中的每个元素吗?您可以循环并使用索引打印它们吗? -
'arr[j++] = i + 1;' ?
-
@tstanisl 是的,可行,但我意识到我不必为整体范围这样做,所以我已经把它划掉了
-
@tstanisl 是的。或者稍后更正:
printf("%d\n", ++arr[i]);(少两个空格,但隐藏在 printf() 中)。但我看到 Q 又变了!