c - 动态数组 C

标签 c arrays function function-pointers

所以我正在创建数组,我需要找到具有最高除数的数字,按递减顺序打印数字、计数和除数,如果我创建只有 1 个数字的数组,我的函数可以正常工作,但如果我创建它有 2 个或更多的除数会变成不正确的除数。

void calculate(int *data, int size){
    int max;
    int divisors[size][size];
    int divisorssize[size];
    //Checking for the divisors
  for (int i = 0; i < size; i++){
    divisorssize[i] = 0;
    for (int j = data[i]; j >= 1; j--) {
      if (data[i] % j == 0) {
        divisorssize[i]++;
        divisors[i][divisorssize[i]] = j;
      }
    }
  }
//Searching for the number in the array with the highest divisors count
  max = 0;
  for (int i = 0; i < size; i++){
    if (divisorssize[max] < divisorssize[i]){
      max = i;
    }
  }
//divisors Output
  printf("Max divisors: %d\n", data[max]);
  printf("divisors count: %d\n", divisorssize[max]);
  printf("divisors list: ");
  for (int i = 1; i <= divisorssize[max]; i++){
    printf("%d ", divisors[max][i]);
  }
}

函数用法:

calculate(data, size);

因此,当我创建大小为 1 的数组时;输入数字 56 它​​显示所有除数:56 28 14 8 7 4 2 1,但是如果例如大小为 2 而我输入 56 和 1,它会将除数更改为 56 28 1 8 7 4 2 1。

最佳答案

问题在于您的数组大小。

例如,尺寸为 2

int arr[size][size];

会是

 int arr[2][2];

没关系,只要没有数字的除数超过两个...

第二维的大小需要足够大以容纳任何除数。 例如,在*data中找到最大的数,并使用它

 int array[size][max_number];

关于c - 动态数组 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22747132/

相关文章:

无法使用 getopt_long 读取参数

c - 文件与数组,哪个更快?

c - 为什么++ 和 -- 只在变量前后使用?

c++ - C++ 中的快速函数对象?

arrays - TypeScript 函数数组

c - 语法错误,在为 8051 微 Controller 编译 C 代码时期望看到声明

php - 如何从php中的非唯一字符串中获取唯一的逗号分隔字符串

javascript - 使用 ng-repeat AngularJs 显示数据

javascript - 从对象数组中提取数据(问题稍微复杂)

c++ - 多重功能