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

标签 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[] 中,这样我就无法进一步使用该数组,但我坚持存储所有值

最佳答案

如果你想在每次循环结束时记录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 个值。

如果您希望能够记录“任意”数量的值,您应该看看realloc,以便在达到 1000 时分配更多内存

关于c - 如何在C中的while循环中存储数组索引的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870662/

相关文章:

c - 结构体指针作为返回类型

scanf() 能否将非零输入变为零

c - 如何获取时区的相应位置

javascript - ForEach ES6 没有工作

java - 如何根据最后一列的最大值对多个字符串的数组列表进行排序?

c - 为 2D 数组分配内存时出现段错误(核心转储)

python - 水平连接numpy向量和矩阵

c - 如何使 libcurl 在每个 http 数据包中发送摘要身份验证 header ?

PHP:重用对象或复制到数组中更快吗

c++ - c++类与OpenCV矩阵运算之间的转换