计算数组中当前元素右侧的更多元素

我试图计算元素的数量大于数组右侧的元素。 我的function在这里。

int* SurpassersKing(int input1_size, int* input1,int* output_size) { int i,k; int count[input1_size]; for (i = 0; i < input1_size; i++) count[i] = 0; for ( i = 0; i < input1_size; i++) { for ( k = i + 1; k <input1_size; k++) { if (input1[i] < input1[k]) { count[i]++; } } } return count; } 

这是我的函数,我在计算数组中的更多元素。

所以在下面的代码片段中,我已经了解了main函数,声明了所有可靠的类似output_size,计数数组,i,k作为数组的索引并打印内容,并调用计数函数。

 int main() { int output_size; int* output; int ip1_size = 0; int ip1_i; scanf("%d\n", &ip1_size); int ip1[ip1_size]; for(ip1_i = 0; ip1_i < ip1_size; ip1_i++) { int ip1_item; scanf("%d", &ip1_item); ip1[ip1_i] = ip1_item; } output = SurpassersKing(ip1_size,ip1,&output_size); int output_i; for(output_i=0; output_i < output_size; output_i++) { printf("%d\n", output[output_i]); } return 0; } 

但我没有得到所需的输出,所以我该怎么做才能改善这一点。

计算右侧数字计数的逻辑是正确的。 唯一的问题是你无法从函数中返回类似的数组。 试试以下:

更换

int count[input1_size];

int * count = malloc(input1_size*sizeof(int));

然后在mainfunction

free(output);

就在退货声明之前。

哦,你的代码有一些我在尝试编译时发现的错误。

  1. 这是ac代码所以使用#include

  2. 在SurpassersKing函数内部,您试图返回不允许的数组计数。 除非动态创建,否则永远不要返回局部变量。

  3. output_size永远不会被启动。

这是最终的代码:

 #include  #include int* SurpassersKing(int input1_size, int* input1) { int i,k; int * count = (int*)malloc(input1_size*sizeof(int)); for (i = 0; i < input1_size; i++) *(count + i) = 0; for ( i = 0; i < input1_size; i++) { for ( k = i + 1; k