前期C語言回顧 函式

2021-06-26 23:30:28 字數 4273 閱讀 7107

//函式

// printf()輸出函式,用於輸出乙個資訊

printf

("輸出函式\n");

// scanf()輸入函式,用於從鍵盤輸入乙個資訊

int a = 0;

scanf("%d", &a);

// strlen()求字串長度函式,用於求出指定字串的長度

unsigned

long strlength = strlen("i love you");

printf

("strlength = %lu\n", strlength);

// strcpy()字串拷貝函式,用於實現字串的賦值

char str1 = "i like ios";

char str2 = "";

strcpy(str2, str1);

printf("str2 = %s\n", str2);

// 以上總結:

// 這些都是函式,都實現了某一特定的功能,並且這些函式都是系統提供了,我們除了使用系統提供的函式之外,我們也可以使用自定義的函式

// 那麼,什麼是函式呢?

答:函式是具有某段功能的**片段

// 通俗的講:我們把一連串得語句放在一起,實現了某乙個功能,然後我們給這些**起乙個名字。之後我們想使用這段**的時候直接使用他們的名字

// 使用函式,可以省去大量的重複**,大大簡化程式,提高我們的開發效率

// 函式的分類

// 從函式的定義上來區分,函式可以分為兩類函式

// 庫函式:系統提供的函式,例如:printf() / scanf() / strlen() ...

// 自定義函式:開發者自己寫的函式

// 庫函式我們直接拿過來使用就可以了,那麼,我們如何自己寫函式???呢

// 函式的一般形式

// 返回值型別 函式名(形式引數列表)

// // 返回值型別: 函式可以有乙個返回值,也可以沒有,函式處理完之後,返回給你乙個資訊,你可以接收後使用,這個資料是函式給我們的

// 函式名: 我們可以寫很多的函式,如何區別出這些函式,我們就可以給函式命不同的名字,使用函式名找到函式

// 形式引數列表: 讓函式處理一些資料,我們使用引數的方式傳遞給函式,這裡的資料是我們給函式的

// 執行語句: 函式拿到資料後,進行處理,主要是函式的內部實現語句

// return 返回值: 函式處理好資料之後,需要把結果返回。!注意:這裡的返回值型別,需要與上面標註的返回值型別一致

// 函式如果細緻分的話可以分為4種:

// 1. 無返回值無引數

// 2. 無返回值有引數

// 3. 有返回值無引數

// 4. 有返回值有引數

// 例如: //

無返回值,無函式(功能:列印

hello world !)

void hello1()

// 無返回值,有引數(功能:輸出引數內容)

void hello2(char str)

// 有返回值,無引數(功能:返回圓周率π的值)

float pi()

// 有返回值,有引數(功能:計算兩個引數的和並返回)

int sum(int a, int b)

// 再來解釋下什麼是返回值:

// 函式的返回值稱為函式的值,只能通過return語句返回給主調函式

// 注意:乙個函式只能有乙個返回值

// 如果乙個函式沒有返回值,也可以使用return語句來結束函式的執行,return後面的**不再執行。回到主調函式

// 寫好了函式,下面開始使用函式了,也就是函式的呼叫。想一下,庫函式是如何使用的?

printf

("形式引數列表");

// 上面的**是呼叫了系統提供的輸出函式,直接是函式名+小括號+傳遞的資料+小括號+分號

// 我們自己寫的函式呼叫方式也是一樣的

hello1();

hello2

("形式引數列表");

// 當**執行到函式的呼叫的時候,就會去執行函式內部的**,當函式內部執行完畢之後,再回來繼續執行函式下面的**

// 我們成功的呼叫了函式,那麼,我們就給函式一些資料,讓函式幫助我們處理資料,how do?

// 提到了引數,其實是分為兩種的:

// 1. 實參(實際引數):出現在函式呼叫中的表示式

// 2. 形參(形式引數):出現在函式定義中,以假名字來表示函式呼叫時需要提供的值

// 注意:在函式呼叫中,形參會拷貝實參內容,傳遞引數是給函式傳送資訊的一種方式

// 1、編寫函式int sumvalue(int n):計算1到n的和。

