c - 查找二维数组的最大大小

标签 c arrays 2d

我被要求用 C 创建一个程序,其中将采用一个二维数组,例如。 3个数,每次乘以一个数的余数,直到只得到一个数。然后将每个数字的结果归档到数组的第二行。

例如。

比如数字2736的持久化为0:首先我们求2 * 7 * 1 * 6 = 252,然后求2 * 5 * 2 = 20 和最后 2 * 0 = 0 我们来到一个数字。 (在该示例中为 0)。

数组的数字将从具有以下格式的 txt 文件中给出:

2716 2720

所以数字将是 [2716,2720] : 2176 2177 2178 2179 21720

每个持久性的图形表示都是

Number | Persist
-----------------
  2716  |    3
  2717  |    4
  2718  |    2
  2719  |    3
  2720  |    1

之后的数组将是:

 array[5][2] = { {2716,3}, {2717,4}, {2718,2}, {2719,3}, {2720,1} };

所以最后我需要找到具有 maxinum persistanse 的数字(在我的例子中是 2717)并将其 fprintf 到一个名为 persist.out 的 txt 文件,其中的行和列如下所示:

2717 4

我的问题是复制数组的最后一部分。

我们还需要检查是否有多个数具有较大的持久性,然后找到最大数。

我为最后一部分写了一个代码,但不是很稳定,我无法进行我想要的检查。

已更新!

#include <stdio.h>

int multiply_digits(int x)
{
  int z = 1;
  while ( x )
  {
    z *= x % 10;
    x /= 10;
  }

  return z;
}



int main() {

    int a;
    int b;

    FILE *input, *output;

    input = fopen("persist.in","r");
    fscanf(input,"%d %d",&a, &b);
    fclose(input);


    int c = (b - a) + 1;

    int array[c][2];



    array[0][0] = a;

    for(int i = 1; i < c; i++)
    {

        array[i][0] = a + i;

    }



     int i, j;
    for (i=0; i< c; ++i)
    {
        int n = array[i][0];
        int j = 0;
            while (n>9)
            {
            n = multiply_digits(n);
            j++;
            }
        array[i][1] = j;
    }



    for (i = 0; i < c; i++)
    {
        for (j = 0; j < 2; j++)
        {
       printf("%d ", array[i][j]);
        }
    printf("\n");
    }

    printf("\n");

    int indexOfMaximum;
    int maximum = array[0][1];
    for (i = 0 ; i < c ; ++i ) 
    {

      if ( array[i][1] >= maximum ) {
    maximum = array[i][1];
    indexOfMaximum = i;
    }
    } 


}

最佳答案

在你的for循环,你的停止条件是i <= c应该是i < c因为你的起始索引是 0

您的数组声明为 int array[c][2]所以你正在阅读数组的末尾我假设一个垃圾值实际上可能大于 maximum , 如果你想上升到 c然后声明int array[1 + c][2] .

至于写入文件部分就行了

fprintf(output, "%d %d\n", array[indexOfMaximum][0], array[indexOfMaximum][1]);

希望对你有帮助。

关于c - 查找二维数组的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512591/

相关文章:

C指针总是包含它自己的内存地址?

数组中的Java匹配模式

javascript - 将数组放入 JavaScript

c++ - 在构造函数中声明 2D vector

java - 检查java awt 2D游戏,jbutton后台更新问题

XNA - 使用具有旋转/缩放/平移功能的 2d 相机系统获取鼠标坐标

C 防止输入超过 30 个字符

c - 如何使用检查数字的函数解决字符串中字母、符号、数字的计数问题

c - 如何使用递归在链表中添加整数?

java - 将数组输出格式化为 9x9 框