C語言復(fù)習(xí)提綱(縮減)_第1頁
C語言復(fù)習(xí)提綱(縮減)_第2頁
C語言復(fù)習(xí)提綱(縮減)_第3頁
C語言復(fù)習(xí)提綱(縮減)_第4頁
C語言復(fù)習(xí)提綱(縮減)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言復(fù)習(xí)提綱第一章 C語言程序設(shè)計概述一、結(jié)構(gòu)化程序設(shè)計的基本思想是采用"自頂向下,逐步細化、模塊化設(shè)計、結(jié)構(gòu)化編碼"的程序設(shè)計方法和"單入口單出口"的控制結(jié)構(gòu)。二、三種基本結(jié)構(gòu)順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)三、C程序的基本組成:C程序是由若干個函數(shù)構(gòu)成的,至少有一個主函數(shù)main(),main()的位置可以任意,其他各函數(shù)在程序中的前后位置也是可以任意的。程序的執(zhí)行總是從主函數(shù)開始,在主函數(shù)中結(jié)束。主函數(shù)是可以調(diào)用其他任何非主函數(shù)的函數(shù),任何非主函數(shù)也可以調(diào)用其它任何非主函數(shù)。C程序的基本組成:聲明區(qū)、主程序區(qū)、函數(shù)定義區(qū)。1、聲明區(qū)處在程序文件的所有

2、函數(shù)的外部,一般包含:包含頭文件、宏定義、類定義、結(jié)構(gòu)體定義、函數(shù)聲明、全局變量聲明、條件編譯等。2、主程序區(qū)主程序以main()函數(shù)開始,main()函數(shù)(主函數(shù))是程序運行時的入口,包含局部變量的聲明、函數(shù)調(diào)用、一般運算、結(jié)構(gòu)控制、對象與結(jié)構(gòu)的處理、文件處理等。3、函數(shù)定義區(qū)函數(shù)的定義包含函數(shù)說明和函數(shù)體兩部分。4、注釋/或/* */為注釋,不能嵌套不產(chǎn)生編譯代碼,不影響程序的執(zhí)行效率。四、標識符1、標識符的定義:用來對變量、符號常量名、函數(shù)、數(shù)組、類型等命名的有效字符序列統(tǒng)稱為標識符。2、標識符的命名規(guī)則:由字母、數(shù)字或下畫線組成,并且第1個字符必須為字母或下畫線。注意:標識符區(qū)分大小寫

3、,即大寫字母和小寫字母的通常意義不同,且不能與關(guān)鍵字重名。練習(xí)1_1:下列變量標識符哪些是正確的,哪些是不正確的?a3bc if a!bc _abc abc _3abc a_bc 3abc3、標識符分類:關(guān)鍵字、預(yù)定義標識符、用戶自定義標識符。第二章 數(shù)據(jù)類型、運算符和表達式圖2_1 C語言的數(shù)據(jù)類型數(shù)據(jù)類型基本類型空類型(無值類型)void構(gòu)造類型指針類型實型(浮點型)聯(lián)合型類型union單字符型char整型int單精度型float雙精度型double字符型寬字符型w-char邏輯型bool類類型class枚舉類型enum結(jié)構(gòu)類型struct數(shù)組類型一、C語言的數(shù)據(jù)類型C語言中基本數(shù)據(jù)類型包

4、括整型、實型、字符型、枚舉類型,構(gòu)造類型有數(shù)組、結(jié)構(gòu)體、共用體等。 二、常量和變量、常量:在程序運行的整個過程中,其值始終保持不變的量。n 整型常量:表示形式有十進制、八進制(以0開頭)和十六進制(以0x或0X開頭)。整型常量可以后綴字母L(或l)表示長整數(shù),后綴字母U(或u)表示無符號整數(shù)。n 實型常量(浮點型常量):表示形式有一般形式和指數(shù)形式。實型常量缺省為double型(雙精度型),如后綴f或F,則為float型(單精度型)。n 字符常量:用單撇號括起來的一個字符。如'A','*'等。轉(zhuǎn)義字符:用反斜杠引導(dǎo)的,具有特定含義的字符(見P22表2-4),如

