通过C中的嵌套循环二乘二进行循环

通过C中的嵌套循环二乘二进行循环,c,multidimensional-array,C,Multidimensional Array,我希望以半压缩的方式循环两个数组,以便对于尽可能多的条目,可以观察到以下模式: arr1[i] arr2[j] arr1[i] arr2[j+1] arr1[i+1] arr2[j+2] arr1[i+1] arr2[j+3] .... 例如,如果len arr1是96,len arr2是3,我希望看到 0 0 0 1 1 2 1 0 2 1 2 2 3 0 3 1 4 2 4 0 5 1 5 2 我在准确理解逻辑方面有点困难;非常感谢您的帮助伪代码: i = 0; for (x =

我希望以半压缩的方式循环两个数组,以便对于尽可能多的条目,可以观察到以下模式:

arr1[i]   arr2[j]
arr1[i]   arr2[j+1]
arr1[i+1] arr2[j+2]
arr1[i+1] arr2[j+3]
....
例如,如果len arr1是96,len arr2是3,我希望看到

0 0
0 1
1 2
1 0
2 1
2 2
3 0
3 1
4 2
4 0
5 1
5 2
我在准确理解逻辑方面有点困难;非常感谢您的帮助

伪代码:

i = 0;
for (x = 0; i < arr1.len; ++x) {
    i = x / 2;  // integer division
    j = x % arr2.len;
    // use arr1[i] and arr2[j]
}
i=0;
对于(x=0;i
在转到下一个值(例如,0 0 1 1 2 3 3…)之前,使用整数除法多次重复一个值,其中要重复一个值的次数等于分母

使用模除法无限期地重复一个值序列(例如,0 1 2 0 1 2 0 1 2…),其中序列中的项数等于分母。

伪代码:

i = 0;
for (x = 0; i < arr1.len; ++x) {
    i = x / 2;  // integer division
    j = x % arr2.len;
    // use arr1[i] and arr2[j]
}
i=0;
对于(x=0;i
在转到下一个值(例如,0 0 1 1 2 3 3…)之前,使用整数除法多次重复一个值,其中要重复一个值的次数等于分母


使用模除法无限期地重复一个值序列(例如,0 1 2 0 1 2 0 1 2…),其中序列中的项数等于分母。

如果我正确理解了您的意思,您需要一个如下演示程序所示的循环

#include <stdio.h>

#define N 10
#define M 3

int main( void )
{
    int a[N];
    int b[N];

    for ( int i = 0; i < N; i++ ) a[i] = i;
    for ( int i = 0; i < M; i++ ) b[i] = i;

    for (int i = 0, j = 0, k = 1; i < N; i += k ^= 1, j = ( j + 1 ) % M)
    {
        printf( "%d %d\n", a[i] , b[j] );
    }
}

如果我理解正确,您需要一个循环,如下面演示程序中所示

#include <stdio.h>

#define N 10
#define M 3

int main( void )
{
    int a[N];
    int b[N];

    for ( int i = 0; i < N; i++ ) a[i] = i;
    for ( int i = 0; i < M; i++ ) b[i] = i;

    for (int i = 0, j = 0, k = 1; i < N; i += k ^= 1, j = ( j + 1 ) % M)
    {
        printf( "%d %d\n", a[i] , b[j] );
    }
}