建设网站的平台东莞债务优化

web/2025/10/1 9:55:07/文章来源:
建设网站的平台,东莞债务优化,网站制作的重要性,中山网站制作专业回调函数与qsort的讲解和模拟实现 前言1. 回调函数是什么#xff1f;2. qsort2.1 使用qsort函数排序整型数据2.2 使用qsort排序结构数据 3. qsort函数的模拟实现 前言 回调函数是一个函数#xff0c;它作为参数传递给另一个函数#xff0c;并且能够在该函数内部被调用。在C… 回调函数与qsort的讲解和模拟实现 前言1. 回调函数是什么2. qsort2.1 使用qsort函数排序整型数据2.2 使用qsort排序结构数据 3. qsort函数的模拟实现 前言 回调函数是一个函数它作为参数传递给另一个函数并且能够在该函数内部被调用。在C语言中回调函数通常被用于实现事件处理和排序算法中。 qsort是C标准库中的一个排序函数它可以对任意类型的数组进行排序。qsort需要三个参数要排序的数组、数组元素的个数和一个指向回调函数的指针。回调函数必须满足两个条件能够比较数组中的元素返回一个整数表示它们之间的大小关系并且它应该能够被qsort函数调用。 1. 回调函数是什么 C语言中回调函数是指将一个函数作为参数传递给另一个函数并在后者中被调用的函数。 一般情况下回调函数被用来在程序中实现事件处理和消息传递等机制。例如当一个用户在应用程序中点击一个按钮时应用程序会调用相应的回调函数来处理该事件。 以下是一个示例代码展示了如何在C语言中定义和使用回调函数 #include stdio.h// 回调函数定义 typedef int (*callback)(int);// 回调函数实现 int callback_function(int num) {return num * 2; }// 接收回调函数参数的函数 void accept_callback(int num, callback cb) {int result cb(num); // 调用回调函数printf(The result is: %d\n, result); }int main() {// 调用 accept_callback 函数并传入回调函数指针accept_callback(5, callback_function);return 0; }在上述示例中我们通过定义 callback 类型为函数指针类型从而定义了一个回调函数类型。接着我们定义了回调函数 callback_function该函数接收一个整数作为参数并返回该参数的两倍。最后我们通过调用 accept_callback 函数并传入一个整数以及回调函数的指针实现了回调函数的调用和结果输出。 需要注意的是回调函数的实现和使用需要满足一定的约定例如回调函数的参数和返回值类型需要与被调用函数的要求一致否则会导致程序运行错误。 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针地址作为参数传递给另一个函数当这个指针被用来调用其所指向的函数时被调用的函数就是回调函数。回调函数不是由该函数的实现直接调用而是在特定的事件或条件发生时由另外的一方调用的用于对该事件或条件进行响应。 //使用回调函数改造前 #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(******************\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;printf(******************\n);printf( 1:add 2:sub \n);printf( 3:mul 4:div \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 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a775e1216eb84ac0b69764becda26310.png ) qsort是C语言中的一个标准库函数用于实现快速排序算法。它可以对任意类型的数组进行排序只需要给出相应的比较函数即可。 qsort的函数原型如下 void qsort(void *base, size_t nmemb, size_t size,int (*compar)(const void *, const void *));其中base是要排序的数组的首地址nmemb是数组中元素的个数size是每个元素的大小以字节为单位compar是用来比较数组中元素大小的函数指针。 比较函数的定义如下 int compar(const void *a, const void *b);函数需要返回一个整型值表示两个元素的大小关系。如果a小于b返回一个负数如果a等于b返回0如果a大于b返回一个正数。 下面是一个使用qsort进行int类型数组排序的例子 #include stdio.h #include stdlib.hint cmp(const void *a, const void *b) {return *(int *)a - *(int *)b; }int main() {int arr[] {3, 1, 4, 1, 5, 9, 2, 6};int n sizeof(arr) / sizeof(int);qsort(arr, n, sizeof(int), cmp);for (int i 0; i n; i) {printf(%d , arr[i]);}printf(\n);return 0; }运行结果为1 1 2 3 4 5 6 9上述代码中我们定义了一个比较函数cmp返回a-b的结果然后将其传给qsort函数进行排序。在main函数中我们定义了一个int类型的数组arr调用qsort进行排序后输出结果即可。 需要注意的是qsort函数是一个不稳定的排序算法即排序后可能改变数组中相同元素的原有顺序。 2.1 使用qsort函数排序整型数据 #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.2 使用qsort排序结构数据 #include stdio.h 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); } int main() {test2();test3();return 0; }3. qsort函数的模拟实现 使用回调函数模拟实现qsort采用冒泡的方式。 #include stdio.h int int_cmp(const void * p1, const void * p2) {return (*( int *)p1 - *(int *) p2); } void _swap(void *p1, void * p2, int size) {int i 0;for (i 0; i size; i){char tmp *((char *)p1 i);*(( 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; jcount-i-1; j){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.mzph.cn/web/84986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邦利博客网站怎么做的开发网站代码量