5、'n','367','x8a'。注:C語言字符集中的任何一個字符均可用轉(zhuǎn)義字符來表示。n 字符串常量:用雙撇號括起來的字符序列。如"student","廣東廣州"等。n 布爾常量:false,true。 n 符號常量:² #define 宏名 常數(shù)練習(xí)2_1:下列哪些是合法的常量:12.7f 0986 0986.012 、0625L 87U-0x98C2 01a -6.87E-2 1.2e0.5 E-3 0xFF 2L '72' 160 -0xffff5E2.0 -0xc

6、df 1.3E 2E0 0668(21)011 (22)0xe (23)-01 (24)-0x48a (25)0x變量:指程序在運行時其值可改變的量。n 變量應(yīng)先定義(聲明其類型和名稱)后使用; n 變量定義的一般形式為: u < 數(shù)據(jù)類型 > <變名1>,<變名2>,<變名n>;n 在定義一個變量的同時,也可以給它賦以初值。 練習(xí)2_2以下正確的變量標識符是3abc $amount Num_of_Student if a!bc _above _abc a>b sin day三、運算符和表達式1、算術(shù)運算符和算術(shù)表達式注意:int i=1.

7、2*3; /結(jié)果為3,而不是3.6。 int i=5/3結(jié)果為1。表達式175的結(jié)果是3,表達式175的結(jié)果是2。2、賦值運算符和賦值表達式注意:n 賦值運算符的結(jié)合性是從右至左的n 復(fù)合賦值運算符:int a=12; a+=a-=a*=a;(a=a+(a=a-(a=a*a),結(jié)果為0)注意:在C語言中,定義inta=b=c=3;是錯誤的,而定義inta,b,c; a=b=c=3;是正確的。 練習(xí)2_3設(shè)m=9,i=3,則執(zhí)行運算m%=i+1后,m的值是多少?結(jié)果1。m=m%(i+1)m=9%(3+1)m=1。3、關(guān)系運算符和關(guān)系表達式注意:n 關(guān)系運算符的優(yōu)先級低于算術(shù)運算符。例如:a+b&

8、gt;c 等價于 (a+b)>c,a!=b>c等價于a!=(b>c) n “=”與“=”的區(qū)別4、邏輯運算符與邏輯表達式注意:n 邏輯非的優(yōu)先級最高,邏輯與次之,邏輯或最低練習(xí)2_4 若有int a=3,b=0;則表達式a&&!b的值為1。練習(xí)2_5設(shè)有變量說明:int a=8,b=7;那么執(zhí)行語句:printf("%d,%d n",+a,b-),輸出的結(jié)果是9,7練習(xí)2_6設(shè)a,b,c均為int型變量,則執(zhí)行語句a=b=3;c=+a|+b;后,b的值為3。練習(xí)2_7設(shè)x、y和z都是int型變量,且x=8, y=3, z=5, 則表達式x*

9、y/z+6-14%z的值為6。練習(xí)2_8設(shè)有定義:intx=1,y=-1;則執(zhí)行語句printf("%dn",(x-&+y);后的輸出結(jié)果是0。練習(xí)2_9 設(shè)x,y,z,t均為int型變量,則執(zhí)行以下語句x=y=z=1;t=+x|+y&&+z; 后,x、y、z、t的值分別為2,1,1,1。6、條件運算符表達式1?表達式2:表達式3注意:n 結(jié)合性是自右向左。a>b?a:c>d?c:d相當(dāng)于a>b?a:(c>d?c:d)n 條件運算符的優(yōu)先級別高于賦值運算符,低于關(guān)系運算符和算術(shù)運算符。如:a>b?a-b:b-a相當(dāng)于a&

10、gt;b?(a-b):(b-a) 練習(xí)2_10設(shè)有變量說明:int x=3,y=5;那么表達式:z=x>y?x:y運算后,z的值是5。7、位運算符位運算符是對其操作數(shù)按其二進制形式逐位進行運算,參加位運算的操作數(shù)必須為整數(shù)。練習(xí)2_11 int a=5,b=6;a&b=4;a|b=7;ab=3;b=-7;b<<2=24;b>>2=1。注:在位運算中,操作數(shù)左移三位,其結(jié)果相當(dāng)于操作數(shù)乘以8。8、逗號運算符表達式, 表達式, , 表達式n注意:自左至右,依次計算各表達式的值,“表達式n” 的值即為整個逗號表達式的值。如:a = 3 * 5, a * 4, a

11、 + 5的值為20。四、運算符的優(yōu)先級與結(jié)合性1、所謂結(jié)合性是指,當(dāng)一個操作數(shù)兩側(cè)的運算符具有相同的優(yōu)先級時,該操作數(shù)是先與左邊的運算符結(jié)合,還是先與右邊的運算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是語言的獨有概念。除單目運算符、賦值運算符和條件運算符是右結(jié)合性外,其它運算符都是左結(jié)合性。2、表達式求值n 按運算符的優(yōu)先級高低次序執(zhí)行。例如,先乘除后加減。n 如果在一個運算對象(或稱操作數(shù))兩側(cè)的運算符的優(yōu)先級相同,則按語言規(guī)定的結(jié)合方向(結(jié)合性)進行。例如,算術(shù)運算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a b + c”時,變量b先與減號結(jié)合,執(zhí)行“a - b”

12、;然后再執(zhí)行加c的運算。練習(xí)2_12 設(shè)int x=2,y=3,z=4; 執(zhí)行語句行x+;y+=1;z=x+y-以后,x,y和z的值分別是多少?答案:3,3,7練習(xí)2_13 若有定義int m=2;則邏輯表達式(m=3)&&(m= =3)的值是1。練習(xí)2_14 如果a=5,b=3,c=7,d=9,則條件表達式a<b?a:c<d?c:d的值為多少?結(jié)果為7。練習(xí)2_15設(shè)a=5,b=6,c=7,d=8,m=2,n=2,執(zhí)行(m=a>b) && (n=c>d);后,n的值為2。練習(xí)2_16 如果a=5,b=3,c=7,d=9,則條件表達式a&

13、lt;b?a:c<d?c:d的值為7。第三章 順序結(jié)構(gòu)程序設(shè)計一、順序結(jié)構(gòu)程序設(shè)計數(shù)據(jù)的輸入和輸出1、格式化輸出printf()函數(shù)n printf()函數(shù)的一般格式如下:printf("格式字符串" ,輸出項表);² 輸出項表:要輸出的數(shù)據(jù)項(可以沒有,有多個時以“,”分隔)² 格式控制串:包含兩種信息格式說明: %修飾符格式字符 ,用于指定輸出格式如:格式控制字符“%c”表示的含義是輸出一個字符型數(shù)據(jù)。普通字符或轉(zhuǎn)義序列:原樣輸出。n 格式控制字符:表3_1 printf()函數(shù)格式字符格式轉(zhuǎn)換字符含義舉例%d,%i以十進制整數(shù)輸出int a=

14、65;printf(“%d”,a)/65%c輸出一個字符型數(shù)據(jù)int a=65;printf(“%c”,a)/A%s輸出一個字符串printf(“%s”,“abcd”)/abcd%e,%E以指數(shù)形式輸出一個浮點型數(shù)據(jù)(小數(shù)位數(shù)缺省值為6位)float x=984.235497426;printf("%e",x);/9.842355e+002%f(有效數(shù)字6-7位)以十進制小數(shù)形式輸出一個浮點型數(shù)據(jù)(小數(shù)位數(shù)缺省值為6位)float x=984.235432426;printf("%f",x);/984.235413%g,%G按照%e,%f輸出寬度較短的格

15、式輸出,不輸出無意義的0float x=23.240;printf("%g",x);/23.24n 修飾符:表3_2 printf()函數(shù)修飾符修飾符功能示例m數(shù)據(jù)最小寬度. >m,正常輸出;<m ,左補空格.int a=36;printf("a=%5dn",a);/36.n對實數(shù),表示輸出n位小數(shù);對字符串,表示截取的字符個數(shù)float a=123.456;printf("a=%8.2fn",a);/123.46輸出的數(shù)值靠左端,右邊補空格。printf("s=%-5.3s","guangd

16、ong")/gua 0小于指定寬度左邊補0。int b=789;printf("b=%05dn",b);/00789如:在C程序的格式輸出中,%d表示輸出十進制整數(shù),%6.2f表示輸出長度為6位,有2位小數(shù)的實數(shù)。printf("s=%-5.3s","student");的輸出結(jié)果是s=stu 。2、格式化輸入scanf()函數(shù)scanf()函數(shù)的一般格式scanf("格式字符串", 輸入項首地址表);注:格式輸入函數(shù)scanf()可以從鍵盤上接收不同數(shù)據(jù)類型的數(shù)據(jù)。格式化輸出函數(shù)(printf())和格

17、式化輸入函數(shù)(scanf())都包含在頭文件“stdio.h”中。n 格式字符串。格式字符串可以包含3種類型的字符:格式指示符、空白字符(空格、Tab鍵和回車鍵)和非空白字符(又稱普通字符)。格式指示符與printf()函數(shù)的相似,空白字符作為相鄰2個輸入數(shù)據(jù)的缺省分隔符,非空白字符在輸入有效數(shù)據(jù)時,必須原樣一起輸入。n 輸入項首地址表由若干個輸入項首地址組成,相鄰2個輸入項首地址之間,用逗號分開。輸入項首地址表中的地址,可以是變量的首地址,也可以是字符數(shù)組名或指針變量。變量首地址的表示方法: &變量名其中“&”是地址運算符。n 數(shù)據(jù)輸入操作² 如果相鄰2個格式指示符

18、之間,不指定數(shù)據(jù)分隔符(如逗號、冒號等),則相應(yīng)的2個輸入數(shù)據(jù)之間,至少用一個空格分開,或者用Tab鍵分開,或者輸入1個數(shù)據(jù)后,按回車,然后再輸入下1個數(shù)據(jù)。例如,scanf("%d%d",&num1,&num2);假設(shè)給num1輸入12,給num2輸入36,則正確的輸入操作為:1236或者:12 36 注:使用“”符號表示按回車鍵操作,在輸入數(shù)據(jù)操作中的作用是,通知系統(tǒng)輸入操作結(jié)束。² “格式字符串”中出現(xiàn)的普通字符(包括轉(zhuǎn)義字符形式的字符),務(wù)必原樣輸入。 例如,scanf("%d,%d",&num1,&nu

19、m2); 假設(shè)給num1輸入12,給num2輸入36,正確的輸入操作為:12,36練習(xí)3_1已有定義doubled,f;,數(shù)據(jù)的輸入方式為:3.69<CR>3.2<CR>,根據(jù)定義和數(shù)據(jù)的輸入方式,輸入函數(shù)語句的正確形式為scanf("%lf%lf",&d,&f)。(scanf("%4.2lf%3.1lf",&d,&f) 或scanf("%4.2f%3.1f",&d,&f)都是錯誤的)練習(xí)3_2 有下列程序段int m=2, n=2;n = m+ -1;print

20、f("%d %dn", m ,n); 輸出結(jié)果是3,1。第四章 選擇結(jié)構(gòu)程序設(shè)計一、算法1、算法的概念:算法是指為解決一個問題而采取的確定的、有限的方法和步驟。2、算法的描述方法最常用的有自然語言、流程圖、N-S流程圖、PAD圖和偽代碼等。二、順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計中最簡單、最常見的一種程序結(jié)構(gòu)。順序結(jié)構(gòu)中的語句是按照書寫的先后次序執(zhí)行的,并且每個語句都會被執(zhí)行到。練習(xí)4_1 編寫一個程序,從鍵盤上輸入一個學(xué)生5門課的成績,計算出該學(xué)生的總成績和平均成績,并用自然語言描述算法。解:設(shè)變量 a、b、c、d、e分別表示學(xué)生5門課的成績,sum表示總成績,ave

21、r表示平均成績, 則用自然語言描述算法如下:輸入學(xué)生5門課的成績a、b、c、d、e;求總成績sum=a+b+c+d+e;求平均成績: aver =sum/5.0;輸出總成績和平均成績。程序如下:#include <stdio.h>main()float a,b,c,d,e,sum,aver;printf("請輸入學(xué)生5門課的成績n");scanf("%f,%f,%f,%f,%f",&a,&b,&c,&d,&e);sum=a+b+c+d+e;aver=sum/5.0;printf("總成績=%0

22、.2f,平均成績=%.2fn",sum,aver);練習(xí)4_2 編寫一個程序,從鍵盤輸入梯形的上底、下底和高的值(浮點數(shù)),計算并輸出其面積(保留兩位小數(shù)),并用N-S結(jié)構(gòu)圖表示算法。 解:設(shè)變量a、b、h、area分別表示梯形的上底、下底、高和面積,則用N-S結(jié)構(gòu)圖表示算法如下:輸入梯形的上底a、下底b和高h計算梯形的面積: area=(a+b)*h/2.0輸出結(jié)果。 程序如下:#include <stdio.h>main()float a,b,h,area;printf("請輸入梯形的上底、下底和高n");scanf("%f,%f,%f&

23、quot;,&a,&b,&h); area=(a+b)*h/2.0;printf("梯形的面積為%0.2fn",area);練習(xí)4_3 編寫一個程序,從鍵盤輸入圓的半徑,計算并輸出圓的周長和面積(保留兩位小數(shù)),用偽代碼表示出算法。解:設(shè)用變量r 、length、area分別表示圓的半徑、周長和面積,則用偽代碼表示算法如下:BEGIN input r length=2*3.14*r area=3.14*r*r print length,areaEND程序如下:#include <stdio.h>#define PI 3.14main()f

24、loat r,length,area;printf("請輸入圓的半徑n");scanf("%f",&r);length=2*PI*r;area=PI*r*r;printf("圓的周長為%0.2fn",length);printf("圓的面積為%0.2fn",area); 三、選擇結(jié)構(gòu)程序設(shè)計1、if語句、if語句的一般格式 if(表達式) 語句組1; else 語句組2; n if語句中的“表達式”必須用“(”和“)”括起來。表示程序執(zhí)行的條件,常用關(guān)系運算符、邏輯運算符等表示的條件表達式,其結(jié)果只有兩個值

25、“1”或“0”(成立或不成立)。如:表示字符型變量ch是大寫英文字符的C語言表達式是ch>='A'&&ch<='Z',要判斷字符變量ch中的值是否為數(shù)字字符,則其表達式是ch>='0'&&ch<='9'。n else子句(可選)是if語句的一部分,必須與if配對使用,不能單獨使用。n 當(dāng)if和else下面的語句組,僅由一條語句構(gòu)成時,也可不使用復(fù)合語句形式(即去掉花括號)。、if語句的執(zhí)行過程n 缺省else子句時n 當(dāng)“表達式”的值不等于0(即判定為“邏輯真”)時,則執(zhí)行語

26、句組1,否則直接轉(zhuǎn)向執(zhí)行下一條。n 指定else子句時n 當(dāng)“表達式”的值不等于0(即判定為“邏輯真”)時,則執(zhí)行語句組1,然后轉(zhuǎn)向下一條語句;否則,執(zhí)行語句組2。、if語句的嵌套與嵌套匹配原則n if語句允許嵌套。所謂if語句的嵌套是指,在“語句組1”或(和)“語句組2”中,又包含有if語句的情況。n if語句嵌套時,為避免嵌套的if-else語句的二義性,C語言規(guī)定:else總是與在其之前最近的未配對的if語句組成配對關(guān)系。練習(xí)4_4:鐵路托運行李,假設(shè)每張車票可按每公斤0.3元托運40公斤以內(nèi)的行李,如果超過40公斤時,超過的部分每公斤加價0.5元,試編寫一道計算行李托運費的程序。解:/

27、*程序功能:計算行李托運費*/#include <stdio.h>Void main() float w,x; printf("輸入行李的重量:"); scanf("%f",&w); if(w>40.0) x=40.0*0.3+(w-40.0)*0.8; else x=w*0.5;printf("行李重量w=%.2f公斤,托運費x=%.2f元n",w,x); 2switch語句、switch語句的一般形式switch(表達式) case 常量表達式1:語句組;break; case 常量表達式2:語句組;br

28、eak; . case 常量表達式:語句組;break; default:語句組;break; 、執(zhí)行過程 n 當(dāng)switch后面“表達式”的值,與某個case后面的“常量表達式”的值相同時,就執(zhí)行該case后面的語句(組);當(dāng)執(zhí)行到break語句時,跳出switch語句,轉(zhuǎn)向執(zhí)行switch語句的下一條。n 如果沒有任何一個case后面的“常量表達式”的值,與“表達式”的值匹配,則執(zhí)行default 后面的語句(組)。然后,再執(zhí)行switch語句的下一條。說明n switch后面的“表達式”,可以是int、char和枚舉型中的一種。n 每個case子句后面的“常量表達式”的值,必須各不相同,

29、否則會出現(xiàn)相互矛盾的現(xiàn)象(即對表達式的同一值,有兩種或兩種以上的執(zhí)行方案)。n case后面的常量表達式僅起語句標號作用,并不進行條件判斷。系統(tǒng)一旦找到入口標號,就從此標號開始執(zhí)行,不再進行標號判斷,所以要退出switch語句,方法是使用break語句。n 各case及default子句的先后次序,不影響程序執(zhí)行結(jié)果。n 多個case子句,可共用同一語句(組)n 用switch語句實現(xiàn)的多分支結(jié)構(gòu)程序,完全可以用if語句或if語句的嵌套來實現(xiàn)。練習(xí)4_5以下程序段的輸出結(jié)果是int x=7,y=8,z=9;if(x>y) x=y,y=z;z=x;printf("%d,%d,%d

30、n",x,y,z);結(jié)果:7,8,7練習(xí)4_6 以下程序的輸出結(jié)果是#include <stdio.h>void main() int m=5;if(m+>5)printf("%dn",m);elseprintf("%dn",m-);結(jié)果:6練習(xí)4_7 以下程序的輸出結(jié)果是#include <stdio.h>void main()int k=1,x=0,y=0;switch(k)case 0:y+;case 1:x+;case 2:x+;y+;printf("x=%d,y=%dn",x,y);結(jié)

31、果x=2,y=1第五章 循環(huán)結(jié)構(gòu)程序設(shè)計一、循環(huán)程序設(shè)計1、while語句、一般格式 while(循環(huán)繼續(xù)條件) 循環(huán)體語句組;、執(zhí)行過程求解“循環(huán)繼續(xù)條件”表達式。如果其值為非0,轉(zhuǎn);否則轉(zhuǎn)。執(zhí)行循環(huán)體語句組,然后轉(zhuǎn)。執(zhí)行while語句的下一條。練習(xí)5_1:/*程序功能:求1100的累計和*/#include <stdio.h>void main() int i=1,sum=0; /*初始化循環(huán)控制變量i和累計器sum*/ while( i<=100 ) sum += i;/*實現(xiàn)累加*/ i+;/*循環(huán)控制變量i增1*/ printf(“sum=%dn”,sum); 程序

32、運行情況如下:sum=50502、do-while語句(直到型循環(huán))、一般格式 do 循環(huán)體語句組; while(循環(huán)繼續(xù)條件);/*本行的分號不能缺省*/當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時,可以不使用復(fù)合語句形式。、執(zhí)行過程執(zhí)行循環(huán)體語句組。計算“循環(huán)繼續(xù)條件”表達式。如果“循環(huán)繼續(xù)條件”表達式的值為非 0(真),則轉(zhuǎn)向繼續(xù)執(zhí)行;否則,轉(zhuǎn)向。執(zhí)行do-while的下一條語句。、do-while循環(huán)語句的特點是:先執(zhí)行循環(huán)體語句組,然后再判斷循環(huán)條件。因此do.while語句不論條件是否成立,至少要執(zhí)行一次循環(huán)體。練習(xí)5_2:用do-while語句求解1100的累計和。/*程序功能:求1100的

33、累計和*/main() int i=1, sum=0; /*定義并初始化循環(huán)控制變量,以及累計器*/ Do sum += i; /*累加*/ i+; while(i<=100);/*循環(huán)繼續(xù)條件:i<=100*/ printf(“sum=%dn”,sum); 3、for語句、for語句的一般格式 for(變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值) 循環(huán)體語句組;、for語句的執(zhí)行過程求解“變量賦初值”表達式。求解“循環(huán)繼續(xù)條件”表達式。如果其值非0,執(zhí)行;否則,轉(zhuǎn)至。執(zhí)行循環(huán)體語句組,并求解“循環(huán)變量增值”表達式,然后轉(zhuǎn)向。執(zhí)行for語句的下一條語句。、說明“變量賦初值”、“循環(huán)繼續(xù)

34、條件”和“循環(huán)變量增值”部分均可缺省,甚至全部缺省,但其間的分號不能省略。當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時,可以不使用復(fù)合語句形式?!把h(huán)變量賦初值”表達式,既可以是給循環(huán)變量賦初值的賦值表達式,也可以是與此無關(guān)的其它表達式(如逗號表達式)。例如,for(sum=0;i<=100;i+) sum += i; for(sum=0,i=1;i<=100;i+) sum += i;“循環(huán)繼續(xù)條件”部分是一個邏輯量,除一般的關(guān)系(或邏輯)表達式外,也允許是數(shù)值(或字符)表達式。for語句最為靈活,不僅可用于循環(huán)次數(shù)已經(jīng)確定的情況,也可用于循環(huán)次數(shù)雖不確定、但給出了循環(huán)繼續(xù)條件的情況。4、循

35、環(huán)的比較、While和 for都是先判斷后循環(huán),而do-while是先循后判斷。即do-while語句在條件不成立時循環(huán)體也要被執(zhí)行一次。、while和do-while語句的條件表達式只有一個,只起到控制循環(huán)結(jié)束的作用,循環(huán)變量的初值等都用其他語句完成;for語句則有3個表達式,不僅能起到控制循環(huán)結(jié)束的作用,還可給循環(huán)變量賦初值。練習(xí)5_7 對于以下程序段intm=-1;do m=m*m;while(!m);循環(huán)執(zhí)行的次數(shù)為多少?答:1次。練習(xí)5_8 對于以下程序段intk=5; while(k=0)k=k-1;printf("%dn",k);,循環(huán)體執(zhí)行的次數(shù)為多少次?答

36、:0次。練習(xí)5_9 對于以下程序段int a=5;while(a>=1) a-;程序執(zhí)行后,a的值是0。練習(xí)5_10以下程序#include <stdio.h>void main()int i;for(i=0;i<10;i+);printf("%d",i);輸出結(jié)果是10。第六章 數(shù)組數(shù)組是數(shù)目固定、類型相同的若干變量的有序集合。一、一維數(shù)組1、一維數(shù)組的定義:數(shù)據(jù)類型 數(shù)組名常量表達式;n “數(shù)據(jù)類型”是指數(shù)組元素的數(shù)據(jù)類型。n 數(shù)組名,與變量名一樣,必須遵循標識符命名規(guī)則。n “常量表達式”必須用方括號括起來,指的是數(shù)組的元素個數(shù)(又稱數(shù)組長度)

37、,它是一個整型值,其中可以包含常數(shù)和符號常量,但不能包含變量。n 數(shù)組元素的下標,是元素相對于數(shù)組起始地址的偏移量,所以從0開始順序編號。n 數(shù)組名中存放的是一個地址常量,它代表整個數(shù)組的首地址。同一數(shù)組中的所有元素,按其下標的順序占用一段連續(xù)的存儲單元。2、數(shù)組元素的引用引用數(shù)組中的任意一個元素的形式: 數(shù)組名下標表達式練習(xí)6_1:從鍵盤上任意輸入n個整數(shù),用冒泡法按從小到大地排序,并在屏幕上顯示出來。解:冒泡法排序的基本思想:從第一個數(shù)開始依次對相鄰兩數(shù)進行比較,如次序?qū)t不做任何操作;如次序不對則使這兩個數(shù)交換位置。第一遍的(N-1)次比較后,最大的數(shù)已放在最后,第二遍只需考慮(N-1)

38、個數(shù),以此類推直到第(N-1)遍比較后就可以完成排序。#include "stdio.h"#define NUM 10/*定義符號常量(數(shù)據(jù)個數(shù)N)*/main() int dataNUM;/*定義1個1維整型數(shù)組data*/ int i,j,temp;/*定義循環(huán)變量和臨時變量*/ printf("請輸入10個整數(shù):n"); for(i=0; i<NUM; i+) scanf("%d", &datai); /*冒泡法排序*/ for(i=0; i<NUM-1; i+) /*外循環(huán):控制比較趟數(shù)*/ for(j=N

39、UM-1; j>i; j-) /*內(nèi)循環(huán):進行每趟比較*/ if(dataj<dataj-1) /*如果dataj大于dataj-1,交換兩者的位置*/ temp=dataj; dataj=dataj-1; dataj-1=temp; ; /*輸出排序后的數(shù)據(jù)*/ printf("n排序后的數(shù)據(jù):n"); for(i=0; i<NUM; i+) printf("%d ",datai); printf("n"); 練習(xí)6_2下列對一維數(shù)組正確賦初值的語句是A、int a10= "I am a student&

40、quot;; B、char a="I am a student";C、int a3=1,3,5,7,9,1; D、char a3= " I am a student"。練習(xí)6_3、在下面關(guān)于一維數(shù)組的定義中,有語法錯誤的是A、intx=1,2,3,4,5; B、intx5=0;C、intx5; D、 intx;答案:D二、二維數(shù)組1、二維數(shù)組的定義: 數(shù)據(jù)類型 數(shù)組名行常量表達式列常量表達式數(shù)組元素在內(nèi)存中的排列順序為“按行存放”,即先順序存放第一行的元素,再存放第二行,以此類推。2、二維數(shù)組元素的引用形式為:數(shù)組名行下標表達式列下標表達式賦值規(guī)則:按2

41、維數(shù)組在內(nèi)存中的排列順序,將初值表中的數(shù)據(jù),依次賦給各元素。練習(xí)6_5 執(zhí)行int a3=1,3,5,7,9,11;語句后,a10的值是7。練習(xí)6_6 以下對二維數(shù)組a進行正確初始化的是 Aint a23=1,2,3,4,5,6; Bint a3=1,2,3,4,5,6;Cint a2=1,2,3,4,5,6; Dint a2=1,2,3,4;第七章 函數(shù)一、函數(shù)的定義與調(diào)用1、函數(shù)的定義任何函數(shù)(包括主函數(shù)main())都是由函數(shù)說明和函數(shù)體兩部分組成。根據(jù)函數(shù)是否需要參數(shù),可將函數(shù)分為無參函數(shù)和有參函數(shù)兩種。、無參函數(shù)的一般形式 函數(shù)類型 函數(shù)名( void ) 說明語句部分; 可執(zhí)行語句

42、部分; 注意:在舊標準中,函數(shù)可以缺省參數(shù)表。但在新標準中,函數(shù)不可缺省參數(shù)表;如果不需要參數(shù),則用“void”表示,主函數(shù)main()例外。、有參函數(shù)的一般形式函數(shù)類型 函數(shù)名( 數(shù)據(jù)類型 參數(shù),數(shù)據(jù)類型 參數(shù)2 ) 說明語句部分; 可執(zhí)行語句部分; 有參函數(shù)比無參函數(shù)多了一個參數(shù)表。調(diào)用有參函數(shù)時,調(diào)用函數(shù)將賦予這些參數(shù)實際的值。為了與調(diào)用函數(shù)提供的實際參數(shù)區(qū)別開,將函數(shù)定義中的參數(shù)表稱為形式參數(shù)表,簡稱形參表。練習(xí)7_1:定義一個函數(shù),用于求兩個數(shù)中的大數(shù)。解:/*功能:定義一個求較大數(shù)的函數(shù)并在主函數(shù)中調(diào)用*/int max(int n1, int n2) /*定義一個函數(shù)max()*

43、/ return (n1>n2?n1:n2); main()int max(int n1, int n2);/*函數(shù)說明*/ int num1,num2; printf("input two numbers:n"); scanf("%d%d", &num1, &num2);printf("max=%dn", max(num1,num2);、說明函數(shù)定義不允許嵌套(但函數(shù)的調(diào)用可以嵌套)。練習(xí)7_2 寫出以下程序運行的結(jié)果#include <stdio.h>void main()int x=2,y=5;int max(int, int);max(x,y);printf("max=%dn",max(x,y);int max(int a,int b)int temp;if(a>b)temp=a;elsetemp=b;return temp;運行結(jié)果:max=5第八章 指針一、指針和指針變量的概念1、指針即地址一個變量的地址稱為該變量的指針。取變量地址的運算符是,通過變量的指針能夠找到該變量。2指針變量專門用于存儲其它變量地址的變量二、指針變量的定義與應(yīng)用、指針變量的定義: 數(shù)據(jù)類型 *指針變

溫馨提示

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

評論

0/150

提交評論