#include<stdio.h>
//定义函数指针类型,
//compare表示指向形式为int (*)(int,int) 的指针;
typedef int (*compare)(int,int) ;
/*
-------------------------------
升序比较
-------------------------------
*/
int compare_asc(int a ,int b)
{
if(a==b)
return 0 ;
else if(a>b)
return 1 ;
else
return -1 ;
}
/*
--------------------------------
降序比较
--------------------------------
*/
int compare_desc(int a ,int b)
{
if(a==b)
return 0 ;
else if(a<b)
return 1 ;
else
return -1 ;
}
void sort(compare fun,int a[] ,int n)
{
int i;
int j ;
int temp ;
for(i=0; i<n-1 ;i++)
{
for(j=i+1 ;j<n ;j++)
{
if(fun(a[i],a[j])>=0)
{
temp =a[i] ;
a[i] =a[j] ;
a[j] =temp ;
}
}
}
}
int main()
{
int a[50] ;
int n ;
int i ;
compare fun ;//定义函数指针
printf("输入要有多少数字:");
scanf("%d",&n) ;
for(i=0 ; i<n;i++)
scanf("%d",&a[i]) ;
printf("升序:\n");
fun =&compare_asc ;//用函数指针指向函数地址
sort(fun,a ,n) ;//将函数指针作为参数传入
for(i=0 ;i<n ;i++)
printf("%d\t",a[i]);
printf("\n");
printf("降序:\n");
fun =&compare_desc ;//取
sort(fun,a ,n) ;
for(i=0 ;i<n ;i++)
printf("%d\t",a[i]);
printf("\n");
return 0 ;
}
函数指针
最新推荐文章于 2024-08-08 08:06:54 发布
本文介绍了一个使用C语言实现的排序算法,通过定义函数指针来动态选择升序或降序排列方式。具体实现了两种比较函数:升序compare_asc和降序compare_desc,并使用函数指针传递给sort函数进行数组排序。
1万+

被折叠的 条评论
为什么被折叠?



