? 今天學(xué)習了c語言的指針,不得不說c語言的指針真的是一塊難啃的骨頭啊,指針就一直在zu繞回來,繞回去,反復(fù)的套娃,而且今天的代碼,是我寫的最像代碼的代碼,雖然不是我寫的,但是是我照著視頻的思路一個字母一個敲出來的,雖然并沒有完全記住,想要一次性記住似乎是不可能的只有不斷的練習才可以逐漸的掌握,才可以寫出更加有意義的代碼,今天是我學(xué)習C語言的第14天,14天了,時間過得很快,我現(xiàn)在基本上每天都是在學(xué)習,c語言至少學(xué)習3小時,然后還會學(xué)習一些算法,并且還會看一些數(shù)學(xué)的知識,每日看一下高樓,以及這學(xué)期的高樓,睡前看一些哲學(xué)的視頻,給我精神食糧。好像程序的生活沒有我之前認為的那么枯燥無味,現(xiàn)在的我反而認為程序是一種美妙的存在,盡管很多的程序依舊是看不懂,盡管leetcode的算法題目一個都看不懂,但是懷揣著最初的信念,不拋棄不放棄,我還是相信能學(xué)好這一行的,未來就業(yè)應(yīng)該是可以找的到工作的。好的下面進入今天的正題-----指針,代碼內(nèi)容不完全對,有一些錯誤,歡迎指出,非常愿意接受。
創(chuàng)新互聯(lián)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計,高端網(wǎng)站設(shè)計,廣告投放等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,十年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設(shè),成功案例突破超過千家,是您實現(xiàn)網(wǎng)站建設(shè)的好選擇.目錄
1.簡單函數(shù)
2.冒泡排序
3.冒泡排序升級版
先通過一個簡單函數(shù)來引出
#define _CRT_SECURE_NO_WARNINGS 1
#include#include//實現(xiàn)一個計算器可以計算加減乘除
void menu()
{
printf("*******************************\n");
printf("*******1.Sum 2.Sub ******\n");
printf("*******3.Mul 4.Div ******\n");
printf("***********0.exit**************\n");
}
int Add(int x ,int y)
{
return x + y;
}
int Sub(int x,int y)
{
return x - y;
}
int Mul(int x, int y)
{
return x*y;
}
int Div(int x, int y)
{
return x / y;
}
int main()
{
int x = 0;
int y = 0;
int input=0;
do
{
menu();
printf("請輸入:>");
scanf("%d ", &input);
switch (input)
{
case 1:
printf("請輸入兩個操作數(shù):>");
scanf("%d %d", &x, &y);
printf("%d\n", Add(x, y));
break;
case 2:
printf("請輸入兩個操作數(shù):>");
scanf("%d %d", &x, &y);
printf("%d\n", Sub(x, y));
break;
case 3:
printf("請輸入兩個操作數(shù):>");
scanf("%d %d", &x, &y);
printf("%d\n", Mul(x, y));
break;
case 4:
printf("請輸入兩個操作數(shù):>");
scanf("%d %d", &x, &y);
printf("%d\n", Div(x, y));
break;
case 0:
printf("退出");
break;
default:
printf("選擇錯誤");
break;
}
} while (input);
}
這個代碼實現(xiàn)的是計算機的一個功能,首先是一個menu函數(shù),這個是自己定義的,設(shè)計一個菜單,1是加法2是減法3是乘法4是除法0是退出。然后自己定義了四個函數(shù),分別來定義加減乘除,再用一個do while函數(shù)來循環(huán),要有一個input變量來控制循環(huán),循環(huán)內(nèi)部是一個switch函數(shù)有6個分支,可以返回上面的函數(shù)。
2.冒泡排序接下來是一個冒泡排序
#include#includevoid bubble_Solt(int arr[],int sz)
{
int i = 0;
for (i = 0; iarr[j + 1])
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int i = 0;
int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_Solt(arr, sz);
}
這個代碼是先創(chuàng)建個數(shù)組存放數(shù)字,然后再使用sizeof函數(shù)計算數(shù)組一共有多少個元素,并給他們一個下標,把他們放到sz變量上面,最后也是函數(shù)的主體部分,在for循環(huán)里面還有一個for循環(huán)用來控制交換的如果左邊的那個數(shù)比右邊的那個數(shù)大那么就交換一次。這個冒泡排序在前面的文章也介紹過了這里就不作詳細解說了。
3.冒泡排序升級版在冒泡排序的基礎(chǔ)上,我們從只可以對數(shù)進行排序擴展到對字符進行排序,擴展到對小數(shù)進行排序,但是整型數(shù)組只能存放整型,字符數(shù)組只能存放字符,浮點型數(shù)組只能存放浮點型,那么怎么把他們都使用冒泡排序進行傳參調(diào)用呢,
這里就需要回調(diào)函數(shù)和qsort這個函數(shù),這個是我目前學(xué)過最復(fù)雜的代碼,由于今天晚上剛剛學(xué)完,所以我也并沒有完全搞懂,還需要在以后的學(xué)習中才能逐漸搞懂,下面代碼也會有幾個錯誤,歡迎指正
#include#include#includestruct Stu
{
char name[20];
int age;
};
//實現(xiàn)bubble_soft函數(shù)的程序員,他是否知道未來排序的數(shù)據(jù)類型-不知道
//那程序員也不知道帶比較的兩個元素類型
//
void Swap(char* buf1,char* buf2,int width)
{
int i = 0;
for (i = 0; i< width; i++)
{
char tmp = *buf1;
*buf1 = *buf2;
*buf2 = tmp;
buf1++;
buf2++;
}
}
void bubble_soft(void* base, int sz, int width,int (*cmp)(void*e1,void*e2))
{
int i = 0;
//趟數(shù)
for (i = 0; i< sz; i++)
{
int j = 0;
//每一趟比較對數(shù)
for (j = 0; j< sz - 1 - i; j++)
{
//兩個元素的比較
if (cmp((char*)base+j*width,(char*)base+(j+1)*width)>0)
{
//交換
Swap((char*)base + j*width, (char*)base + (j + 1)*width,width);
}
}
}
}
int cmp_int(const void *e1,const void * e2)
{
return *(int*)e1 - *(int*)e2;
}
int cmp_stu_by_age(const void* e1, void* e2)
{
return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
}
int cmp_stu_by_name(const void* e1, void *e2)
{
return strcmp (((struct Stu*)e1)->name,((struct Stu*)e2)->name);
}
void test4()
{
int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
//使用bubble_soft的程序員一定知道自己排序的是什么數(shù)據(jù)
//就應(yīng)該知道如何比較帶排序數(shù)組中的元素
bubble_soft(arr,sizeof(arr[0]),cmp_int);
}
void test5()
{
struct Stu s[3] = { {"zhangsan",19}, {"lisi",12}, {"wangwu",14} };
int sz = sizeof(s) / sizeof(s[0]);
bubble_soft(s,sz,sizeof(s[0]),cmp_stu_by_age);
bubble_soft(s, sz, sizeof(s[0]), cmp_stu_by_name);
}
int main()
{
test4();
test5();
system("pause");
return 0;
}
總結(jié):只有不斷的努力才能成功,做自己喜歡的事,讓別人說去吧。自由?。?!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