#include <stdio.h>
#include<stdlib.h>
int mp_sort(int c[],int n);
int main()
{
int num,i;
scanf("%d",&num);
int a[num],b[num];
for(i=0;i<num;i++)
scanf("%d",&a[i]);
/********** Begin **********/
b[]=mp_sort(a[],num);
printf("max1=%d max2=%d\n",b[num-1],b[num-2]);
printf("min1=%d min2=%d",b[0],b[1]);
return 0;
}
int mp_sort(int c[],int n)
{
int i=0,j=1,item;
while(1)
{
if(j<n)
{
if(c[i]>c[j])
{
item=c[i];
c[i]=c[j];
c[j]=item;
}
i++;j++;
}
else
{
break;
}
}
return c[];
}
/********** End **********/

请问各位c语言求一组数据中最大的两个数和最小的两个数,我错在哪,该怎么修改呢
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
南七灵 2021-11-30 20:04关注问题挺多的,一个是传参应该传指针直接对a进行排序,用b反而麻烦
排序算法也有问题,随便改了改#include <stdio.h> #include <stdlib.h> void mp_sort(int *p, int n); int main() { int num, i; scanf("%d", &num); int a[num]; for (i = 0; i < num; i++) scanf("%d", &a[i]); /********** Begin **********/ mp_sort(a, num); printf("max1=%d max2=%d\n", a[num - 1], a[num - 2]); printf("min1=%d min2=%d", a[0], a[1]); return 0; } void mp_sort(int *p, int n) { int i, j, item; for(i = 0;i < n;i++){ for(j = i;j < n;j++){ if(p[i] > p[j]){ item = p[i]; p[i] = p[j]; p[j] = item; } } } }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用