2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、《程序設(shè)計(jì)基礎(chǔ):C語言》,2009/2010第二學(xué)期C語言課程組,版權(quán)所有,復(fù)制注明出處,上一章知識(shí)復(fù)習(xí),講述了指針聲明符、指針變量的聲明方法。講述了指針變量的兩個(gè)關(guān)鍵點(diǎn):存放地址“捆綁”一塊內(nèi)存空間講述了單重及多重指針的賦值。講述了指針訪問所指內(nèi)存空間中數(shù)據(jù)對象的方法講述const指針的用法。簡單闡述了空指針及通用指針的作用。簡單闡述了指針變量的運(yùn)算。,本講教學(xué)目標(biāo),掌握數(shù)組聲明符、數(shù)組聲明的方法。掌握一維數(shù)組、二

2、維數(shù)組在內(nèi)存中的存儲(chǔ)。掌握通過下標(biāo)方式訪問數(shù)組中各元素的方法。掌握通過指向數(shù)組的指針訪問數(shù)組中各元素的方法。掌握字符數(shù)組與其他內(nèi)置類型數(shù)組之間的細(xì)微差別。重點(diǎn)掌握指向數(shù)組的指針及指針數(shù)組的聲明、使用。,版權(quán)所有,復(fù)制注明出處,版權(quán)所有,復(fù)制注明出處,本章授課內(nèi)容,,,數(shù)組指針與指針數(shù)組,一維數(shù)組與字符串,二維數(shù)組,一維數(shù)組,數(shù)組的聲明,版權(quán)所有,復(fù)制注明出處,本章授課內(nèi)容,,,數(shù)組指針與指針數(shù)組,一維數(shù)組與字符串,二維數(shù)組,一維

3、數(shù)組,數(shù)組的聲明,,,,數(shù)組的聲明,請編寫程序接受1000個(gè)整數(shù),并找出其中的最大數(shù)。,版權(quán)所有,復(fù)制注明出處,問題:如何定義1000個(gè)變量?,int a,b,c,d,e,f…… ?,數(shù)組的聲明,版權(quán)所有,復(fù)制注明出處,/*源文件:demo7_1.c*/#include #include #include #define MAX_COUNT 1000int main(void){ int num[MAX_CO

4、UNT]; //數(shù)組的定義方法 int i; int max = INT_MIN; printf("請輸入%d 個(gè)數(shù),輸完一個(gè)回車一次.\n", MAX_COUNT); for(i = 0; i max) max = num[i]; } printf("max = %d\n", max);

5、 system("PAUSE"); return 0;},數(shù)組的聲明,數(shù)組聲明符的一般語法:直接聲明符[常表達(dá)式]直接聲明符[常表達(dá)式] (= 初值)例7-1 分析下面語句,指出數(shù)組聲明符的各元素int p[10];int *p[5];int *const p[20];double p[3]={2.2, 3, 4};double p[3][4];double *const*

6、const p[4][5];float *p[4][5];,版權(quán)所有,復(fù)制注明出處,數(shù)組的聲明,注意:數(shù)組中必須存放同類型的對象數(shù)組中對象可以是數(shù)值、指針、字符、結(jié)構(gòu)體等類型數(shù)組中的元素還可以是另外一個(gè)數(shù)組例如:請說明下列定義的含義int p[10];int *p[5];int *const p[20];double p[3][4];,版權(quán)所有,復(fù)制注明出處,數(shù)組的聲明,聲明數(shù)組的方式:不完整數(shù)組類型(方括號中是空的

7、)變長數(shù)組(限于C99)數(shù)組聲明符中使用類型限定符或static(限于C99),版權(quán)所有,復(fù)制注明出處,版權(quán)所有,復(fù)制注明出處,本章授課內(nèi)容,,,數(shù)組指針與指針數(shù)組,一維數(shù)組與字符串,二維數(shù)組,一維數(shù)組,數(shù)組的聲明,,,,一維數(shù)組的存儲(chǔ),在數(shù)組聲明符中,當(dāng)僅出現(xiàn)一個(gè)中括號時(shí),所聲明的數(shù)組為一維數(shù)組,版權(quán)所有,復(fù)制注明出處,int arr[5] = {11, 12, 13, 14, 15};,Demo7_2,一維數(shù)組的存儲(chǔ),一維數(shù)組注

