如何在C中while循环期间存储数组索引的值

时间:2018-04-17 05:42:18

标签: c arrays matrix

int main()
{
   int abc[2][2];
   int i,j,q,r,u,k;
   char *A = malloc(sizeof(*A));

   abc[0][0] = 1;
   abc[1][0] = 0;
   abc[0][1] = 7;
   abc[1][1] = 480;

    do
    {
        if( abc[1][1]>abc[0][1])
        {

            q = floor((abc[1][1] - 1)/abc[0][1]);
            r = abc[1][1] - q*abc[0][1];
            abc[1][0] = q*abc[0][0] + abc[1][0];
            abc[1][1] = r;
        }

        if( abc[0][1]>abc[1][1])
        {
            q = floor((abc[0][1] - 1)/abc[1][1]);
            r = abc[0][1] - q*abc[1][1];
            abc[0][0] = q*abc[1][0] + abc[0][0];
            abc[0][1] = r;
        }

        u = abc[0][0];
        A[k] = abc[1][0];

    } while (abc[0][1]>1);
    return 0;
}

我想将索引的每个值 - abc[1][0]存储在数组A[]中,这样我就无法进一步使用该数组,但我仍然坚持存储所有值

1 个答案:

答案 0 :(得分:1)

如果你想在每个循环结束时记录abc[1][0]的值,你可以这样做:

int* A = malloc(1000 * sizeof(*A));  // Note: Room for 1000 values
k = 0;

....
....
do
{
    ....
    ....

    if (k < 1000)
    {
        A[k] = abc[1][0];
        ++k;
    }
} while (abc[0][1]>1);

// Print the recorded values
printf("Recorded %d values\n", k);
int t;
for (t = 0; t < k; ++t) printf("Value[%d]=%d\n", t, A[t]);

这将记录前1000个值。

如果您希望能够录制&#34;任何&#34;值的数量,您应该查看realloc,以便在达到1000时分配更多内存