#include<stdio.h>
#define N 40 //输入个数的上限
int readscore(int score[]) //读取数据函数
{
int i=-1 ;
do
{
i++;
printf("Input score: ");
scanf("%d",&score[i]);
}while(score[i]>=0); //这个分号老是忘记
return i;
}
void select(int a[],int n,int (*compare)(int a,int b)) //排序函数
{
int i, j , k ;
for(i=0;i<n-1;i++)
{
k = i ;
for(j=i+1;j<n;j++)
{
if((*compare)(a[j],a[k])) k = j ;
}
if(k!=j) swap(&a[k],&a[i]);
}
}
int ascending(int a ,int b) / /升序
{
return a<b ;
}
int descending(int a,int b) //降序
{
return a>b;
}
swap(int *x,int *y) //交换函数
{
int temp= *x;
*x = *y;
*y = temp;
}
void output(int score[],int n) //输出函数
{
int i=0;
for(;i<n;i++)
{
printf("%4d",score[i]);
}
}
int main()
{
int score[N] , n , order ;
n = readscore(score);
printf("Total students are %4d\n",n);
printf("Input 1 to ascend \n");
printf("Input 2 to descend \n");
scanf("%d",&order);
if(order = 1)
{
select(score,n,ascending);
printf("data items in ascending order \n");
}
else
{
select(score,n,descending);
printf("data in descending order \n");
}
output(score,n);
return 0;
}
C语言基础 指针·通用排序
最新推荐文章于 2025-03-31 10:34:04 发布