#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 ;
}
函数指针
最新推荐文章于 2025-03-24 20:56:16 发布