中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

畢設代做網(wǎng)站深圳網(wǎng)絡營銷推廣方案

畢設代做網(wǎng)站,深圳網(wǎng)絡營銷推廣方案,做免費看電影的網(wǎng)站不違法嗎,網(wǎng)站建設增城文章目錄 一、回調(diào)函數(shù)二、qsort使用舉例2.1使用qsort函數(shù)排序整型數(shù)據(jù)2.2使用qsort函數(shù)排序結構體數(shù)據(jù) 三、qsort函數(shù)的模擬實現(xiàn) 一、回調(diào)函數(shù) 首先我們先來了解一下什么是回調(diào)函數(shù) 回調(diào)函數(shù)通俗來講就是一個通過函數(shù)指針調(diào)用的函數(shù)。 如果你把函數(shù)的指針(地址&am…

文章目錄

  • 一、回調(diào)函數(shù)
  • 二、qsort使用舉例
    • 2.1使用qsort函數(shù)排序整型數(shù)據(jù)
    • 2.2使用qsort函數(shù)排序結構體數(shù)據(jù)
  • 三、qsort函數(shù)的模擬實現(xiàn)

一、回調(diào)函數(shù)

首先我們先來了解一下什么是回調(diào)函數(shù)

回調(diào)函數(shù)通俗來講就是一個通過函數(shù)指針調(diào)用的函數(shù)。

如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調(diào)用其所指向的函數(shù)時,被調(diào)用的函數(shù)就是回調(diào)函數(shù)?;卣{(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時由另外的一方調(diào)用的,用于對該事件或條件進行響應。

先來看看下面的代碼,想一想有沒有可以用回調(diào)函數(shù)的方法來進行改進的地方。

//使用回調(diào)函數(shù)改造前
#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("輸入操作數(shù):");scanf("%d %d", &x,&y);ret = add(x, y);printf("ret = %d\n",ret);break;case 2:printf("輸入操作數(shù):");scanf("%d %d", &x,&y);ret = sub(x, y);printf("ret = %d\n",ret);break;case 3:printf("輸入操作數(shù):");scanf("%d %d", &x,&y);ret = mul(x, y);printf("ret = %d\n",ret);break;case 4:printf("輸入操作數(shù):");scanf("%d %d", &x,&y);ret = div(x, y);printf("ret = %d\n",ret);break;case 0:printf("退出程序\n");break;default:printf("選擇錯誤\n");break;}} while (input);return 0;
}

可以看到,在這段代碼里面,輸入操作數(shù),函數(shù)調(diào)用,打印結果這些地方總是在重復的進行,因此我們可以把調(diào)用的函數(shù)的地址以參數(shù)的形式傳遞過去,使用函數(shù)指針接收,函數(shù)指針指向什么函數(shù)就調(diào)用什么函數(shù),這里其實使用的就是回調(diào)函數(shù)的功能。

修改代碼如下:

//使用回調(diào)函數(shù)改造后
#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("輸入操作數(shù):");scanf("%d %d", &x, &y);ret = pf(x, y);printf("ret = %d\n", ret);
}
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: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;
}

二、qsort使用舉例

qsort函數(shù)是一個用來排序的函數(shù),默認情況下是由小到大排序。并且qsort函數(shù)可以排序任意類型的數(shù)據(jù)比如:整型,浮點型,結構體等等都可以。

使用這個函數(shù)需要傳入四個參數(shù):

  • 需要排序的數(shù)組的第一個元素的指針
  • 數(shù)組的長度
  • 每個元素的字節(jié)大小
  • 比較兩個元素的函數(shù)的指針

下面是兩個用qsort函數(shù)進行排序的例子。

2.1使用qsort函數(shù)排序整型數(shù)據(jù)

#include <stdio.h>
//qosrt函數(shù)的使用者得實現(xiàn)一個比較函數(shù)
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函數(shù)排序結構體數(shù)據(jù)

#include <string.h>
#include <stdlib.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 - 是庫函數(shù),是專?用來?較兩個字符串的大小的
//假設按照名字來比較
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;
}

三、qsort函數(shù)的模擬實現(xiàn)

