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

正文內(nèi)容

安徽工程科技學(xué)院-文庫吧資料

2025-02-28 10:22本頁面
  

【正文】 。如: define S(a,b) a*b area=S(3,2)。 不是進(jìn)行簡單的字符串替換,還要進(jìn)行參數(shù)替換。如例 中的 printf函數(shù)內(nèi)有兩個 L字符,一個在雙撇號內(nèi),它不被宏置換,另一個在雙撇號外,被宏置換展開。 } 運(yùn)行情況如下: L= S= ? 經(jīng)過宏展開后, printf函數(shù)中的輸出項 L被展開為 2**, S展開為 **,printf函數(shù)調(diào)用語句展開為 ? printf(” L=%f\nS=%f\n” ,2**,5926**)。 ( 7)在進(jìn)行宏定義時,可以引用已定義的宏名,可以層層置換。例如: define G —— main( ) { | G的有效范圍 ┆ } undef G —— f1( ) { ┆ } 由于 undef的作用,使 G的作用范圍在 undef行處終止,因此在 f1函數(shù)中, G不再代表 。通常,define命令寫在文件開頭,函數(shù)之前,作為文件一部分,在此文件范圍內(nèi)有效。 ? 經(jīng)過宏展開后,該語句為 ? area=*r*r; ? 顯然出現(xiàn)語法錯誤。如果加了分號則會連分號一起進(jìn)行置換。只有在編譯已被宏展開后的源程序時才會發(fā)現(xiàn)錯誤并報錯。如果寫成 ? define PI ? 即把數(shù)字 1寫成小寫字母 l,預(yù)處理時也照樣代人,不管含義是否正確。 例如,定義數(shù)組大小,可以用: # define array_size 1000 int array[array_size]; 先指定 array_size代表常量 1000,因此數(shù)組 array大小為 1000,如果需要改變數(shù)組大小,只需改# define行: # define array_size 500 使用宏定義,可以提高程序的通用性。 ? ( 2)使用宏名代替一個字符串,可以減少程序中重復(fù)寫某些字符串的工作量。 【例 】 # define PI main( ) { float l, s, r, v; printf(input radius:); scanf(%f,r); l= *PI*r; s=PI*r*r; v=*PI*r*r*r; printf(i=%\ns=%\nv=%\n, l, s,v); } 運(yùn)行情況如下: input radius:4? l=??? s=??? v=?? ? 說明: ? ( 1)宏名一般習(xí)慣用大寫字母表示,以便與變量名相區(qū)別。這種方法使用戶能以一個簡單的名字代替一個長的字符串,因此把這個標(biāo)識符(名字)稱為“宏名”,在預(yù)編譯時將宏名替換成字符串的過程稱為“宏展開”。 宏定義 用一個指定的標(biāo)識符(即名子)來代表一個字符串,它的一般形式為 # define 標(biāo)識符 字符串 這就是已經(jīng)介紹過的定義符號常量。 C提供的預(yù)處理功能主要有以下三種: 分別用宏定義命令、文件包含命令、條件編譯命令來實現(xiàn)。必須正確區(qū)別預(yù)處理命令和 C語句、區(qū)別預(yù)處理和編譯,才能正確使用預(yù)處理命令?,F(xiàn)在使用的許多 C編譯系統(tǒng)都包括了預(yù)處理、編譯和連接等部分,在進(jìn)行編譯時一氣呵成。若程序中用# include命令包含一個文件“ ”,則在預(yù)處理時將 代替該命令)。這些預(yù)處理命令是由 ANSI C統(tǒng)一規(guī)定的,但是它不是 C語言本身的組成部分,不能直接對它們進(jìn)行編譯(因為編譯程序不能識別它們。為減少程序設(shè)計者的困難,在頭文件其他有關(guān)信息,用戶只需用以下 include命令: ? include< > ? 這樣,在該文件中就能合法地調(diào)用各數(shù)學(xué)庫函數(shù)了。按以上的介紹,必須在本文件中寫出 sin函數(shù)的原型,否則無法調(diào)用 sin函數(shù)。在前面幾章中曾多次使用過# include命令,并提到過:# include命令所指定的“頭文件”中包含有調(diào)用庫函數(shù)時所需的信息。函數(shù)原型通知編譯系統(tǒng):該函數(shù)在本文件中稍后定義,或在另一文件中定義。用函數(shù)原型也能夠把函數(shù)的作用域擴(kuò)展到定義該函數(shù)的文件之外(不必使用 extern)。例 main函數(shù)中對 power函數(shù)的聲明就沒有用 extern,但作用相同,一般都省寫 extern,例如例 main函數(shù)中的第一個函數(shù)聲明可寫成 enter_string(char str[80]) ? 這就是我們多次用過的函數(shù)原型。 Extern聲明的形式就是在函數(shù)原型基礎(chǔ)上加關(guān)鍵字 extern(見本例 main函數(shù)中的聲明形式)。在 main函數(shù)中用 extern聲明在 main函數(shù)中用到的enter_string、 delete_string、 print_string是在其他文件中定義的外部函數(shù)。最后將結(jié)束符 \o也復(fù)制到被保留的字符后面。但我們只用一個數(shù)組,只把不被刪除的字符保留下來。從圖中可以看到,應(yīng)該使 str[0]賦給 str[0],str[1]str[1], str[2]str[2], str[3]str[3],然后, str[5]str[4], …… 請讀者注意分析如何控制 i和 j的變化,以便使被刪除的字符不保留在原數(shù)組中。算法是這樣的:對 str數(shù)組的字符逐個檢查,如果不是被刪除的字符就將它存放在數(shù)組中,見圖 (設(shè)刪除空格)。其中scanf是庫函數(shù),另外 3個是用戶自己定義的函數(shù)。每個文件包含一個函數(shù)。 str[j]= \0 ; } (文件 4) print_string(char str[ ]) /*定義外部函數(shù)print_string*/ { printf(%s ,str)。 ? (文件 1) ? main() ? { extern enter_string ( char str [80]); ? extern delete_string (char str [ ], char ch); ? extern print_string (char str [ ])。 ? 【例 】 有一個字符串,內(nèi)有若干個字符,今輸入一個字符,要求程序?qū)⒆址性撟址麆h去。本書前面所用的函數(shù)都是外部函數(shù)。 ? 如函數(shù)首部可以寫為 ? extern int fun (int a, int b) ? 這樣,函數(shù) fun 就可以為其他文件調(diào)用。這樣不同的人可以分別編寫不同的函數(shù),而不必?fù)?dān)心所用函數(shù)是否會與其他文件中函數(shù)同名,通常把只能由同一文件使用的函數(shù)和外部變量放在一個文件中,在它們前面都冠以 static使之局部化,其他文件不能引用。即 static類型標(biāo)識符 函數(shù)名(形參表) 如 static int fun(int a, int b ) 內(nèi)部函數(shù)又稱靜態(tài)函數(shù)。 如果一個函數(shù)只能被本文件中其他函數(shù)所調(diào)用,它稱為內(nèi)部函數(shù)。 6. 8 內(nèi)部函數(shù)和外部函數(shù) 同一個源程序文件中的函數(shù)之間是可以互相調(diào)用的,不同源程序文件中的函數(shù)之間也是可以互相調(diào)用的,根據(jù)需要我們也可以指定函數(shù)不能被其他文件調(diào)用。靜態(tài)存儲類型變量可以定義在函數(shù)內(nèi)部,也可以定義在函數(shù)外部。 表示定義變量 x, y是雙精度浮點(diǎn)型并且是靜態(tài)存儲類型 。 靜態(tài)存儲類型 關(guān)鍵字 static表示變量是靜態(tài)存儲類型 。 外部存儲類型變量具有靜態(tài)性。 例如 , extern double x,y。寄存器存儲類型變量的作用范圍也是僅局限于定義它的函數(shù)。 表示定義變量 a, b是整型并且是寄存器存儲類型 。 寄存器存儲類型 關(guān)鍵字 register表示變量是寄存器存儲類型 。自動存儲類型變量的作用范圍僅局限于定義它的函數(shù)。 自動存儲類型 關(guān)鍵字 auto表示變量是自動存儲類型 。 變量定義的完整形式為: [ 存儲類型 ] 類型說明符 變量名表列; C語言中 , 變量有 4種存儲類型 , 分別為自動類型 、 靜態(tài)類型 、 外部類型和寄存器類型 。 變量的存儲方式 C語言中的變量不僅有類型屬性,而且還有存儲類別的屬性。 全局變量可以被定義它的文件中的所有函數(shù)使用 。 ( 4)在復(fù)合語句中也可定義變量,其作用域只在本復(fù)合語句范圍內(nèi)。 ( 2)形參屬于被調(diào)函數(shù)的局部變量,實參屬于主調(diào)函數(shù)的局部變量。 關(guān)于局部變量的作用域需要說明以下幾點(diǎn)。 } } 運(yùn)行程序,輸入: 123 456 123 456 1 23 5885 34 101 10↙ 則輸出: 456 123 1 10 23 34 101 123 456 5885 456 123 1 10 23 變量的作用域 局部變量 在一個函數(shù)內(nèi)定義的變量稱為局部變量。 array[j]=array[j+1]。ji。i0。 { int i,j,t。 printf(\n)。i5。 sort(a,5)。i++) printf(% 8d,a[i])。 for(i=0。i++) scanf(% d,a[i])。 for(i=0。 define N 10 main() { void sort()。 排序工作結(jié)束 。 ( 3) 對前 3個數(shù)兩兩比較得到序列 ( 3,1,4,8,9) 。 ( 1) 對 5個數(shù)兩兩比較 , 如果相臨的兩個數(shù)不是從小到大排列的 , 則交換使之變?yōu)閺男〉酱笈帕?, 比較結(jié)束后最大值在序列底部 , 于是得到序列 (3,8,4,1,9)。 “ 起泡法 ” 的基本思想是對 N個數(shù)構(gòu)成的序列兩兩比較求出最大值 。 ( 4) 數(shù)組名作函數(shù)參數(shù)時 , 應(yīng)將數(shù)組的長度也作為函數(shù)的參數(shù) , 這樣編寫的函數(shù)具備通用性 。 ( 2) 形參數(shù)組可以和實參數(shù)組同名 。 用數(shù)組名作為函數(shù)參數(shù)應(yīng)注意以下幾點(diǎn) 。 } 程序運(yùn)行的結(jié)果為: before:a[0]=12,a[1]=24 after:a[0]=24,a[1]=12 顯然,用數(shù)組名作函數(shù)的參數(shù),才能真正實現(xiàn)兩個數(shù)據(jù)的交換。 change(a)。 int a[2]={12,24}。x[1]=temp。 { temp=x[0]。 程序如下。 如果在函數(shù)調(diào)用過程中形參數(shù)組的內(nèi)容被修改了 ,實際上也是修改了實參數(shù)組的內(nèi)容 。 } 程序運(yùn)行的結(jié)果為: 數(shù)組名作函數(shù)的參數(shù) 數(shù)組名代表數(shù)組的首地址 , 在數(shù)組名作為函數(shù)的參數(shù)時 , 形參和實參都應(yīng)該是數(shù)組名 。k++) m=max(m,a[k])。 for(k=1。 int k。 else return y。 例 數(shù)組元素作函數(shù)的參數(shù)示例。 數(shù)組元素作函數(shù)實參時 , 僅僅是將其代表的值作為實參處理 。 printf(%d!=%.0f\n,n,y)。 scanf(%d,n)。 float fac()。 } main()函數(shù)如下: main() { int n。 else f=fac(n1)*n。 float fac(int n) { float f。 一個函數(shù)在它的函數(shù)體內(nèi)直接或間接地調(diào)用了自己的函數(shù)稱為函數(shù)的遞歸調(diào)用 。 { return (x*x+sin(x))。 return ((f1(x)+f1(x+h))*h/2 )。 } float f2(x,h) float x,h。x+=h) s+=f2(x,h)。 for(x=0。 … (1 3 ) (1 2 ) } f 2 (x , h ) ③ { … ④ f 1 (x ) … (1 1 ) (1 0 ) } f 1 (x ) ⑤ { … ⑥ s i n (x ) … ⑨ ⑧ }
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1