2019独角兽企业重金招聘Python工程师标准>>>

// ptrsort.c -- 从键盘输入一系列字符串
// 将其按升序或降序排列
// 然后,把排序后的字符串显示在屏幕上
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAXLINES 25int get_lines(char *lines[]);
void sort(char *p[], int n, int sort_type);
void print_strings(char *p[], int n);
int alpha(char *p1, char *p2);
int reverse(char *p1, char *p2);char *lines[MAXLINES]; int main(void){int number_of_lines, sort_type;//从键盘读入多行字符串number_of_lines = get_lines(lines); if(number_of_lines < 0){puts("Memory allocation error");exit(-1);}puts("Enter 0 for reverse order sort, 1 for alphabetical: ");scanf("%d", &sort_type);sort(lines, number_of_lines, sort_type);printf("\n");print_strings(lines, number_of_lines);return 0;
}int get_lines(char *lines[]){int n = 0;char buffer[80];  // 临时储存每一行字符串puts("Enter one lines at time; enter a blank when done.");while(n < MAXLINES && gets(buffer) != 0 && buffer[0] != '\0'){if((lines[n] = (char *)malloc(strlen(buffer) + 1)) == NULL)return -1;strcpy(lines[n++], buffer);}return n;
} // get_lines结束 void sort(char *p[], int n, int sort_type){int a, b;char *x;//函数指针int (*compare)(char *s1, char *s2);// 根据sort_type参数的值,让指针指向相应的比较函数 compare = (sort_type) ? reverse : alpha;
//    if(0 == sort_type){
//        compare = reverse;
//    }
//    if(1 == sort_type){
//        compare = alpha;
//    }for(a = 1; a < n; a++){for(b = 0; b < n-1; b++){if(compare(p[b], p[b+1]) > 0){x = p[b];p[b] = p[b+1];p[b+1] = x;}}}
}  // sort结束 void print_strings(char *p[], int n){int count;for(count = 0; count < n; count++){printf("%s\n", p[count]);}
}int alpha(char *p1, char *p2){ // 按字母顺序比较return (strcmp(p2, p1));
}int reverse(char *p1, char *p2){ //按反向字母比较return (strcmp(p1, p2));
}

转载于:https://my.oschina.net/u/241930/blog/523819

用函数指针控制排序的顺序相关推荐

  1. C++中函数的重载和函数指针排序大全

    函数重载的判断标准, 参数个数不相同 参数的类型不相同 参数的顺序不相同 注意函数的返回值不是函数重载的判断标准 函数变量得到声明 #include <iostream>using nam ...

  2. C语言基础 --使用指针数组存储若干英文书名,调用排序函数将其排序后输出

     思路:这道题重点是在于你对指针数组是否有足够清晰的认知,并对指针数组的动态内存原理有一定理解 原理:1. 首先,我们需要定义一个指针数组 bookname,用来存储若干本英文书的书名.在实际的编程过 ...

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

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

  4. MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06

    目录 视图*** 什么是视图 为什么要用视图 如何生成视图 修改视图 --> 最好(千万)不要 关联表数据改动前 关联表数据改动之后 触发器 什么是触发器 触发条件 触发器语法结构 修改mysq ...

  5. 【嵌入式开发】C语言 命令行参数 函数指针 gdb调试

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...

  6. html如何控制弹窗位置,控制弹窗展示顺序

    工作中遇到一个需求,就是控制用户进入应用时自动打开弹窗的展示顺序. 需求和现状 用户进入应用时会展示一系列的弹窗,这些弹窗的展示内容以及展示与否取决于进入应用时的一系列请求结果.由于接口请求返回数据的 ...

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

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

  8. 函数指针和回调函数的简单应用

    文章目录 前言 函数指针的简单应用 什么是回调函数? 利用冒泡排序实现qsort函数 前言 本博客主要记录一些函数指针和回调函数的简单应用: 函数指针的简单应用 上一篇博客我记录了什么是函数指针? 那 ...

  9. c/c++开发,无可避免的函数指针使用案例

    目录 一.函数指针简介 二.函数指针数组 三.指向重载函数的指针 四.函数指针作为类成员 五.函数指针作为形参 六. 转换表 七.类函数指针成员与注册函数 八.类函数指针数组 九.函数指针测试案例 一 ...

最新文章

  1. studioone精调效果包_cnocr: 极简的中文OCR Python包
  2. C#与时间有关的一些方法
  3. 高可用MySQL架构设计2
  4. java获取tomcat目录结构_tomcat目录结构简介_动力节点Java学院整理
  5. 使用ef core自动生成mysql表和数据编码的问题
  6. Scanner初学需要注意的几个问题
  7. 有哪些不错的查文献或查资料的网站或APP?
  8. token干什么用_什么是Token?Token有什么用处?为什么使用它?Token认证又是什么?...
  9. python计算代码运行时间
  10. WPS中的word如何取消英文首字母大写
  11. EKF SLAM学习笔记02
  12. java方法可选参数_Java可选参数
  13. 为什么图像预处理矩阵要除以255?
  14. 当你压力大到快崩溃时,不要跟任何人说,也不要觉得委屈
  15. 2012-03-16
  16. 人民币小写金额转大写
  17. 无人机行业情况 - 亿航、大疆、极飞
  18. 零基础入门金融风控-贷款违约预测-机器学习-数据分析
  19. vos3000客户在设置服务器防火墙时需要打开哪些 VOS 应用端口
  20. 获取token(/oauth/token)

热门文章

  1. Chapter 2 向量空间
  2. JavaScript——语法
  3. Java中,什么是最终类与最终方法?它们的作用是什么?
  4. 微擎后台报错,关闭错误信息
  5. OpenStack 企业私有云的若干需求(1):Nova 虚机支持 GPU
  6. 【Unity】4.5 树木创建器
  7. 判断连个单链表是否交叉,并找到交叉点
  8. 转载:LOG_ARCHIVE_DEST_n参数属性——DATA GUARD概念和管理
  9. Q129:PBRT-V3,均匀介质的采样(15.2.1章节)
  10. 问题五十二:怎么用C++实现矩阵运算