【问题标题】:how to store value of index of an array during while loop in C如何在C中的while循环期间存储数组索引的值
【发布时间】:2018-04-17 05:42:18
【问题描述】:
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[] 中,这样我就无法进一步使用该数组,但我坚持存储所有值

【问题讨论】:

  • char *A = malloc(sizeof(*A)); malloc 1 个字符?但为什么? A[k] = abc[1][0]; 使用未初始化变量k 引用数组?但为什么呢?
  • A 不是一个数组。它指向单个 char 存储空间。
  • 您要复制abc 吗?为什么不创建另一个 A[2][2] 并复制嵌套循环对中的值?
  • @John3136 我想要未初始化的数组
  • 这个程序应该在上帝的绿地上做什么?

标签: c arrays matrix


【解决方案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 个值。

如果你想记录“任意”数量的值,你应该看看realloc,这样当你达到1000时你可以分配更多的内存

【讨论】:

  • OP 希望每次循环存储多个值。
  • @Yunnosch - 是什么让你这么想?
  • OP 的评论“do..while 循环执行它会在 abc[1][0] 处生成多个值,而不仅仅是在每次迭代中生成一个”。
  • @Yunnosch 嗯...嗯,这有点不清楚,但查看代码告诉我 OP 在每个循环中更改 abc[1][0] 一次。我猜 OP 想记录这个新值。
  • @4386427 是的,每次迭代后都想在数组 A[] 中存储/记录每个新值
猜你喜欢
  • 2021-05-01
  • 2013-07-07
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多