1. 题目 在一个给定的数组nums中,总是存在一个最大元素 。 查找数组中的最大元素是否至少是数组中每个其他数字的两倍。 如果是,则返回最大元素的索引,否则返回-1。 示例 1: 输入: nums [3, 6, 1, 0] 输出: 1 解释: 6是最大的整数, 对于…

黄石做网站的公司正版网站设计制作

这篇文章将展示如何使用Elixir和Phoenix框架构建REST API。 重点将是为持久化到Postgres数据库后端的模型提供CRUD(创建,读取,更新,删除)端点。 我应该警告你; 这是一个简单的例子。 但是,希望它…

如何用iis部署网站wordpress菜单编辑

List是什么?List顾名思义就是列表,那么它具体描述是什么呢?列表是一个线性的集合,它允许用户在任何位置插入、删除、访问和替换元素。在Python中list是保留字,List中的每个元素都有自己的编号,很像C、C、ja…

龙华建设网站公司企业网站设计北京

rz和sz是Linux/Unix同Windows进行Zmodem文件传输的命令工具,都使用Zmodem文件传输协议。 rz(上传命令): 运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器。 (receive zmodem的缩写)…

创世网站lamp 搭建wordpress

iOS11 UICollectionView顶到屏幕顶端会出现一个20高度的白色间隔,是由于UICollectionView的自动调整功能为状态栏留出的位置 只需在创建UICollectionView时加入如下代码关闭自动调整: 该属性是iOS11新加入的,所以一定要在前面加上判断&#x…

电子商务网站建设实训 报告网站你懂我意思正能量晚上在线下载免费软件魅族

记录一下使用docker快速搭建部署hive环境 目录 写在前面 步骤 安装docker 安装docker安装docker-compose配置docker国内镜像源(可选) 安装git & 配置github部署Hive docker-hive开始部署 使用Hive命令行收尾工作 安装vi、lrzsz关闭相关命令 END…

淡水网站建设公司网站开发知识

开学季大礼包9月开学了,作为学生的你,有想过在这个数字化年代,学最cool的技术吗?人工智能,物联网,云计算,还有区块链这些互联网产物影响着你的生活,也影响着你将来的职业发展。不论你…

游戏网站建设与策划网站开发与运营怎么样

【JavaEE】AOP(2) 文章目录 【JavaEE】AOP(2)1. 统一登录校验处理1.1 自定义拦截器1.2 将自定义拦截器加入到系统配置1.3 测试1.4 对于静态资源的处理1.5 小练习:统一登录拦截处理1.6 拦截器原理1.6.1 执行流程1.6.2 源…

郸城网站建设温州市网站建设哪家公司好

目录 1.登录入口 2.点击“账号密码登录” 3.输入账号、密码并点击登录 4.滑块验证过程 5.小结 本次主要是使用selenium模拟登录网页端的TX新闻,本来最开始是模拟请求的,但是某一天突然发现,部分账号需要经过滑块验证才能正常登录&#x…

山东外贸网站推广wordpress 文章打不开

除了上一节讲到的插入table标签,可以使父元素高度确定的多行文本垂直居中之外,本节介绍另外一种实现这种效果的方法。但这种方法兼容性比较差,只是提供大家学习参考。 在 chrome、firefox 及 IE8 以上的浏览器下可以设置块级元素的 display 为…

