大魔王程式設計師生成記 06 1 C語言習題

2021-08-31 03:40:12 字數 3697 閱讀 3529

目錄

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語言可以在任何地方繪製,只要那裡有個螢幕,有相關...