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

正文內(nèi)容

[工學(xué)]2008c語言講義第9章(已修改)

2025-01-31 10:43 本頁面
 

【正文】 第十章 指針 1上機作業(yè)1. 建立整數(shù)數(shù)組 a[16],方法是 , a[0]=55, 其余為:a[i]=(15*a[i1]+97)%256,完成操作: 1)輸出 a的元素值。 2)求出數(shù)組 a的平均值 (實數(shù) )。 3)找出與平均值之差的絕對值最大的元素,并將其從 a中刪去。 要求:求平均值與找元素的操作在被調(diào)函數(shù)中完成。 答案:55 154 103 106 151 58 199 10 247 218 39 170 87 122 135 74ave= 最大差的數(shù) : 247刪除后的數(shù)組元素為:55 154 103 106 151 58 199 10 218 39 170 87 122 135 74P278 2指針的概念數(shù)據(jù)在內(nèi)存中是如何存取的?系統(tǒng)根據(jù)程序中定義變量的類型,給變量分配一定的長度空間。字符型占 1個字節(jié),整型數(shù)占 2個字節(jié) .....。內(nèi)存區(qū)的每個字節(jié)都有編號,稱之為 地址 。2022H2022H2022H2022H2022H35內(nèi)存內(nèi)存單元的地址內(nèi)存單元的內(nèi)容3直接訪問按變量地址存取變量的值。 scanf(%d,amp。i )。 實際上放到定義 i 單元的 地址中 。間接訪問將變量的地址存放在另一個單元 p中 ,通過 p 取出變量的地址,再針對變量操作。一個變量的地址稱為該變量的指針。如果在程序中定義了一個變量或數(shù)組,那么,這個變量或數(shù)組的地址(指針)也就確定為一個 常量 。ii2022H2022H3000Hp4變量的 指針 和指向變量的 指針變量變量的指針就是 變量的地址 , 當變量定義后,其指針(地址)是一常量。 可以 定義一個變量 專門用來 存放 另一變量的 地址 ,這種變量我們稱之為 指針變量 。在編譯時同樣分配一定字節(jié)的存儲單元,未賦初值時,該存儲單元內(nèi)的值是 隨機 的。指針變量定義的一般形式為:類型標識符 *變量名 int *i_point。i2022Hint i。 amp。i : 2022H 指針類型 變量名5指針 變量 同樣也可以賦值:int i, *i_point。i_point=amp。i。也可以在定義 指針變量 時賦初值:int i。int *i_point=amp。i。 * 在 定義語句 中只表示變量的類型是指針,沒有任何計算意義。 * 在語句中表示 “ 指向 ” 。 amp。表示 “ 地址 ”。一個指針變量只能指向同一類型的變量 。即整型指針變量只能放整型數(shù)據(jù)的地址,而不能放其它類型數(shù)據(jù)的地址。3000H i_point2022H i2022H62022H2022H3000H i_pointint i。int *i_point=amp。i。*i_point=3。表示指向表示類型i37指針變量的引用指針變量只能 存放地址 ,不要將非地址數(shù)據(jù)賦給指針變量。 int *p, i。 p=100。 p=amp。i。void main(void){ int a=10, b=100。 int *p1, *p2。 p1=amp。a。 p2=amp。b。 printf(%d\t%d\n,a,b )。 printf(%d\t%d\n ,*p1,*p2)。} 10010bap1 p2amp。bamp。a非法指針變量賦值指針變量引用10 10010 100表示指向 8void main(void){ int a, b。 int *p1, *p2。 p1=amp。a。 p2=amp。b。 *p1=10。 *p2=100。 printf(%d\t%d\n,a,b )。 printf(%d\t%d\n ,*p1,*p2)。} bap1 p2amp。bamp。a10010通過指針對變量賦值指針變量賦值指針變量引用9void main(void){ int a, b。 int *p1, *p2。 *p1=10。 *p2=100。 printf(%d\t%d\n,a,b )。 printf(%d\t%d\n ,*p1,*p2)。} bap1 p2隨機隨機絕對不能對未賦值的指針變量作 “指向 ”運算。int i, *p1。 p1=amp。i。 通過指針對變量賦值但指針變量未賦值,即指針指向未知地址用指針變量前,必須對指針變量賦值 10輸入 a, b兩個整數(shù),按大小輸出這兩個數(shù)。void main(void){ int *p1, *p2, *p, a,b。 scanf(%d%d,amp。a,amp。b )。 p1=amp。a。 p2=amp。b。 if (ab) { p=p1。 p1=p2。 p2=p。 } printf(%d\t%d\n,a,b )。 printf(%d\t%d\n ,*p1,*p2)。}bap1 p2amp。bamp。a10010pamp。aamp。b amp。a10 100100 10交換地址雖然變量不變,但指向變量的指針發(fā)生變化 11int a=3, *p。p=amp。a。++, , * 優(yōu)先級相同,都是 右結(jié)合性 。相當于 a++。表達式為 3, a=47532022H2022H2022Haamp。ap(*p)++。 412int a=3, *p。p=amp。a。++, , * 優(yōu)先級相同,都是 右結(jié)合性 。7532022H2022H2022Haamp。ap2022H*(p++)首先 *p ,然后 p=p+1,指針指向下一個 int單元 表達式為 3, p=2022H。*p++。 13int a=3, *p。p=amp。a。++, , * 優(yōu)先級相同,都是 右結(jié)合性 。7532022H2022H2022Haamp。ap4++(*p) *p=*p+1 a=4++*p14int a=3, *p。p=amp。a。++, , * 優(yōu)先級相同,都是 右結(jié)合性 。7532022H2022H2022Haamp。ap2022H*(++p),首先: p=p+1, 然后取 *p。即取 p所指的下一個 int單元的內(nèi)容。表達式為 5 p= 2022H*++p 15指針變量作為函數(shù)參數(shù):函數(shù)的參數(shù)可以是指針類型, 它的作用是將 一個變量的 地址 傳送到另一個函數(shù)中 。指針變量作為函數(shù)參數(shù)與變量本身作函數(shù)參數(shù)不同, 變量作函數(shù)參數(shù)傳遞的是具體值 ,而 指針 作函數(shù)參數(shù)傳遞的是 內(nèi)存的地址 。16輸入 a, b兩個整數(shù),按大小輸出這兩個數(shù)。void main(void){ int *point1, *point2, a,b。 scanf(%d%d,amp。a,amp。b )。 point1=amp。a。 point2=amp。b。 if (ab) swap (point1, point2)。 printf(a=%d, b=% d\n,a,b)。 printf(%d\t%d\n ,*point1, *point2)。}void swap(int *p1, int *p2){ int t。 t=*p1。 *p1=*p2。 *p2=t。}p1amp。a ta10point1amp。ap2amp。bpoint2amp。b b1001010010a=100b=10輸出: a=100,b=10 100,10 17輸入 a, b兩個整數(shù),按大小輸出這兩個數(shù)。void main(void){ int *point1, *point2, a,b。 scanf(%d%d,amp。a,amp。b )。 point1=amp。a。 point2=amp。b。 if (ab) swap (a, b)。 printf(a=%d, b=% d\n,a,b)。 printf(%d\t%d\n ,*point1, *point2)。}void swap(int x, int y){ int t。 t=x。 x=y。 y=t。}x10y100t10a10point1amp。ab100point2amp。b10010x=100y=10輸出: a=10,b=100 10,100值傳遞18用指針變量作函數(shù)參數(shù),在被調(diào)函數(shù)的執(zhí)行過程中, 應(yīng)使指針變量所指向的參數(shù)值發(fā)生變化, 這樣,函數(shù)在調(diào)用結(jié)束后,其變化值才能保留回主調(diào)函數(shù)。用指針變量作函數(shù)參數(shù),可以得到多個變化了的值。函數(shù)調(diào)用 不能改變實參指針變量的值,但可以改變實參指針變量所指向變量的值 。19void prt(int *x , int *y , int *z){ printf(%d , %d, % d\n, ++*x, ++*y, *(z++))。}int a=10, b=40, c=20。void main(void){ prt (amp。a, amp。b, amp。c)。 prt (amp。a, amp。b, amp。c)。} xamp。aa10++*x:*(z++):11, 41, 2012, 42, 20*x=*x+1*z 。 z=z+120注意??!?注意類型匹配:?即如果函數(shù)的形參是指針類型,那么實參傳遞過去的一定是地址?(二級上機改錯題必考類型)21void main(void){ int a=0, i, *p, sum。 for (i=0。 i=2。 i++) { p=amp。a。 scanf(%d , p)。 sum=s(p)。 printf(sum=% d\n,sum)。 }}輸入: 1 3 5CRsum=11sum=13sum=15pamp。aa1pamp。asum10sumint s( int *p){ int sum=10。 sum=sum + *p。 return sum。 }111122sub( int *s){ static int t=0。 t=*s + t。 return t。} void main(void){ int i, k。 for (i=0。 i4。 i++) { k=sub(amp。i)。 printf(sum=% d\t,k)。 } printf(\n)。}i=0 t=*s+t=0 k=0 sum=0i=1 t=*s+t=1 k=1 sum=1i=2 t=*s+t=3 k=3 sum=3i=3 t=*s+t=6 k=6 sum=6sum=0sum=1sum=3sum=623int *p。void main(void){ int a=1, b=2, c=3。 p=amp。b。 pp(a+c, amp。b)。 printf((1)%d %d % d\n,a, b, *p)。}pp(int a, int *b){ int c=4。 *p=*b+c。 a=*pc。 printf((2)%d %d % d\n,a, *b, *p)。}*p=*b+4=2+4=6a=6c=2(2) 2 6 6(1) 1 6 6b2pamp。bbamp。ba424舉例:最大最小值、方程根25設(shè)計一個邊輸入數(shù)據(jù),邊對數(shù)據(jù)進行插入排序的程序。要求插入排序的操作在函數(shù)中進行,參數(shù)為指向排序數(shù)組的整數(shù)指針。輸入整數(shù)的個數(shù)不限,最后輸入 0結(jié)束,同時輸出已排好序的數(shù)組。例如:原數(shù)組中為空,輸入 5后,數(shù)組內(nèi)容為 5,再輸入 7后,數(shù)組內(nèi)容為 5, 7,再輸入 3后,數(shù)組內(nèi)容為 3, 5, 7等,最后輸入 0后,輸入結(jié)束,輸出排好序的數(shù)組。P279 上機作業(yè)26數(shù)組的 指針 和指向數(shù)組的 指
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1