目錄
1.求斐波那契數列前40項
2.求連續子陣列的最大和
3.輾轉相處,求最大公約數
4.判斷大小端
5.大小端的轉換
6.int型別 指標 float 和零值如何比較
7.對指標的理解
8.const 和 define 區別??
9.求字串單詞個數
10.回文字串
11.here is tulun ==>tulun is here
12.二分法查元素
解題思路:將前兩項初始化為1,從第三項開始進行計算。
void fabonacio(int *arr,int len)
}void show(int *arr,int len)
printf("\n");
}int main()
; int len = sizeof(arr)/sizeof(arr[0]);
fabonacio(arr,len);
show(arr,len);
return 0;
}
int job(int n)
if(n==1)
else }
int main()
void job1(int arr,int n)//傳遞陣列和陣列所包含元素個數
} }return max;
}int maxnum2(int *arr,int len)
else
if(sum > max)
}return max;
}int main()
; int len = sizeof(arr)/sizeof(arr[0]);
int max = maxnum2(arr,len);
printf("%d\n",max);
return 0;
}
int fun(int m,int n)//輾轉相處,求最大公約數
return n;
}
bool isbig()
else
}
聯合體判斷大小端
union data
;void job(data test)
else
}
解題思路:聯合體共用一塊記憶體,同一時間只儲存乙個資料
void job(char *p,int len)
int main()
解:
(1)int型別:
int i=0;
if(i==0);if(i!=0);
直接和0比較就好。
(2)指標:
int *p=null;
if(null==p);if(null!=p);
為什麼要這樣寫,因為1.怕漏寫乙個'=';2.null表示的是記憶體中的起始位址,即0x00000000。null在數值上==0;
(3)float型別:
float a=0.0;
if((a>=-epsinon)&&(a<=epsinon));
因為float和double是有精度限制的,不能夠直接拿來和0.0進行比較。必須設定乙個精度範圍,而假設epsinon是乙個定義好的精度,如果乙個數能夠落在[0.0-epsinon,0.0+epsinon]這個區間之內,則說明在某個精度內與零值相等。
(4)bool型別:
bool flag=false;
if(flag);if(!flag);
bool型別本身返回的就是true或false,1或者0。所以在與「零值」判斷時直接使用變數本身。
但有的編譯器對true定義的不是1,所以要初始化乙個0,判斷0和非0即可。
一般情況下對bool型別的初始化都為false,這是因為如果不進行初始化,預設的位址是隨機分配的,即非0值,所以要對bool進行初始化,並賦值為false。
在定義指標時我們常寫成int a=5;int *p;p=&a;這個東西就弄的我很茫然,有時候書上又會出現一句「int *p=5;」我根本分不清他們兩者之間的區別。而在***的書上說的他們是一樣的。但其實他們真的是不一樣,定義int *p;這樣寫應該是為了好看,它實際應該寫成int* p;這樣的定義才能讓人理解這是定義了乙個指向int型的指標,它叫做p,這個p只能放位址,如果你寫成了"int *p=5;"這個5就會被當做是位址處理。定義指標時要初始化給null,這是因為在編譯其中null就表示的是記憶體的其實位址,也就是0x00000000.它的作用就是初始化指標變數,不讓指標變數指向乙個非法的位址。
解:const修飾的是"唯讀的變數",其值在編譯時不能被使用。所以可以理解為const==readonly。
const修飾的唯讀變數是在編譯的時候確定其值,而define巨集定義是在預編譯的時候進行替換。
const修飾的唯讀變數有型別,而define巨集定義沒有,只是常數。
編譯器會給const修飾的唯讀變數做型別校驗,減少錯誤的可能,而define巨集定義沒有。
編譯器不為const修飾的唯讀變數分配儲存空間,而將它們儲存在符號表中,唯讀變數在執行中只有乙份備份;
而define巨集定義在記憶體中有若干個備份。
const修飾的唯讀變數必須在定義的同時初始化,因為const修飾的是唯讀變數只能讀,不能寫。在定義之後就不能再進行修改,所以要定義的同時初始化。
int job(char *str)
} if(*pend==' '&&*(pend+1)!=' '&&*(pend+1)!='\0')//記錄兩個詞中間的空格,且只記錄一次,考慮最後的'\0'。
pend++;
} return sum+1;
}int main()
解題思路:在字串中,判斷他們有多少個空格(兩個詞中必有空格),記錄空格數。
//"abcba"===》回文字串
//思路:*pbegin *pend如果他倆值得數一直相等,則他就是乙個回文數
void fun(const char *str)
pend--;
while(pbegin解題思路:*pbegin *pend如果他倆值得數一直相等,則他就是乙個回文數。
/*一級指標存放的是變數的位址,二級指標存放的是一級指標的位址
*/void reverse(char *pbegin,char *pend)
else
else
}} return -1;
}int main()
; int len=sizeof(arr)/sizeof(arr[0]);
printf("%d\n",binarrserach(arr,len,4));
printf("%d\n",binarrserach(arr,len,10));
return 0;
}
int job1(int *arr,int low,int high,int key)//設定指向第乙個元素的下標low和最後乙個元素的下標high
else
else
}}int main()
; job1(arr,0,4,4);
return 0;
}
大魔王程式設計師生成記 01 C語言基礎
預處理指令。include 或者 define c編譯系統在對源程式編譯之前,先由乙個預編譯器進行處理,將stdioo.h標頭檔案的內容讀出來,放在 include指令行。stdio.h 檔案裡面包含了很多的函式供程式設計師直接使用,例如printf 和scanf 開頭的,都稱為預處理指令。程式總是...
大魔王程式設計師生成記 05 C語言基礎 陣列2
1.sizeof arr 整個陣列的位元組大小 2.arr 1 陣列最後乙個元素的後面 1.可以通過下標去訪問。2.通過指標的形式訪問。在如下 中 int arr 5 int p arr int a p 3 int a p 3 p arr 相當於將陣列首元素的首位址付給了指標變數p。a p 3 相當...
C語言程式設計師的自述
作為乙個c語言程式設計師,我很自豪,可以做任何事情。作為乙個c語言學習者,會問很多問題,為什麼c語言做不到這個,做不到那個?不要問為什麼不能彈出乙個messagebox,不,那不是c語言的內容,也不要問為什麼不能在螢幕上繪出乙個線條或者別的什麼圖案,c語言可以在任何地方繪製,只要那裡有個螢幕,有相關...