当前位置: 首页 > news >正文

网站制作乛薇在线支付网站建设

网站制作乛薇,在线支付网站建设,python如何做自己的网站,互联网保险的定义目录 1. 回调函数 2. qsort使用举例 1)排序整型数据 2)排序结构数据 3. qsort函数的模拟实现(冒泡) 1. 回调函数 回调函数就是一个通过函数指针调用的函数 函数的指针(地址)作为参数传递给另一个函数…

目录

1. 回调函数

2. qsort使用举例

1)排序整型数据

2)排序结构数据

3. qsort函数的模拟实现(冒泡)


1. 回调函数

回调函数就是一个通过函数指针调用的函数

函数的指针(地址)作为参数传递给另一个函数后,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数,并且不是由该函数直接调用,而是在特定的事件或条件发生时间接调用

 通过一个例子(转移表)来呈现回调函数的功能:

//使用回调函数改造前
#include <stdio.h>int add(int a, int b)
{return a + b;
}
int sub(int a, int b)
{return a - b;
}
int mul(int a, int b)
{return a * b;
}
int div(int a, int b)
{return a / b;
}int main()
{int x, y;int input = 1;int ret = 0;do{printf("*************************\n");printf(" 1:add 2:sub \n");printf(" 3:mul 4:div \n");printf(" 0:exit \n");printf("*************************\n");printf("请选择:");scanf("%d", &input);switch (input){case 1:printf("输入操作数:");scanf("%d %d", &x, &y)ret = add(x, y);printf("ret = %d\n", rbreak;case 2:printf("输入操作数:");scanf("%d %d", &x, &y)ret = sub(x, y);printf("ret = %d\n", rbreak;case 3:printf("输入操作数:");scanf("%d %d", &x, &y)ret = mul(x, y);printf("ret = %d\n", rbreak;case 4:printf("输入操作数:");scanf("%d %d", &x, &y)ret = div(x, y);printf("ret = %d\n", rbreak;case 0:printf("退出程序\n");break;default:printf("选择错误\n");break;}} while (input);return 0;
}
//使用回到函数改造后#include <stdio.h>int add(int a, int b)
{return a + b;
}
int sub(int a, int b)
{return a - b;
}
int mul(int a, int b)
{return a * b;
}
int div(int a, int b)
{return a / b;
}void calc(int(*pf)(int, int))
{int ret = 0;int x, y;printf("输入操作数:");scanf("%d %d", &x, &y);ret = pf(x, y);printf("ret = %d\n", ret);
}int main()
{int input = 1;do{printf("*************************\n");printf(" 1:add 2:sub \n");printf(" 3:mul 4:div \n");printf(" 0:exit \n");printf("*************************\n");printf("请选择:");scanf("%d", &input);switch (input){case 1:calc(add);break;case 2:calc(sub);break;case 3:calc(mul);break;case 4:calc(div);break;case 0:printf("退出程序\n");break;default:printf("选择错误\n");break;}} while (input);return 0;
}

 

2. qsort使用举例

 

 

1)排序整型数据
#include <stdio.h>
//qosrt函数的使用者得实现一个比较函数int int_cmp(const void * p1, const void * p2)
{return (*( int *)p1 - *(int *) p2);
}int main()
{int arr[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };int i = 0;qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof (int), int_cmp);for (i = 0; i< sizeof(arr) / sizeof(arr[0]); i++){printf( "%d ", arr[i]);}printf("\n");return 0;
}
2)排序结构数据
struct Stu //学生
{char name[20];//名字int age;//年龄
};//假设按照年龄来比较
int cmp_stu_by_age(const void* e1, const void* e2)
{return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
}//strcmp - 是库函数,是专门用来比较两个字符串的大小的
//假设按照名字来比较
int cmp_stu_by_name(const void* e1, const void* e2)
{return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
}
//按照年龄来排序
void test2()
{struct Stu s[] = { {"zhangsan", 20}, {"lisi", 30}, {"wangwu", 15} };int sz = sizeof(s) / sizeof(s[0]);qsort(s, sz, sizeof(s[0]), cmp_stu_by_age);
}//按照名字来排序
void test3()
{struct Stu s[] = { {"zhangsan", 20}, {"lisi", 30}, {"wangwu", 15} };int sz = sizeof(s) / sizeof(s[0]);qsort(s, sz, sizeof(s[0]), cmp_stu_by_name);
}
//void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));
int main()
{test2();test3();return 0;
}

 

3. qsort函数的模拟实现(冒泡)
#include <stdio.h>int int_cmp(const void * p1, const void * p2)
{return (*( int *)p1 - *(int *) p2);//强制类型转换 int* 一次访问4个字节
}void _swap(void *p1, void * p2, int size)
{int i = 0;for (i = 0; i< size; i++){char tmp = *((char *)p1 + i);//每次交换1字节 交换size字节*(( char *)p1 + i) = *((char *) p2 + i);*(( char *)p2 + i) = tmp;}
}void bubble(void *base, int count , int size, int(*cmp )(void *, void *))
{int i = 0;int j = 0;for (i = 0; i< count - 1; i++){for (j = 0; j<count-i-1; j++)   //(char *) base + j*size 访问base往后 j*size 字节{if (cmp ((char *) base + j*size , (char *)base + (j + 1)*size) > 0){_swap(( char *)base + j*size, (char *)base + (j + 1)*size, size);}}}
}int main()
{int arr[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };int i = 0;bubble(arr, sizeof(arr) / sizeof(arr[0]), sizeof (int), int_cmp);for (i = 0; i< sizeof(arr) / sizeof(arr[0]); i++){printf( "%d ", arr[i]);}printf("\n");return 0;
}

谢谢观看

http://www.15wanjia.com/news/156280.html

相关文章:

  • 江苏住房和城乡建设局网站怎样下载建设银行信用卡网站
  • word用来做网站的找公司做网站需要买服务器
  • 新乡公司做网站找哪家公司好箱包网站建设策划报告
  • 首页网站备案号添加深圳福田区有哪些大公司
  • 湘icp备 网站建设 机械 湖南wordpress 获取友链
  • 上海网站推广费用成都市城乡建设网站
  • 网站页面上的悬浮窗怎么做wordpress中文版安装教程 pdf
  • html网站系统广西企业建站
  • 深圳网站建设价钱如何设计一个购物网站
  • 有什么网站可以做投票功能吗河北移动端网站制作
  • 镜像别人网站做排名的好处怎样加入网站
  • 天津特定网站建设推广电商设计详情页
  • 企业网站优化兴田德润优惠响应式网站的宽度
  • 企业网络营销网站猎头公司怎么找
  • 网站的pdf目录怎么做的泰安房产成交信息网
  • 做国际网站怎么发货网络营销文案创作思路有哪些
  • 企业网站建设教程 pdfwordpress模板站
  • 注册网站免费注册邮箱创新设计多功能水杯
  • 大连网站搭建与推广dede中英文网站
  • 自动做reference的网站html前端网页模板
  • opencms做网站 谁杨凌开发建设局网站
  • 东莞企业网站后缀中山网站建设文化服务
  • 佛山网站网站建设平台期怎么突破
  • 泉州建网站自学编程入门先学什么
  • 安卓手机网站开发如何推广自己的网站和产品
  • 找图片素材网站一级a做爰片免费网站短视频播放
  • 上海 网站设计公司推广的公司
  • 湖北省建设厅造价官方网站三星杭州 两学一做网站
  • logo制作网站免费互联网站平台有哪些
  • 自己做网站流程网站排名关键词