int sumvalue(int n)

return result;

}

// 2、編寫函式dayofyear(year, mouth,day),使得函式返回由這三個引數確定的那一天是一年中的第幾天。

int dayofyear(int year, int month, int day)

; bool isbis***tile = (year % 400 == 0) || (year % 4 == 0 && year % 1 != 0);

days[1] = isbis***tile ? 29 : 28;

for (int i = 0; i < month - 1; i++)

result += day;

return result;

}

// 3. 編寫函式,返回三個數的中間數

int midvalue(int a, int b, int c)

// implicit declaration of function'midvalue' is invalid in c99

// 暗示的

宣布、宣告、宣告

函式無效的

// 函式是需要宣告的???

// 嚴格意義上來講,函式通常包含3部分:函式宣告、函式定義、以及函式的呼叫

// 函式宣告:指的就是函式的描述,也叫函式原型

// 函式宣告的位置:

// 1. 函式定義放在主函式的上面,不需要函式的宣告

// 2. 函式定義放在主函式的下面,需要函式的宣告

// 注意:函式宣告雖然可以省略,但是在規範上來講,函式的宣告盡量加上

// 重點!!!!

// 函式宣告的檔案和位置:

// 我們把函式的宣告和定義分別放在不同的檔案中

// ***.h:標頭檔案:

存放函式的宣告部分

// ***.m:實現檔案:

存放函式的定義部分

// 注意:需要在***.m檔案中

// 陣列作為函式引數

// 如果是陣列元素作為引數:與普通變數一樣

// 如果是陣列作為引數,把陣列名傳入,即陣列的首位址

// 注意,此時,形參和實參實際上是同乙個變數,是同一段記憶體

// 函式的巢狀呼叫

// c語言不允許函式巢狀定義,但是允許函式巢狀呼叫

// 注意:避免出現函式的巢狀定義

// 練習3:求n個數的最大值

int aaa = ;

printf("\nmaxvalue = %d", maxvalue(aaa, 5));

// 練習3,求n個數的最大值

int maxvalue(int arr, int count)}}

return arr[0];

}

// 練習4

// 計算 s = (1*1)!+(2*2)! + (3*3)!

// 練習4,求乙個數的階乘

int square(int a)

int factorial(int a)

return result;

}

// 函式的遞迴呼叫(了解即可)

// c語言允許函式實現體內再次呼叫函式本身。這種呼叫方式稱為遞迴呼叫,這個函式稱為遞迴函式

// 在計算機中階乘就可以使用遞迴呼叫

// 注意:遞迴一定要有出口

// 變數的作用域

// 變數分為兩種:全域性變數、區域性變數

// 全域性變數(外部變數):檔案作用域,從變數被宣告的點開始一直到所在檔案的末尾

// 區域性變數:塊作用域,從變數被宣告的點開始一直到第乙個大括號的結尾處

// 定義在函式外面的都稱為全域性變數,作用域很大

// 區域性變數就是定義在函式大括號內部的變數

前期C語言回顧 迴圈結構

迴圈的3中方式 1.while迴圈 2.do.while迴圈 3.for迴圈 程式的結構 1.順序結構 2.分支結構 使用if switch來實現 3.迴圈結構 使用while do.while for來實現 while迴圈的使用 while 條件表示式 當 條件表示式 成立的時候,語句就會反覆的執...

CSS CSS前期回顧(3)

1 再在與並列的地方增加如下html內容 這是正文 效果如下 2 設定外層的continer居中對齊,並設定固定寬度為758,與上面的標題選單等寬 continer 這裡又引入了幾個背景影象,分別為 1 background 2 cols.gif 通過這個影象的豎直方向擴充套件,很容易形成如下效果 ...

CSS CSS前期回顧(1)

在前兩天學習了 定位 浮動 背景 和 超連結 等設定,在此做乙個頁面以對前幾天的知識進行總結回顧。1 html的header部分 品質服務 婚嫁論壇 社群 旗下品牌 a 2 鏈結css檔案 3 css部分 1 對body元素整體設定 body 2 設定header塊的顯示 header 此時效果如下...