我正在尝试计算元素数量大于数组右侧元素的数量。我的功能就在这里。
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;
}
但我没有得到所需的输出,所以我该怎样做才能改善这一点。
答案 0 :(得分:1)
计算右侧数字计数的逻辑是正确的。唯一的问题是你无法从函数中返回类似的数组。请尝试以下方法:
替换
int count[input1_size];
与
int * count = malloc(input1_size*sizeof(int));
然后在main
函数
添加
free(output);
就在return语句之前。
答案 1 :(得分:1)
但是,当我尝试编译时,你的代码有一些错误。
这是一个c代码,所以请使用#include
在函数SurpassersKing中,您试图返回不允许的数组计数。除非动态创建,否则永远不要返回局部变量。
output_size永远不会被启动。
这是最终代码:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="myCtrl">
<select ng-model="quantity" ng-options="value as value for value in list"></select>
<br>
<select class="classname" ng-options="value as value for value in list | limitTo:quantity:0" ng-model="selectedItem">
<!--<option ng-repeat="item in list | limitTo:quantity:0">{{item}}</option> -->
</select>
{{selectedItem}}
</div>