#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 **********/
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/516968272836137.png "#left")
请问各位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无用
悬赏问题
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
- ¥15 求daily translation(DT)偏差订正方法的代码
- ¥15 js调用html页面需要隐藏某个按钮