我试图计算的元素数大于数组右侧的元素数。这是我的功能。
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;
}
这是我的函数,我在数组中计算更大的元素。
因此,在下面的代码片段中,我编写了主函数,声明所有可验证的like output_size、counting array、i、k作为数组的索引并打印内容,然后调用counting函数。
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));
然后在main
函数中
添加free(output);
就在返回语句之前。
关于c - 计算数组中当前元素右侧的更大元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43131739/