8、意:數(shù)組中每一個(gè)元素的類型必須相同。數(shù)組名的命名規(guī)則與普通標(biāo)識(shí)符的命名規(guī)則相同。常表達(dá)式的值為數(shù)組的大小,它表示數(shù)組中最多允許存放的元素個(gè)數(shù)。數(shù)組名代表整個(gè)數(shù)組在內(nèi)存中存儲(chǔ)的首地址。,版權(quán)所有,復(fù)制注明出處,Demo7_3,一維數(shù)組存儲(chǔ),版權(quán)所有,復(fù)制注明出處,/*源文件:demo7_2.c*/#include #include int main(void){ int a[10] = {11, 12, 13,

9、 14, 15, 16, 17, 18, 19, 110}; printf("%d\n", sizeof(a)); printf("%d\n", sizeof(&a[0])); printf("%X\n", a + 1); printf("%X\n", &a + 1);

10、 printf("%X\n", &a[0] + 1); system("PAUSE"); return 0;},一維數(shù)組的初始化,一維數(shù)組的初始化形式:可以在聲明時(shí)初始化數(shù)組的全部元素可以在聲明時(shí)初始化部分元素在聲明數(shù)組時(shí)初始化可以省略數(shù)組長度字符串?dāng)?shù)組初始化:普通數(shù)組的初始化實(shí)用字面值進(jìn)行賦值變長數(shù)組不可初始化,版權(quán)所有,復(fù)制注明出處,一

11、維數(shù)組的初始化,版權(quán)所有,復(fù)制注明出處,注意: 1.數(shù)組初始化,右邊用{ },元素用,間隔. 2.字符數(shù)組賦值時(shí)在內(nèi)容后面自動(dòng)加\0。,一維數(shù)組存取練習(xí),總結(jié):對于大小為N的一維數(shù)組p,取得第i個(gè)元素的方法P[i-1]*(&p[i-1])*(&p+i-1)例7-2 編寫程序從鍵盤上接收10個(gè)整數(shù)到一個(gè)一維數(shù)組中,之后,在屏幕上逐行輸出這10個(gè)數(shù),版權(quán)所有,復(fù)制注明出處,一維數(shù)組存取練習(xí),版權(quán)所有,

12、復(fù)制注明出處,/*源文件:demo7_3.c*/#include #include #define ARRAY_SIZE 10 int main(void){ int a[ARRAY_SIZE]; int i; for(i = 0; i < ARRAY_SIZE ; i++) { printf("請輸入第%d 個(gè)數(shù):", i+1);

13、 scanf(“%d”, &a[i]); } for(i = 0; i < ARRAY_SIZE ; i++) { printf("第%d 個(gè)數(shù)是:%d\n", i + 1, a[i]); } system("PAUSE"); return 0;},一維數(shù)組存取練習(xí),例7-2 假設(shè)數(shù)組中元

14、素為:{10292, 23223, 99923,22,4234,348092,942,9934},請編程求出所有元素的和及平均值,版權(quán)所有,復(fù)制注明出處,一維數(shù)組存取練習(xí),版權(quán)所有,復(fù)制注明出處,/*源文件:demo7_4.c*/#include #include int main(void){ int a[ ] ={10292, 23223, 99923, 22, 4234, 348092, 942, 9934};

15、 int sum = 0; double average = 0; for(int i = 0; i < 8; i++) { sum += a[i]; } average = sum*1.0 / 8; /*計(jì)算平均值*/ printf("數(shù)組中元素的和為:%d\n", sum); p

16、rintf("數(shù)組中元素的平均值為: %f\n", average); system("PAUSE"); return 0;},累加器初值為0,數(shù)組本身沒有檢查越界的功能,程序員需要自己控制上界和下界,數(shù)組練一練,練習(xí)1:輸入10個(gè)整數(shù)。找出數(shù)組的最大值。練習(xí)2:輸入10個(gè)整數(shù)。對數(shù)組排序。練習(xí)3:輸入10個(gè)整數(shù)。將數(shù)組逆制。練習(xí)4:輸入10個(gè)整數(shù)。添加刪除元素。,版

17、權(quán)所有,復(fù)制注明出處,版權(quán)所有,復(fù)制注明出處,本章授課內(nèi)容,,,數(shù)組指針與指針數(shù)組,一維數(shù)組與字符串,二維數(shù)組,一維數(shù)組,數(shù)組的聲明,,,,二維數(shù)組的存儲(chǔ),在數(shù)組聲明符中,當(dāng)僅出現(xiàn)兩個(gè)中括號時(shí),所聲明的數(shù)組為二維數(shù)組,版權(quán)所有,復(fù)制注明出處,int a[2][3];,二維數(shù)組的存儲(chǔ),版權(quán)所有,復(fù)制注明出處,int a[2][3] ={1,2,3,4,5,6};,二維數(shù)組的存儲(chǔ),版權(quán)所有,復(fù)制注明出處,demo7_4,a,&a

