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

正文內(nèi)容

c語(yǔ)言程序設(shè)計(jì)(三)ppt(編輯修改稿)

2025-01-03 21:49 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 for(i=0。i7。i++)printf(%3d,a[i])。 printf(\n)。 } fun (int y) /*函數(shù)定義 */ {printf(%3d,y*=2)。} 程序運(yùn)行結(jié)果如圖所示。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 46 地址傳遞是將數(shù)據(jù)的存儲(chǔ)地址作為實(shí)參傳遞給形參。按這種方式傳遞時(shí): 形參的類(lèi)型必須是指針變量或數(shù)組 (實(shí)質(zhì)也是指針變量 ); 實(shí)參也只能是變量的地址、數(shù)組名 (數(shù)組的首地址 )或已存放地址值的指針變量。 下面分別就指針、一維數(shù)組、二維數(shù)組和字符串指針作函數(shù)參數(shù)的情況進(jìn)行討論。 函數(shù)的傳地址調(diào)用 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 47 1. 指針作函數(shù)參數(shù) 指針作函數(shù)參數(shù)情況如下: 被調(diào)函數(shù)中的形參:指針變量 主調(diào)函數(shù)中的實(shí)參:地址表達(dá)式,一般為變量的地址或取得變量地址的指針變量,這里假定為取得變量地址的指針變量。 在這種情況下,傳址調(diào)用以后,形參存放地址的改變不會(huì)使得實(shí)參所存地址改變,地址傳遞是單向的。 (1)傳址調(diào)用地址傳遞的單向性分析 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 48 【 例 810】 傳址調(diào)用地址傳遞的單向性。 void swap(int *p1, int *p2) { int *p。 printf(*p1=%d, *p2=%d\n, *p1, *p2)。 p=p1。 p1=p2。 p2=p。 /*交換指針變量 p p2的值 */ printf(*p1=%d, *p2=%d\n, *p1, *p2)。 } main() { int i1, i2, *pt1=amp。i1, *pt2=amp。i2。 printf(輸入兩個(gè)數(shù) :\n)。 scanf(%d%d, amp。i1, amp。i2)。 if(i1i2) swap(pt1, pt2)。 /*試圖通過(guò) swap函數(shù)交換指針變量 pt1與 pt2的指向 */ printf(*pt1=%d, *pt2=%d\n,*pt1, *pt2)。 } 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 49 程序運(yùn)行結(jié)果如圖所示。 【 分析 】 本例 swap函數(shù)的作用是交換形參指針變量 p1和p2的值。先讓主調(diào)函數(shù)指針變量 pt1和 pt2分別指向整型變量 i1和 i2,然后當(dāng) i1i2時(shí)讓 pt1和 pt2作實(shí)參調(diào)用 swap函數(shù),試圖通過(guò) swap函數(shù)交換 pt1和 pt2存放的地址值,最后按它們的指向輸出。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 50 但是,由于傳址調(diào)用 地址傳遞的單向性 , pt1和 pt2存放的地址值并沒(méi)有改變。傳址調(diào)用的過(guò)程如下圖所示。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 51 (2)指針作函數(shù)參數(shù)的作用 由于形參指針變量的指向操作可以引起它所指向的主調(diào)函數(shù)變量值的變化,若有多個(gè)指針變量形參,它們分別指向主調(diào)函數(shù)中作為存放運(yùn)算結(jié)果的變量,則可以將被調(diào)函數(shù)中的多個(gè)計(jì)算結(jié)果數(shù)據(jù)傳回主調(diào)函數(shù) (注意以前被調(diào)函數(shù)只能通過(guò)函數(shù)值傳回一個(gè)運(yùn)算結(jié)果 )。 【例 811】 分析以下程序的運(yùn)行結(jié)果。 int ast( int x, int y, int *cp, int *dp) {*cp=x+y。 *dp=xy。} main() {int a=4, b=3, c, d。 ast(a, b, amp。c, amp。d)。 printf(c=%d, d=%d\n, c, d)。 } 程序的運(yùn)行結(jié)果如圖所示。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 52 表 81數(shù)組指針作為函數(shù)參數(shù)的形式 實(shí)際參數(shù) 形式參數(shù) 數(shù)組名 數(shù)組 (實(shí)質(zhì)仍為指針變量 ) 數(shù)組名 指針變量 指針變量 (已存數(shù)組首地址 ) 數(shù)組 (實(shí)質(zhì)仍為指針變量 ) 指針變量 (已存數(shù)組首地址 ) 指針變量 數(shù)組指針作為函數(shù)參數(shù)的作用: 形參指針變量接受主調(diào)函數(shù)數(shù)組的首地址,就可以通過(guò)指針變量的指向操作改變主調(diào)函數(shù)數(shù)組元素的值。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 53 【 例 812】 編一函數(shù) sort,其功能是將一維整型數(shù)組按從小到大的順序排序。主函數(shù)輸入 10個(gè)整數(shù),調(diào)用 sort函數(shù)對(duì)輸入的數(shù)據(jù)進(jìn)行排序,并在主函數(shù)中輸出。 【 分析 】 要編一個(gè)函數(shù)對(duì)主函數(shù)中的數(shù)組進(jìn)行排序,還要將排序后的數(shù)據(jù)傳遞到主函數(shù)中。因此形參不能用普通變量,而要使用指針變量;實(shí)參用數(shù)組名。形參指針變量得到主函數(shù)中數(shù)組的首地址,通過(guò)指向操作就可以改變數(shù)組所有元素的值,從而實(shí)現(xiàn)對(duì)主函數(shù)中數(shù)組的排序。程序如下: 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 54 /* */ include main() { void sort(int *x, int n)。 /*函數(shù)聲明 */ int i,a[10]。 for(i=0。i10。i++) scanf(%d,amp。a[i])。 sort(a, 10)。 /*函數(shù)調(diào)用,數(shù)組名作實(shí)參 */ for(i=0。i10。i++) printf(“%3d”,a[i])。 /*輸出結(jié)果 */ printf(\n)。 } void sort(int *x, int n) /*函數(shù)定義, x是指針變量 */ { int i,j,t。 for(i=0。in1。i++) /*數(shù)組排序 */ for(j=i+1。jn。j++) if(*(x+i)*(x+j)) /* *(x+i)即 a[i], *(x+i)也可寫(xiě)成 x[i] */ {t=*(x+i)。*(x+i)=*(x+j)。*(x+j)=t。} } 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 55 程序運(yùn)行時(shí)輸入: 2□ 8□ 3□ 5□ 14□ 22□ 19□ 7□ 10□ 1↙ 運(yùn)行結(jié)果如圖所示: 可見(jiàn)用形參指針的指向操作,實(shí)現(xiàn)了主函數(shù)中數(shù)組的排序。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 56 【 說(shuō)明 】 (1)形參也可以用數(shù)組,即 sort函數(shù)的首部可寫(xiě)成:void sort(int x[ ], int n) (2)由于形參 x數(shù)組和主函數(shù)的 a數(shù)組都是局部數(shù)組,只在各自所在的函數(shù)起作用,因此,形參數(shù)組也可以與主函數(shù)中的數(shù)組同名, sort函數(shù)的首部可寫(xiě)成: void sort(int a[], int n),增加了可讀性。其實(shí),這兩個(gè)數(shù)組的類(lèi)型相同、首地址相同,從存儲(chǔ)的角度說(shuō),實(shí)質(zhì)是同一個(gè)數(shù)組,共同擁有一段存儲(chǔ)空間。 (3)x數(shù)組的元素個(gè)數(shù)沒(méi)有寫(xiě) (當(dāng)然可以寫(xiě) ),因?yàn)樾螀?shù)組的實(shí)質(zhì)是指針變量,目的是接受實(shí)參數(shù)組名首地址,與元素個(gè)數(shù)無(wú)關(guān),所以一般不寫(xiě)元素個(gè)數(shù),而由形參 n接受實(shí)參的整數(shù) (此例為 10)作為元素個(gè)數(shù)。另外一種傳送元素個(gè)數(shù)的辦法是將元素個(gè)數(shù)定義成符號(hào)常量,請(qǐng)看 【 例 813】 。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 57 【 例 813】 輸入 N (設(shè)為 10)個(gè)整數(shù),將其中的全部奇數(shù)輸出。要求輸入、輸出均調(diào)用函數(shù)進(jìn)行 ,程序如下: define N 10 void input(int a[]) { int i。 printf(輸入 10個(gè)數(shù) :\n)。 for(i=0。 iN。 i++) scanf(%d, a+i)。 } void outputodd(int *a) {int i。 for(i=0。 iN。 i++, a++) if(*a % 2)printf(%3d, *a)。 printf(\n)。 } main() { int arr[N]。 input(arr)。 outputodd(arr)。 } 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 58 本例程序有三個(gè)函數(shù),操作的都是同一個(gè)數(shù)組,即 main函數(shù)的 arr數(shù)組。用戶(hù)定義的兩個(gè)函數(shù)分別完成數(shù)組的輸入和尋找奇數(shù)元素輸出的任務(wù), main函數(shù)調(diào)用這兩個(gè)函數(shù)。元素個(gè)數(shù)由符號(hào)常量 N定義。 運(yùn)行程序,若輸入 1□ 2□ 3□ 4□ 5□ 6□ 7□ 7□ 9□ 10↙ ,程序運(yùn)行結(jié)果如圖所示。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 59 【 討論 】 在數(shù)組作為函數(shù)參數(shù)的情況下,參數(shù)傳遞的單向性是否被破壞? 【 例 814】 分析下面程序的運(yùn)行結(jié)果。 void fun(int a[2]) { int c。 c=a[0]。a[0]=a[1]。a[1]=c。 } /*交換了 a[0]與 a[1]的值 */ main() { int x[2]={5,10}。 printf(x[0]=%d,x[1]=%d\n,x[0],x[1])。 fun(x)。 /*函數(shù)調(diào)用 */ printf(x[0]=%d,x[1]=%d\n,x[0],x[1])。 } 程序運(yùn)行結(jié)果如圖所示。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 60 【 分析 】 函數(shù) fun的功能是交換數(shù)組中兩個(gè)元素的值。程序運(yùn)行結(jié)果實(shí)現(xiàn)了此功能,實(shí)參 x數(shù)組發(fā)生了改變。參數(shù)傳遞的單向性是否被破壞?對(duì)這個(gè)問(wèn)題首先要問(wèn):形參和實(shí)參分別是什么?在函數(shù)調(diào)用以后形參和實(shí)參是否發(fā)生了變化?下面的列表回答這個(gè)問(wèn)題。 實(shí)參 形參 函數(shù)調(diào)用時(shí) 數(shù)組名 x (地址常量 ) 數(shù)組 a(指針變量 )獲得數(shù)組x的首地址 函數(shù)調(diào)用后 數(shù)組名 x (地址常量 ) 數(shù)組 a(指針變量 )仍然存放數(shù)組 x的首地址 結(jié)果 沒(méi)有改變 沒(méi)有改變 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 61 那么本例中什么發(fā)生了改變呢?其實(shí)發(fā)生改變的是:以形參和實(shí)參為首地址的兩個(gè)整型存儲(chǔ)單元存放的值,而不是形參和實(shí)參本身。 由于形參是指針變量,其存放的值是可以改變的,例如 【 例 813】 中函數(shù) outputodd的形參 a通過(guò) a++運(yùn)算存放的地址值發(fā)生了改變,實(shí)參數(shù)組名 arr仍然是常量沒(méi)有改變。 因此,在數(shù)組作為函數(shù)參數(shù)的情況下,參數(shù)傳遞仍然是單向的,形參的變化不能引起實(shí)參的改變,改變的是:從函數(shù)調(diào)用時(shí)形參和實(shí)參共同擁有的數(shù)組首地址開(kāi)始的數(shù)組元素值,這正是使用數(shù)組作為函數(shù)參數(shù)的目的。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 62 3. 二維數(shù)組函數(shù)參數(shù) 前面討論數(shù)組作為函數(shù)參數(shù),講的都是一維數(shù)組,這樣的討論可以很自然地推廣到多維數(shù)組的情況。多維數(shù)組作函數(shù)的參數(shù),表 81仍然適用。函數(shù)形參既可以用數(shù)組定義也可以用指針變量,實(shí)質(zhì)都是指針變量,可以用與數(shù)組維數(shù)一致的高級(jí)指針變量,例如二維數(shù)組用指向一維數(shù)組的指針變量作形參;也可以用一級(jí)指針變量作形參,這就是將二維數(shù)組當(dāng)成一維數(shù)組訪(fǎng)問(wèn)。 安 慶 師 范 學(xué) 院 計(jì) 算 機(jī) 與 信 息 學(xué) 院 63 【 例 815】 利用函數(shù)求 5 5二維數(shù)組的最小值以及該最小值的位置,結(jié)果在 main函數(shù)中輸出。 【 分析 】 必須用數(shù)組作為函數(shù)參數(shù)。二維數(shù)組的最小值可以用函數(shù)值返回,最小值的位置用什么返回呢?可以用指針變量形參。數(shù)組的行數(shù)和列數(shù)可以用數(shù)值形參,也可
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1