//函式
// 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 此時效果如下...