#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 **********/

问题挺多的,一个是传参应该传指针直接对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;
}
}
}
}
只用一个数组就行
#include <stdio.h>
#include<stdlib.h>
int mp_sort(int c[],int n);
int main()
{
int j=0;
int num,i;
scanf("%d",&num);
int a[num];
for(i=0; i<num; i++)
{
scanf("%d",&a[i]);
}
mpsort(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 mpsort(int c[],int n)
{
int i=0,item;
while(i<n-1)
{
int j=0;
while(j<n-1)
{
if(c[j]>c[j+1])
{
item=c[j];
c[j]=c[j+1];
c[j+1]=item;
}
j++;
}
i++;
}
}