(三)課堂練習 - 計算階乘之和
三、引數傳遞
(二)位址傳遞
四、遞推演算法與遞迴演算法
宣告函式(只有函式頭:函式名、形式引數、返回值)
定義函式(包含函式頭和函式體)
呼叫函式(通過函式名加實際引數來呼叫)
/*
功能:編寫函式求三個整數最大值
日期:2023年5月8日
*/#include
"stdio.h"
// 第1步:宣告函式
intmax
(int a,
int b,
int c)
;// a, b, c叫做形式引數,簡稱形參或虛參
void
main()
// 第2步:定義函式
當呼叫函式傳入的實際引數是常量、簡單變數或表示式,此時採用值傳遞的方式,也就是實際引數的值傳給形式引數後,不會受形式引數變化的影響。值傳遞是一種單向的資料傳遞。
當實際引數是常量或表示式的時候,值傳遞很好理解,只是把資料傳給形式引數就了事,不會接受形式引數變化的影響。因此,我們只演示實際引數是變數時的值傳遞。
/*
功能:值傳遞演示
日期:2023年5月13日
*/#include
"stdio.h"
// 1、宣告函式
intchange
(int x)
;void
main()
// 2、定義函式
intchange
(int x)
當呼叫函式傳入的實際引數是陣列時,採用位址傳遞方式,也就是說形式引數(陣列)值發生變化,會反過來影響實際引數(陣列)。位址傳遞是一種雙向傳遞。
/*
功能:位址傳遞演示
日期:2023年5月13日
*/#include
"stdio.h"
// 1、宣告函式
void
reverse
(int a,
int n)
;void
main()
;// 輸出部分
printf
("原序:");
for(i =
0; i <
10; i++
)printf
("\n");
// 處理部分
reverse
(b,10);
// 輸出部分
printf
("反序:");
for(i =
0; i <
10; i++)}
// 2、定義函式(功能:陣列反序)
void
reverse
(int a,
int n)
}
從已知向未知不斷拓展的思想方式。
從未知向已知不斷回歸的思想方式。
(1)採用遞推方式來計算 n!
起點:1! = 1
2! = 1! * 2
3! =2! * 3
……終點:n! = (n-1)! * n
(2)採用遞迴方式來計算 n!
起點:n! = (n-1)! * n
(n-1)! = (n-2)! * (n-1)
(n-2)! = (n-3)! * (n-2)
……終點: 1! = 1
/*
功能:採用遞推和遞迴方式計算階乘
日期:2023年5月13日
*/#include
"stdio.h"
// 1、宣告函式
intjc_recurrence
(int n)
;int
jc_recursion
(int n)
;void
main()
// 2、定義函式
// 遞推方式計算階乘函式
intjc_recurrence
(int n)
return jc;
}// 遞迴方式計算階乘函式
intjc_recursion
(int n)
else
return jc;
}
C講課筆記 結構體
二 案例演示 二 使用指標指向結構體 結構體型別 是由不同資料型別變數組成的集合體,相當於其它高階語言中的記錄。結構體型別的資料由若干稱為 成員 的資料組成,每個成員既可以是乙個基本資料型別的資料,也可以是另乙個構造型別的資料。struct 型別名 以上整個部分是乙個資料型別,與整型的int是同樣地...
C 筆記 函式 筆記
在標頭檔案中進行函式宣告 建議變數和函式應該在標頭檔案中宣告,在原始檔中定義。使用引用避免拷貝 如果函式無須改變引用形參的值,最好將其宣告為常量引用。比較兩個string物件的長度 bool isshorter const string s1,const string s2 表示陣列大小的形參voi...
C 函式 筆記
內聯函式只適用於小函式,使用內聯函式需要注意以下幾點 內聯函式中不能含有任何迴圈語句以及switch和goto語句 內聯函式的宣告必須出現在內聯函式第一次被呼叫之前 內聯函式中不能說明陣列 遞迴函式不能定義為內聯函式 函式過載 函式引數個數或型別不同,可以構成過載函式 生命期 是指乙個識別符號從被建...