所以我正在创建数组,我需要找到具有最高除数的数字,按递减顺序打印数字、计数和除数,如果我创建只有 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/