使用回調(diào)函數(shù),模擬實現(xiàn)qsort函數(shù)(采用冒泡排序的方式,原來的qsort函數(shù)采用的是快速排序的方式)

我們要從觀察原有的函數(shù)開始來進行模擬實現(xiàn)

首先,原來的函數(shù)的聲明是這樣的:

void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*));

說明:

  • 函數(shù)沒有返回值(那是肯定的呀,因為我們只需要這個函數(shù)能夠?qū)⑽覀冃枰膬?nèi)容排好序就行了)。
  • 函數(shù)的第一個參數(shù)是一個沒有類型的指針,用來指向需要排序的數(shù)組的第一個元素(因為不知道使用這個函數(shù)的人需要排元素類型是是什么的數(shù)組)。
  • 第二個參數(shù)是一個無符號整數(shù)類型(因為個數(shù)肯定是正的,所以用無符號整數(shù)類型),是指數(shù)組的元素個數(shù)。
  • 第三個參數(shù)也是一個無符號整數(shù)類型(元素的字節(jié)大小肯定也是正整數(shù)),是指數(shù)組中每個元素的字節(jié)大小(當我們知道字節(jié)大小后就可以知道這個元素所占的空間大小了。這樣我們在函數(shù)實現(xiàn)時,元素的交換,就可以知道交換多大的字節(jié)空間了)。
  • 第四個參數(shù)是一個函數(shù)的指針,這個指向的函數(shù)是用來比較數(shù)組元素之間的大小的。

代碼如下:

#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; j < count - 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.risenshineclean.com/news/21799.html

相關文章:

  • 做網(wǎng)站能賺多少丈哥seo博客
  • 自己做個網(wǎng)站需要幾個軟件推廣接單平臺
  • 自己做網(wǎng)站代理產(chǎn)品網(wǎng)絡營銷的概念和含義
  • 哪個網(wǎng)站做海外代購磁力貓torrentkitty官網(wǎng)
  • 住房和城鄉(xiāng)建設部網(wǎng)站造價網(wǎng)絡優(yōu)化行業(yè)的發(fā)展前景
  • 17做網(wǎng)站廣州沙河品牌營銷策劃方案怎么做才好
  • 2015微信網(wǎng)站百度官網(wǎng)推廣
  • 外發(fā)加工網(wǎng)站哪個靠譜整站優(yōu)化快速排名
  • 如何做好網(wǎng)站管理工作pc端百度
  • 如何自己免費建網(wǎng)站哪些平臺可以做推廣
  • 鄭州網(wǎng)站制作推廣公司抖音推廣合作方式
  • 做影視網(wǎng)站有什么風險如何讓百度收錄
  • 江蘇宏澄建設有限公司網(wǎng)站百度秒收錄技術最新
  • 百度關鍵詞優(yōu)化多少錢seo優(yōu)化技術教程
  • 樹在線網(wǎng)頁制作網(wǎng)站今日足球最新預測比分
  • 數(shù)據(jù)資源網(wǎng)站如何做企業(yè)策劃咨詢公司
  • 想讓一個網(wǎng)站上線需要怎么做營銷手機系統(tǒng)安裝
  • 可以做外鏈的圖片網(wǎng)站成都網(wǎng)絡營銷推廣公司
  • 如何做視頻網(wǎng)站流程圖關于營銷的最新的新聞
  • 專做電器的網(wǎng)站域名注冊阿里云
  • 163企業(yè)郵箱收費標準一年多少錢上海谷歌seo推廣公司
  • iis7.5 部署網(wǎng)站寄生蟲seo教程
  • 做素描的網(wǎng)站百度排名點擊軟件
  • wordpress插件更新保留修改寧波優(yōu)化推廣選哪家
  • 有沒有免費做網(wǎng)站的百度電話客服24小時人工服務熱線
  • 得力文具網(wǎng)站建設策劃書2023搜索最多的關鍵詞
  • 武漢光谷新聞最新消息上海專業(yè)的seo推廣咨詢電話
  • 網(wǎng)站建設最貴服務商企業(yè)培訓系統(tǒng)
  • 怎樣可以做網(wǎng)站培訓機構網(wǎng)站制作
  • 商城網(wǎng)站 報價 方案優(yōu)化建站