适合做网站背景音乐网站建设最好的教程

华为手机 鸿蒙系统 或者安卓系统的百度网盘下载的文件保存在手机什么位置如何查看 连接电脑后一般在这里位置 计算机\Mate 20 Pro (UD)\内部存储\Download\BaiduNetdisk 也就是用usb(数据线,不是充电线,要四心的 )连接手机后,打…

网站描述在哪里写关于加强网站建设的建议

碳资产是绿色资产的重要类别,在全球气候变化日益严峻的背景下备受关注。在“双碳”目标下,碳资产管理是企业层面实现碳减排目标和低碳转型的关键。 一、什么是碳资产? 碳资产是以碳减排为基础的资产,是企业为了积极应对气候变化&…

网站备案ps百度广告推广费用年费

域环境共享文件夹-容量配额管理 要求 1/李斯用户配额10G云盘空间,张珊用户配额30G云盘空间 2/D:\ 配额-启用配额-启用配额管理-拒绝将磁盘空间给超过配额限制的用户-勾选 3/将磁盘空间限制为:55GB,将警告等级设为50GB 4/选择该卷的配额记录选项-勾选…

做网站创业需要注册公司吗网站建设开发网站案例项目费用

现在很多页面在使用表单提交时&#xff0c;都会使用到验证码的使用、如何制做一个验证码呢&#xff1f;这里有一个用PHP的方法 以及代码1、首先在php.ini 配置文件里面把GD库打开 // 在php.ini里面找到 extensionphp_gd2.dll 把前面的分号删去。2、代码&#xff1a;<?php …

在青岛做阿里巴巴网站找谁禁用wordpress 昵称

在C语言中&#xff0c;指针通常与字符数组或字符串打交道时会涉及到ASCII码的转换&#xff0c;而不是用于表现多位数的第一位。48这个值对应的是ASCII码表中数字字符0的编码。 如果你有一个表示多位数的字符数组&#xff0c;例如&#xff1a; c char number[] "1234&qu…

办网站用什么证件wordpress无法更换主题

文章目录 一、RDB持久化1、概念2、生成、载入RDB文件3、执行时机&#xff08;1&#xff09; 执行save命令&#xff08;2&#xff09;执行bgsave命令&#xff08;3&#xff09;Redis停机时&#xff08;4&#xff09;触发RDB条件 4、bgsave原理5、小结 二、AOF持久化1、概念2、AO…

做pc端网站精英政务服务中心网站建设实施方案

一、介绍 Intro.js 是一个用于创建网站用户引导、功能介绍和教程的 JavaScript 库。它允许开发者通过步骤和提示突出显示网站上的特定元素&#xff0c;以帮助用户更好地了解和使用网站的功能。以下是 Intro.js 的一些关键特点和用法介绍&#xff1a; 更多Intro.js 功能网址&a…

怎样取消网站备案公司形象墙设计效果图大全

要让大模型更加聪明&#xff0c;可以采取以下方法&#xff1a; 增加数据量&#xff1a;大模型需要足够的数据来学习和理解复杂的问题。通过增加训练数据的数量&#xff0c;可以帮助模型更全面地学习和推理。 提高模型的复杂度&#xff1a;大模型往往有更多的层和参数&#xff…

成都手机网站建设哪网站改版 重定向

这些文档是我在2023年学习owl的时候翻译的官方的英文文档&#xff0c;当然在翻译过程中做了分类整理&#xff0c;总共有十篇&#xff0c;基本上涵盖了owl的方方面面&#xff0c;现在将它们归纳成合集。 关于OWL的中文文档&#xff1a; OWL教程1 OWL架构以及为什么要设计OWL h…

网站推广的策略有哪些代理服务器上外网

实时时钟(RTC)是一种IC&#xff0c;可以跟踪当前时间。微处理器通常可以通过串行接口读取此信息&#xff0c;以方便软件执行与时间有关的功能。RTC专为超低功耗而设计&#xff0c;因为它们通常在主系统断电时仍可继续运行。这样一来&#xff0c;他们就可以根据绝对时间基准(通常…