C語言複習鞏固(四) 函式

2021-10-01 16:49:53 字數 1477 閱讀 3647

函式(function) 通過實參(argument)初始 形參(parameter) 執行完函式體(function body) 返回(return value)乙個值。(或者不返回)

提供給大家乙個學習庫函式的**:

比如我們常用的

int main()

float f(int x)

int main()例1:

#include#includeint main()
arr陣列在經過strcat後變成了"hello world" 

我們知道strlen讀取的長度是11(不懂為什麼可以按照我給的**去查strlen ,strcat的用法,裡面說的很到位)

例2:

#includeint max(int a,int b)

int main()

最後輸出是7(其實直接看誰最大就好了,不知道原理也沒事)

例3:

#includeint main()
我們從最內層開始看起:

printf("%d,43")它會輸出 43  

printf函式會返回它列印的字元數  所以它返回 2

printf("%d",2);

這時列印 2  返回 1

printf("%d",1);

列印 1 返回 1

同理最外層會列印1

所以最總結果是:43211

總結一下:鏈式訪問需要關注函式的返回值

程式呼叫自身的程式設計技巧稱為遞迴( recursion)

1.存在限制條件,當滿足這個限制條件的時候,遞迴便不再繼續。

2.每次遞迴呼叫之後越來越接近這個限制條件

舉個例子:

求第 n 個斐波那契數列

先用陣列法

以我的經驗 普通的做法往往能給遞迴法找到規律

#includeint main();

int i = 0;

int n = 0;

arr[0] = 1;

arr[1] = 1;

printf("你想知道斐波那契而數列的第幾個數:\n");

scanf("%d",&n);

if(n==1 || n==2)

printf("第 %d 個斐波那鍥數列是 %d",n,1);//兩類情況分開討論一下

else

int main()

但是遞迴法做有的問題並不聰明==(比如這個問題)

因為如果給的n很大它會重複計算很多次,不斷呼叫意味著更大的空間。可能造成棧溢位(stack overflow)

所以下面這個做法也許是解決這一類問題的好做法

迭代法:

#includeint main()

printf("%d",thi);

}

----------本篇結尾----------

謝謝**,有什麼問題請指出!

C語言複習 四

字串是乙個以null結尾的字元陣列 字串的常見函式 strcpy s1,s2 複製s2到s1 strcat s1,s2 連線字串s2到s1的末尾 strlen s1 獲得s1的長度 strcmp s1,s2 如果s1 s2,返回0 如果s1s2,返回大於0 strchr s1,ch 返回乙個指標,指...

《C語言複習 函式》

一 函式 二 庫函式 三 自定義函式 四 函式呼叫 五 函式的宣告和定義 六 函式遞迴 函式是一組一起執行乙個任務的語句。每個 c 程式都至少有乙個函式,即主函式main 所有簡單的程式都可以定義其他額外的函式。您可以把 劃分到不同的函式中。如何劃分 到不同的函式中是由您來決定的,但在邏輯上,劃分通...

C語言基礎鞏固

基本資料型別 1 基本型別 c語言基本資料型別 char,int,float,double.c語言規定可以在基本資料關鍵字前面加上以下這些修飾符 signed,unsigned,short,long.來擴充套件基本資料型別的數值範圍,或提高基本資料型別的資料精度。c語言還有乙個特殊的資料型別 voi...