函数调用
在函数中进行 10个学生成绩从高到低排名, 再改进函数, 进行 n个学生成绩从高到低排名, 排名方式根据函数的style参数进行,如style为‘a'按升序排,style为 ' d ' 按降序排。 ( a:ascending 升,d:descending 降) 编写多个不同函数,使之能实现不同的排序算法(3种以上),再编写一个通用输出函数,(要求用函数指针做参数)能分别打印不同排序算法的结果。
步骤、方法与要求
1. 函数中进行10个学生成绩从高到低排名 sort(int a[10])
2. 进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名,
3. 进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。
(a:ascending 升,d:descending 降)
4. 编写4个排序函数,实现4种不同的排序算法(用冒泡法进行升序排序,用冒泡法进行降序排序,选择法进行升序排序,选择法进行降序排序等),函数返回指向排好序的数组的指针。
5. 写通用输出函数 show(int *(* fun)(a[ ], int n )),其中a[]为成绩数组,n为数组元素个数。
6. 写主函数调用以上函数。
下面是我按照题目编写的,高手帮忙修改一下:
#include <stdio.h>
int sort (int a[10])
{
int i=0,j=0,t;
for(i=0;i<10;i++)
{
for(j=0;j<9;j++)
{
if(a[i]>a[j])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
return 0;
}
int sort1(int array[],int n)
{int i,j,k,t;
for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]>array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
return 0;
}
int sort2(int array[],int n, char style)
{int i,j,k,t;
if(style=='d')
for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]>array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
else if(style=='a')
for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
return 0;
}
int bubblesorta(int array[],int n)
{
int i,j,m,*p;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i;j++)
if(array[j]>array[j+1])
{m=array[j];
array[j]=array[j+1];
array[j+1]=m;
}
}
p=array;
return p;
}
int bubblesortd(int array[],int n)
{
int i,j,m,*p;
for(i=0;i<=n+1;i++)
{
for(j=0;j<=n+1;j++)
if(array[j]<array[j+1])
{m=array[j];
array[j]=array[j+1];
array[j+1]=m;
}
}
p=array;
return p;
}
int selectionsorta(int array[],int n)
{int i,j,k,t,*p;
for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<=n;j++)
if(array[j]<array[k]);
t=array[k];
array[k]=array[i];
array[i]=t;
}
p=array;
return p;
}
int selectionsortd(int array[],int n)
{int i,j,k,t,*p;
for(i=0;i<=n+1;i++)
{k=i;
for(j=i+1;j<=n+1;j++)
if(array[j]>array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
p=array;
return p;
}
void main()
{
int a[10],i;
printf("输入10个学生的成绩\n");
for(i=0;i<10;i++)
{printf("a[%d]= ",i);
scanf("%d",&a[i]);
}
printf("\n");
printf("原始学生成绩顺序\n");
for(i=1;i<=9;i++)
printf("%5d ",a[i]);
printf("\n");
printf("排列好的成绩\n");
sort(a);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
怎样才能实现上面的运行。