#include<stdio.h>#define N 10//定义数组元素个数
int Ascending(int a,int b);//升序排列的函数声明
int Descending(int a,int b);//降序排列的函数声明
void swap(int*,int*);//交换数据的函数声明
void BubbleSort(int a[],int n,int (*compare)(int,int));//声明排序函数,通过函数指针作为函数调用
void Display(int a[],int n);//输出数组元素的函数声明
void main()
{int a[N]={12,34,21,46,89,54,26,8,6,17};int flag;while(1){printf("输入1:从小到大排序。\n输入2:从大到小排序\n输入3:退出!

\n"); scanf("%d",&flag); switch(flag) { case 1: printf("排序前的数据为:"); Display(a,N); BubbleSort(a,N,Ascending);//从小到大排序。将函数作为參数传递 printf("从小到大排列后的数据为:"); Display(a,N); break; case 2: printf("排序前的数据为:"); Display(a,N); BubbleSort(a,N,Descending);//从大到小排序。将函数作为參数传递 printf("从大到小排列后的数据为:"); Display(a,N); break; case 3: return; break; default: printf("输入数据不合法,请又一次输入。\n"); break; } } } //冒泡排序,将函数作为參数传递,推断是从小到大还是从大到小排序 void BubbleSort(int a[],int n,int(*compare)(int,int)) { int i,j; for(i=0;i<n;i++) { for(j=0;j<n-1;j++) if((*compare)(a[j],a[j+1])) swap(&a[j],&a[j+1]); } } //交换数组的元素 void swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } //推断相邻数据的大小,假设前者大,升序排列须要交换 int Ascending(int a,int b) { if(a>b) return 1; else return 0; } //推断相邻数据的大小,假设前者大,降序排列须要交换 int Descending(int a,int b) { if(a<b) return 1; else return 0; } void Display(int a[],int n)//输出数据元素 { int i; for(i=0;i<n;i++) printf("%5d",a[i]); printf("\n"); }

程序执行结果

函数指针作为函数參数,实现冒泡排序的升序排序和降序排序相关推荐

  1. c语言指针和函数对数组A升序排序,函数指针作为函数參数,实现冒泡排序的升序排序和降序排序...

    #include #define N 10//定义数组元素个数 int Ascending(int a,int b);//升序排列的函数声明 int Descending(int a,int b);/ ...

  2. C语言基础10——指针进阶。字符指针、指针数组、数组指针、函数指针、函数指针数组、回调函数、数组名详解、杨氏矩阵、字符串旋转

    目录 字符指针 指针数组 数组指针 数组传参.指针参数 函数指针 函数指针数组 指向函数指针数组的指针 回调函数 练习 数组名的意义 指针笔试题 字符指针 字符指针的另一种使用方式 #include ...

  3. c语言函数指针,基于函数回调模拟实现qsort函数,实测案例

    前言 qsort函数C语言编译器函数库自带的排序函数. qsort 的函数原型是void qsort (void*base,size_t num,size_t width,int (__cdecl*c ...

  4. 函数指针 和 函数指针数组 和 函数指针数组

    //先看一些函数指针的例子(吸纳了网上兄弟的方法) #include <stdio.h> void MyFun(int x); //这个申明也可写成:void MyFun( int ); ...

  5. c语言指针回调,C语言函数指针,函数动态回调

    经常有人问,学习这些理论有什么用?我无语了.因为懂行的人不会问这种问题:不懂行的人,你再怎么解释人家也不会明白这个道理.如果人家追问:"这个能换钱吗?",我就直接SB了. 这是一个 ...

  6. C++基础8【难】 回顾:数组指针,函数指针,函数指针做函数参数 C语言多态

    1,数组指针语法梳理 回顾,如何定义数组数据类型: 回顾,如何定义指针类型数组: 回顾,如何直接定义 一个指向数组类型的指针: 2,函数指针语法梳理 1)如何定义一个函数类型 2)如何定义一个函数指针 ...

  7. 函数指针和函数指针数组及其应用

    1. 函数指针 先来看一个简单的例子: int a=3; void *p=&a; 这是一个基础的不能再基础的例子.相信学过指针的都能看得懂.P是一个指针,指向a.a 是一个整形变量.函数指针和 ...

  8. C++函数指针和函数重载

    函数重载与函数指针    当使⽤用重载函数名对函数指针进⾏行赋值时    根据重载规则挑选与函数指针参数列表⼀致的候选者    严格匹配候选者的函数类型与函数指针的函数类型 方法一: // 声明一个函 ...

  9. 【转】回调函数,函数指针与函数对象

    原文出处:http://shudingbo.spaces.live.com/blog/cns!C33400475B08F157!423.entry?wa=wsignin1.0&sa=24651 ...

  10. C/C++ 函数指针调用函数

    01 //C/C++ 函数指针调用函数 02 #include<iostream> 03 using namespace std; 04   05 void site1() 06 { 07 ...

最新文章

  1. TCP的协议特点(对于《Linux高性能服务器编程》的部分摘录以及自己的部分见解)
  2. 全球及中国真空管太阳能集热器行业竞争状况及投资策略研究报告2021年版
  3. Linux crontab定时任务示例
  4. mybatis关联配置(一对多配置)
  5. [Leedcode][JAVA][第14题][最长公共前缀][二分][横竖扫描][分治]
  6. 阿里程序员双11加班吃什么?
  7. leetcode771题
  8. windows下利用pybind11生成pyd库
  9. 可替代Visio的免费流程图软件draw.io(含下载地址)
  10. 安装VS2015卡在创建系统还原点
  11. 公募“一哥”王亚伟已在深圳前海低调复出
  12. 前端面试题之浏览器系列
  13. oracle9i rac for aix,oracle 11gR2 rac for aix 第二个节点运行root.sh不成功问题处理
  14. 为CIFAR图片分类模型添加BN
  15. 数商云工业制造行业B2B电商平台解决方案
  16. 嵌入式物联网项目实践1.1
  17. SPA 中前端路由基本原理与实现方式
  18. MathType 6.9嵌入到Office(word)2016中
  19. Web 攻防之业务安全:越权访问漏洞 测试.
  20. 手把手教你做时间序列图

热门文章

  1. [STL源码剖析]RB-tree的插入操作
  2. [VBA]_更改单元格背景颜色
  3. python 实现的huffman 编码压缩,解码解压缩
  4. CFS之vruntime记录
  5. 关于ext4 simg fill chunk type
  6. hisi mmz模块驱动讲解
  7. 多网卡配置同一网段IP情况解析
  8. linux内核奇遇记之md源代码解读之十raid5数据流之同步数据流程
  9. 亚太地区数学建模优秀论文_2020APMCM 亚太地区大学生数学建模竞赛
  10. Centos7安装整合Apache+PHP,安装nginx后nginx无法解析.php文件