18、,a[0],&a[0],a[0][0],&a[0][0]各表示什么含義呢?,int a[2][3];,二維數(shù)組的存儲(chǔ),&a 表示數(shù)組地址。a 表示首行地址。&a[0] 表示首行地址。a[0] 表示行首元素地址。a[0][0] 表示首元素。&a[0][0] 表示首元素地址。,版權(quán)所有,復(fù)制注明出處,二維數(shù)組的存儲(chǔ),總結(jié):二維數(shù)組在內(nèi)存中仍然是按一維數(shù)組的方式存儲(chǔ)的p[i][j]在內(nèi)

19、存中是數(shù)組的第i*M+j+1個(gè)元素二維數(shù)組在內(nèi)存中是按行存儲(chǔ)的二維數(shù)組的第x個(gè)元素,是p[x/M][x%M]二維數(shù)組中的元素的類型必須相同數(shù)組名的命名規(guī)則與普通標(biāo)識(shí)符的命名規(guī)則相同p[i][j]是數(shù)組中第i+1行第j+1列的元素?cái)?shù)組名代表整個(gè)數(shù)組在內(nèi)存中存儲(chǔ)的首地址,版權(quán)所有,復(fù)制注明出處,二維數(shù)組的初始化,二維數(shù)組的初始化形式:聲明數(shù)組的時(shí)候可以同時(shí)對數(shù)組進(jìn)行初始化,即指定數(shù)組中的若干或全部元素在初始化時(shí),可以省略二維

20、數(shù)組聲明符中第一個(gè)中括號的常表達(dá)式字符串?dāng)?shù)組初始化:普通數(shù)組的初始化實(shí)用字面值進(jìn)行賦值變長數(shù)組不可初始化,版權(quán)所有,復(fù)制注明出處,二維數(shù)組初始化,例7-4 請觀察下面的聲明語句。int a1[3][4] = {{1,2,3,4}, {5,6,7,8}, {9, 10, 11, 12}};int a2[3][4] = {1,2,3,4,5,6,7,8,9,10,11, 12}; int a3[3][3] = {{1, 2},

21、 {3}}; int a4[3][3] = {1, 2, 0, 3};int a5[][3] = {{1, 2, 3}, {4, 5}};int a6[][3] = {1, 2, 3, 4, 5, 0};char a7[3][5] ={{‘a(chǎn)’,‘b’,‘c’,‘d’, ‘\0’}, {‘e’,‘f’,‘g’,‘h’,‘\0’},{‘i’,‘j’,‘k’,‘l’, ‘\0’}};char a8[3][5] ={“abce”,

22、 “efgh”, “ijkl”};,版權(quán)所有,復(fù)制注明出處,二維數(shù)組的存儲(chǔ)練習(xí),總結(jié):對于p[N][M]:p[i][j]的等價(jià)形式為:*(&p[i][j])、*(p[i] +j)、*(&p[0][0]+i*N +j)&p[i][j]的等價(jià)形式為:p[i] + j、&p[0][0]+i*N +j,版權(quán)所有,復(fù)制注明出處,二維數(shù)組的存儲(chǔ)練習(xí),例7-8 聲明一個(gè)4 行3 列的二維數(shù)組,從鍵盤上依次

23、接收12 個(gè)數(shù)到該數(shù)組中。 此后,以二維的方式在屏幕上顯示出二維數(shù)組中的各元素,版權(quán)所有,復(fù)制注明出處,二維數(shù)組的存儲(chǔ)練習(xí),版權(quán)所有,復(fù)制注明出處,/*源文件:demo7_5.c*/#include #include #define ROW_COUNT 4 /*ROW_COUNT 代表二維數(shù)組的行大小*/#define COL_COUNT 3 /*COL_COUNT 代表二維數(shù)組的列大小*/int main(void){

24、 int a[ROW_COUNT][COL_COUNT]; for(int i = 0; i < ROW_COUNT * COL_COUNT ; i++) { printf(“%d 行,%d 列:", i/COL_COUNT + 1, i%COL_COUNT + 1); scanf("%d", &a[i/COL_COUNT]

25、[i%COL_COUNT]); } printf("您剛才輸入的二維數(shù)組中的元素以二維方式顯示如下:\n"); for(int i = 0; i < ROW_COUNT; i++) { for(int j = 0; j < COL_COUNT; j++) { printf("%d ", a[i][j])

26、;} printf("\n"); } system("PAUSE"); return 0;},二維數(shù)組的存儲(chǔ),版權(quán)所有,復(fù)制注明出處,注意: 1.如何在一重循環(huán)體內(nèi)存取二維數(shù)組 2.如何在二重循環(huán)體內(nèi)存取二維數(shù)組,問題:如何將二維數(shù)組P[3][4]轉(zhuǎn)變成一維數(shù)組Q[12]

