freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言考試復(fù)習(xí)要點(diǎn)-資料下載頁

2025-01-12 07:45本頁面
  

【正文】 交換兩個(gè)數(shù) /**/ include main() { int x=7,y=11。 printf(x=%d,\ty=%d\n,x,y)。 printf(swapped:\n)。 swap(x,y)。 printf(x=%d,\ty=%d\n,x,y)。 } swap(int a,int b) { int temp。 temp=a。 a=b。 b=temp。 } 7 11 x: y: 調(diào)用前: 調(diào)用結(jié)束: 7 11 x: y: 調(diào)用: 7 11 a: b: 7 11 x: y: swap: 7 11 x: y: 11 7 a: b: temp 函數(shù)的調(diào)用 函數(shù)調(diào)用的一般形式 前面已經(jīng)說過,在程序中是通過對函數(shù)的調(diào)用來執(zhí)行函數(shù)體的,其過程與其它語言的子程序調(diào)用相似。 C語言中,函數(shù)調(diào)用的一般形式為: 函數(shù)名 (實(shí)際參數(shù)表 ) 對無參函數(shù)調(diào)用時(shí)則無實(shí)際參數(shù)表 ,但括號不能省。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù),變量或其它構(gòu)造類型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號分隔。 說明: 1. 實(shí)參與形參 個(gè)數(shù)相等,類型一致,按順序一一對應(yīng)。 2. 實(shí)參表求值順序,因系統(tǒng)而定( Turbo C 自右向左 ) 。 被調(diào)用函數(shù)的聲明和函數(shù)原型 ? 在主調(diào)函數(shù)中調(diào)用某函數(shù)之前 應(yīng)對該被調(diào)函數(shù)進(jìn)行 說明(聲明) 。說明的目的是使編譯系統(tǒng)知道被調(diào)函數(shù)返回值的類型及其所需實(shí)參的情況,以便在主調(diào)函數(shù)中檢查實(shí)參是否正確、并指定類型對返回值作相應(yīng)的處理。 其一般形式為: 類型說明符 被調(diào)函數(shù)名 (類型 形參,類型 形參 … ); 或?yàn)椋? 類型說明符 被調(diào)函數(shù)名 (類型,類型 … ); 括號內(nèi)給出了形參的類型和形參名,或只給出形參類型。這便于編譯系統(tǒng)進(jìn)行檢錯(cuò),以防止可能出現(xiàn)的錯(cuò)誤。 注意“聲明”和“定義”的不同?。? 這就是函數(shù)原型,可在編譯階段對調(diào)用函數(shù)的合法性進(jìn)行檢查 這就是函數(shù)原型,可在編譯階段對調(diào)用函數(shù)的合法性進(jìn)行檢查“聲明”是動(dòng)詞;“函數(shù)原型”是名詞。 我們是用“函數(shù)原型”去對函數(shù)進(jìn)行“聲明”。 對函數(shù)聲明的幾點(diǎn)說明 1. 如果被調(diào)函數(shù)的返回值是整型或字符型時(shí),可以不對被調(diào)函數(shù)作說明,而直接調(diào)用。這時(shí)系統(tǒng)將自動(dòng)對被調(diào)函數(shù)返回值按整型處理。但此種情形將不檢查參數(shù)類型和個(gè)數(shù)。(不建議使用) 2. 當(dāng)被調(diào)函數(shù)的函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前時(shí),在主調(diào)函數(shù)中也可以不對被調(diào)函數(shù)再作說明而直接調(diào)用。因?yàn)橄到y(tǒng)在編譯時(shí)已經(jīng)知道函數(shù)的相關(guān)信息。 int max(int a,int b) { if(ab)return a。 else return b。 } main() { int max(int a,int b)。 int x,y,z。 printf(input two numbers:\n)。 scanf(%d%d,amp。x,amp。y)。 z=max(x,y)。 printf(maxmum=%d,z)。 } 右例中,函數(shù) max的定義放在main 函數(shù)之前,因此可在 main函數(shù)中省去對 max函數(shù)的函數(shù)說明 int max(int a,int b)。 { 3. 如在所有函數(shù)定義之前,在函數(shù)外預(yù)先說明了各個(gè)函數(shù)的類型,則在以后的各主調(diào)函數(shù)中,可不再對被調(diào)函數(shù)作說明。 對函數(shù)聲明的幾點(diǎn)說明 char str(int a)。 float f(float b)。 main() { …… } char str(int a) { …… } float f(float b) { …… } 其中第一,二行對 str函數(shù)和 f函數(shù)預(yù)先作了說明。因此在以后各函數(shù)中無須對 str和 f函數(shù)再作說明就可直接調(diào)用。 4. 對庫函數(shù)的調(diào)用不需要再作說明,但必須把該函數(shù)的頭文件用 include命令包含在源文件前部。 (例) 本題可編寫三個(gè)函數(shù),兩個(gè)分別是用來求三個(gè)數(shù)中最大、最小值的函數(shù) max和 min,另一個(gè)是用來計(jì)算差值的函數(shù) dif。主函數(shù)調(diào) dif計(jì)算差值,在 dif中先以三個(gè)數(shù)為實(shí)參,分別調(diào)用 max和 min求最值,然后返回 dif, 再返回主函數(shù),得出結(jié)果。 例 求三個(gè)數(shù)中最大數(shù)和最小數(shù)的差值 main( ) 調(diào)用函數(shù) dif 輸出 結(jié)束 dif函數(shù) max函數(shù) 調(diào)用函數(shù) max 調(diào)用函數(shù) min min函數(shù) ? 一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱為遞歸調(diào)用 。這種函數(shù)稱為遞歸函數(shù)。C語言允許函數(shù)的遞歸調(diào)用。 在遞歸調(diào)用中,主調(diào)函數(shù)又是被調(diào)函數(shù)。 執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進(jìn)入新的一層。 例如有函數(shù) f如下: int f(int x) { int z。 z=x*f(x1)。 return z。 } ? 這個(gè)函數(shù)是一個(gè)遞歸函數(shù)。但是運(yùn)行該函數(shù)將無休止地調(diào)用其自身,這當(dāng)然是不正確的。 為了防止遞歸調(diào)用無終止地進(jìn)行 ,必須在函數(shù)內(nèi)有終止遞歸調(diào)用的手段。 常用的辦法是加條件判斷,滿足某種條件后就不再作遞歸調(diào)用 ,然后逐層返回。 (地址傳遞) 1. 用數(shù)組名作函數(shù)參數(shù)時(shí),則要求形參和相對應(yīng)的實(shí)參都必須是類型相同的數(shù)組,都必須有明確的數(shù)組說明。當(dāng)形參和實(shí)參二者不一致時(shí),即會發(fā)生錯(cuò)誤。 2. 在用數(shù)組名作函數(shù)參數(shù)時(shí),不是進(jìn)行值的傳送,實(shí)際上形參數(shù)組并不存在,編譯系統(tǒng)也不為形參數(shù)組分配內(nèi)存。那么,數(shù)據(jù)的傳送是如何實(shí)現(xiàn)的呢 ?在我們曾介紹過,數(shù)組名就是數(shù)組的首地址。 因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送,也就是說把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。 形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。實(shí)際上是形參數(shù)組和實(shí)參數(shù)組為同一數(shù)組,共同擁有一段內(nèi)存空間。在定義函數(shù)時(shí)可以不考慮形參數(shù)組的長度。 3. 前面已經(jīng)討論過,在變量作函數(shù)參數(shù)時(shí),所進(jìn)行的值傳送是單向的。即只能從實(shí)參傳向形參,不能從形參傳回實(shí)參。形參的值發(fā)生改變后,實(shí)參并不變化。而當(dāng)用數(shù)組名作函數(shù)參數(shù)時(shí),情況則不同。 由于實(shí)際上形參和實(shí)參為同一數(shù)組,因此當(dāng)形參數(shù)組發(fā)生變化時(shí),實(shí)參數(shù)組也隨之變化。 當(dāng)然這種情況不能理解為發(fā)生了 “ 雙向 ”的值傳遞。但從實(shí)際情況來看,調(diào)用函數(shù)之后實(shí)參數(shù)組的值將由于形參數(shù)組值的變化而變化。 (地址傳遞) (例) 例 數(shù)組元素與 數(shù)組名作函數(shù)參數(shù)比較。 1 2 a 調(diào)用前 1 2 a x 調(diào)用 2 1 a x 交換 2 1 a 返回 include void swap2(int x[]) { int z。 z=x[0]。 x[0]=x[1]。 x[1]=z。 } main() { int a[2]={1,2}。 swap2(a)。 printf(a[0]=%d\na[1]=%d\n,a[0],a[1])。 } 地址傳遞 ? 用數(shù)組名作為函數(shù)參數(shù)時(shí)還應(yīng)注意以下幾點(diǎn): 1. 形參數(shù)組和實(shí)參數(shù)組的 類型必須一致 ,否則將引起錯(cuò)誤。 2. 形參數(shù)組和實(shí)參數(shù)組的 長度可以不相同 ,因?yàn)樵谡{(diào)用時(shí),只傳送首地址而不檢查形參數(shù)組的長度。甚至在函數(shù)形參表中,允許不給出形參數(shù)組的長度 ,而用一個(gè)變量來傳遞實(shí)參數(shù)組元素的個(gè)數(shù)。 3. 多維數(shù)組也可以作為函數(shù)的參數(shù)。在函數(shù)定義時(shí)對形參數(shù)組可以指定每一維的長度,也可省去第一維的長度。 (地址傳遞) 全局變量 ? 全局變量也稱為外部變量,它是在函數(shù)外部定義的變量。 ? 它不屬于哪一個(gè)函數(shù),它屬于一個(gè)源程序文件 (*.c)。 ? 其作用域是定義變量的位置開始到整個(gè)源程序的結(jié)尾或者有 extern說明 的其它 函數(shù)和 源文件 。 ? 外部變量定義與外部變量說明不同。 ? 若外部變量與局部變量同名,則外部變量被屏蔽 定義 說明 ?次數(shù): 只能 1次 可說明多次 ?位置: 所有函數(shù)之外 函數(shù)內(nèi)或函數(shù)外 ?分配內(nèi)存: 分配內(nèi)存 ,可初始化 不分配內(nèi)存 ,不可初始化 應(yīng)盡量少使用全局變量,因?yàn)椋? ?全局變量在程序全部執(zhí)行過程中占用存儲單元 ?降低了函數(shù)的通用性、可靠性,可移植性 ?降低程序清晰性,容易出錯(cuò) int p=1,q=5。 float f1(int a) { int b,c。 ……. } int f3() {….. } char c1,c2。 char f2(int x,int y) { int i,j。 …… } main() { int m,n。 ……. } c1,c2的作用范圍 p,q的作用范圍 extern char c1,c2。 extern char c1,c2。 c1,c2 的作用范圍 擴(kuò)展后 c1,c2 的作用范圍 擴(kuò)展后 例:將輸入的一個(gè)偶數(shù)拆為兩個(gè)素?cái)?shù)之和,并輸出。 include include main() {int a,b,c,d。 scanf(%d,amp。a)。 for (b=3。b=a/2。b+=2) {for(c=2。c=sqrt(b)。c++) if(b%c==0) break。 if (csqrt(b)) d=ab。 else continue。 for(c=2。csqrt(d)。c++) if(d%c==0) break。 if (csqrt(d)) printf(%d=%d+%d\n,a,b,d)。 } } 從最小的素?cái)?shù)開始,依次去找下一個(gè)素?cái)?shù) (b),一旦找到,就再判斷輸入數(shù) (a)與第一個(gè)素?cái)?shù)之差 (d)是否也為素?cái)?shù),若是則輸出結(jié)果。 從 3開始在奇數(shù)中找素?cái)?shù) 若 b是素?cái)?shù),則再去判斷 d 若 b不是素?cái)?shù),則不再去判斷 d,也不會輸出任何結(jié)果 若 b是素?cái)?shù)的前提下, d也是素?cái)?shù),則輸出結(jié)果 連接兩個(gè)字符串,不準(zhǔn)用 strcat函數(shù) A B C \0 D E F G \0 先求出兩字符串長度,再將第二個(gè)字符串 (字符數(shù)組 )的元素 (包括結(jié)尾的空字符 )依次復(fù)制到第一個(gè)字符串 (字符數(shù)組 )的后面。 str1字符長度為 3 0 1 2 3 str2字符長度為 4 0 1 2 3 4 A B C D E F G \0 0 1 2 3 4 5 6 7 連接后的字符串str1長度為 7 a=3 b=4 include main() {int i,a,b。 char str1[80],str2[80]。 scanf(%s%s,str1,str2)。 printf(%s+%s=,str1,str2)。 a=strlen(str1)。 b=strlen(str2)。 for (i=0。i=b。i++) str1[a+i]=str2[i]。 printf(%s\n,str1)。 } 輸入兩個(gè)字符串存入兩個(gè)字符數(shù)組 先輸出兩個(gè)字符串 求兩個(gè)字符串的長度,分別是 a和 b 把 str2的 0到 b號字符 (一共 b+1個(gè),包括空字符 ),復(fù)制到 str1的 a到 a+b號變量 include char *cat(char x[],char y[]) {int i,a,b。 a=strlen(x)。 b=strlen(y)。 for (i=0。i=b。i++) x[a+i]=y[i]。 return(x)。 } main() {char str1[80],str2[80]。 scanf(%s%s,str1,str2)。 printf(%s+%s=,str1,str2)。 printf(%s\n,cat(str1,str2))。 } 例:輸入 5個(gè)小寫字母,將它們轉(zhuǎn)為大寫并逆序輸出。 main() {char ch[5]。 int i。 for
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1