27、?,版權(quán)所有,復(fù)制注明出處,本章授課內(nèi)容,,,數(shù)組指針與指針數(shù)組,一維數(shù)組與字符串,二維數(shù)組,一維數(shù)組,數(shù)組的聲明,,,,一維數(shù)組與字符串,用于存放字符的一維數(shù)組稱為一維字符數(shù)組字符數(shù)組的初始化:傳統(tǒng)的字符集合方式字符串字面值方式,版權(quán)所有,復(fù)制注明出處,/*源文件:demo7_7.c*/#include #include //為使用system函數(shù)#define ARRAY_SIZE 100 /*一維字符數(shù)組a 的長度*

28、/int main(void){ char a[ARRAY_SIZE]; printf("輸入字符串(不能含有空格,長度不超過%d):", ARRAY_SIZE); scanf("%s", a); printf("你剛才輸入的字符串為:%s\n", a); system("PAUSE"); re

29、turn 0;},版權(quán)所有,復(fù)制注明出處,本章授課內(nèi)容,,,數(shù)組指針與指針數(shù)組,一維數(shù)組與字符串,二維數(shù)組,一維數(shù)組,數(shù)組的聲明,,,,指針數(shù)組與數(shù)組指針,int *p[10]; int a[10]; int *p = a;int a[10]; int (*p)[10] = &a;int a[10]; int *p = &a[0];int *p[10][8];int a[10][8]; int (*p)[8]

30、 = a;int a[10][8]; int (*p)[10][8] = &a;int a[10][8]; int *p = &a[0][0]; int a[10][8]; int (*p)[8] = &a[0];int a[10][8]; int *p = a[0];,版權(quán)所有,復(fù)制注明出處,問題:如何區(qū)分指針的數(shù)組、指向數(shù)組的指針、指向特定長度數(shù)組的指針?,指針數(shù)組與數(shù)組指針,版權(quán)所有,復(fù)制注明出

31、處,注意: 函數(shù)與數(shù)組聲明符的優(yōu)先順序高于指針聲明符,通過優(yōu)先級可以區(qū)分.,int *p[10]; int *p = a; int (*p)[10] = &a; int *p = &a[0]; int *p[10][8];int (*p)[8] = a; int (*p)[10][8] = &a;int *p = &a[0][0];int (*p)[8] = &a[0];in

32、t *p = a[0];,Demo7_9,指向特定長度數(shù)組的指針,例7-10 有一個(gè)二維數(shù)組int a[4][3]={{3, 16, 87}, {65, 4, 32}, {11, 108, 10}, {25, 27,12}};,請編程找出各行的最大值,版權(quán)所有,復(fù)制注明出處,指向特定長度數(shù)組的指針,版權(quán)所有,復(fù)制注明出處,/*源文件:demo7_8.c*/#include #include #include #define RO

33、W_COUNT 4 /*ROW_COUNT 代表二維數(shù)組的行大小*/#define COL_COUNT 3 /*COL_COUNT 代表二維數(shù)組的列大小*/int main(void){ int a[ROW_COUNT][COL_COUNT] = {{3,16,87}, {65,4,32},

34、 {11,108,10} ,{25,27,12}}; int max[ROW_COUNT]; int (*p)[COL_COUNT] = 0; int *q = 0;,指向特定長度數(shù)組的指針,版權(quán)所有,復(fù)制注明出處,for(int i = 0; i < ROW_COUNT; i++) { p = &a[i];

35、 q = (int *)p; max[i] = INT_MIN; for(j = 0; j < COL_COUNT; j++) { if(max[i] < *q) max[i] = *q;

36、 q++; } } printf("各行的最大值如下:"); for(int i = 0; i < ROW_COUNT; i++) { printf("%d ", max[i]); } printf("\n");

37、 system("PAUSE"); return 0;},指向特定長度數(shù)組的指針,版權(quán)所有,復(fù)制注明出處,注意: 1.如何在一個(gè)一維數(shù)組中找最大值,最小值. 2.如何利用指向特定長度數(shù)組的指針逐行訪問二維數(shù)組.,版權(quán)所有,復(fù)制注明出處,本章小結(jié),講述了數(shù)組聲明符、數(shù)組聲明的方法。講述了一維數(shù)組、二維數(shù)組在內(nèi)存中的存儲(chǔ)。講述了通過下標(biāo)方式訪問數(shù)組中各元素的方法。講述了通過指向數(shù)組的指針訪問數(shù)組中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論