




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語言復(fù)習(xí)提綱第一章 C語言程序設(shè)計(jì)概述一、結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用"自頂向下,逐步細(xì)化、模塊化設(shè)計(jì)、結(jié)構(gòu)化編碼"的程序設(shè)計(jì)方法和"單入口單出口"的控制結(jié)構(gòu)。二、三種基本結(jié)構(gòu)順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)三、C程序的基本組成:C程序是由若干個(gè)函數(shù)構(gòu)成的,至少有一個(gè)主函數(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ù))是程序運(yùn)行時(shí)的入口,包含局部變量的聲明、函數(shù)調(diào)用、一般運(yùn)算、結(jié)構(gòu)控制、對(duì)象與結(jié)構(gòu)的處理、文件處理等。3、函數(shù)定義區(qū)函數(shù)的定義包含函數(shù)說明和函數(shù)體兩部分。4、注釋/或/* */為注釋,不能嵌套不產(chǎn)生編譯代碼,不影響程序的執(zhí)行效率。四、標(biāo)識(shí)符1、標(biāo)識(shí)符的定義:用來對(duì)變量、符號(hào)常量名、函數(shù)、數(shù)組、類型等命名的有效字符序列統(tǒng)稱為標(biāo)識(shí)符。2、標(biāo)識(shí)符的命名規(guī)則:由字母、數(shù)字或下畫線組成,并且第1個(gè)字符必須為字母或下畫線。注意:標(biāo)識(shí)符區(qū)分大小寫
3、,即大寫字母和小寫字母的通常意義不同,且不能與關(guān)鍵字重名。練習(xí)1_1:下列變量標(biāo)識(shí)符哪些是正確的,哪些是不正確的?a3bc if a!bc _abc abc _3abc a_bc 3abc3、標(biāo)識(shí)符分類:關(guān)鍵字、預(yù)定義標(biāo)識(shí)符、用戶自定義標(biāo)識(shí)符。第二章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式圖2_1 C語言的數(shù)據(jù)類型數(shù)據(jù)類型基本類型空類型(無值類型)void構(gòu)造類型指針類型實(shí)型(浮點(diǎn)型)聯(lián)合型類型union單字符型char整型int單精度型float雙精度型double字符型寬字符型w-char邏輯型bool類類型class枚舉類型enum結(jié)構(gòu)類型struct數(shù)組類型一、C語言的數(shù)據(jù)類型C語言中基本數(shù)據(jù)類型包
4、括整型、實(shí)型、字符型、枚舉類型,構(gòu)造類型有數(shù)組、結(jié)構(gòu)體、共用體等。 二、常量和變量、常量:在程序運(yùn)行的整個(gè)過程中,其值始終保持不變的量。n 整型常量:表示形式有十進(jìn)制、八進(jìn)制(以0開頭)和十六進(jìn)制(以0x或0X開頭)。整型常量可以后綴字母L(或l)表示長(zhǎng)整數(shù),后綴字母U(或u)表示無符號(hào)整數(shù)。n 實(shí)型常量(浮點(diǎn)型常量):表示形式有一般形式和指數(shù)形式。實(shí)型常量缺省為double型(雙精度型),如后綴f或F,則為float型(單精度型)。n 字符常量:用單撇號(hào)括起來的一個(gè)字符。如'A','*'等。轉(zhuǎn)義字符:用反斜杠引導(dǎo)的,具有特定含義的字符(見P22表2-4),如
5、'n','367','x8a'。注:C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)義字符來表示。n 字符串常量:用雙撇號(hào)括起來的字符序列。如"student","廣東廣州"等。n 布爾常量:false,true。 n 符號(hào)常量:² #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變量:指程序在運(yùn)行時(shí)其值可改變的量。n 變量應(yīng)先定義(聲明其類型和名稱)后使用; n 變量定義的一般形式為: u < 數(shù)據(jù)類型 > <變名1>,<變名2>,<變名n>;n 在定義一個(gè)變量的同時(shí),也可以給它賦以初值。 練習(xí)2_2以下正確的變量標(biāo)識(shí)符是3abc $amount Num_of_Student if a!bc _above _abc a>b sin day三、運(yùn)算符和表達(dá)式1、算術(shù)運(yùn)算符和算術(shù)表達(dá)式注意:int i=1.
7、2*3; /結(jié)果為3,而不是3.6。 int i=5/3結(jié)果為1。表達(dá)式175的結(jié)果是3,表達(dá)式175的結(jié)果是2。2、賦值運(yùn)算符和賦值表達(dá)式注意:n 賦值運(yùn)算符的結(jié)合性是從右至左的n 復(fù)合賦值運(yùn)算符:int a=12; a+=a-=a*=a;(a=a+(a=a-(a=a*a),結(jié)果為0)注意:在C語言中,定義inta=b=c=3;是錯(cuò)誤的,而定義inta,b,c; a=b=c=3;是正確的。 練習(xí)2_3設(shè)m=9,i=3,則執(zhí)行運(yùn)算m%=i+1后,m的值是多少?結(jié)果1。m=m%(i+1)m=9%(3+1)m=1。3、關(guān)系運(yùn)算符和關(guān)系表達(dá)式注意:n 關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。例如:a+b&
8、gt;c 等價(jià)于 (a+b)>c,a!=b>c等價(jià)于a!=(b>c) n “=”與“=”的區(qū)別4、邏輯運(yùn)算符與邏輯表達(dá)式注意:n 邏輯非的優(yōu)先級(jí)最高,邏輯與次之,邏輯或最低練習(xí)2_4 若有int a=3,b=0;則表達(dá)式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, 則表達(dá)式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、條件運(yùn)算符表達(dá)式1?表達(dá)式2:表達(dá)式3注意:n 結(jié)合性是自右向左。a>b?a:c>d?c:d相當(dāng)于a>b?a:(c>d?c:d)n 條件運(yùn)算符的優(yōu)先級(jí)別高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。如: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;那么表達(dá)式:z=x>y?x:y運(yùn)算后,z的值是5。7、位運(yùn)算符位運(yùn)算符是對(duì)其操作數(shù)按其二進(jìn)制形式逐位進(jìn)行運(yùn)算,參加位運(yùn)算的操作數(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。注:在位運(yùn)算中,操作數(shù)左移三位,其結(jié)果相當(dāng)于操作數(shù)乘以8。8、逗號(hào)運(yùn)算符表達(dá)式, 表達(dá)式, , 表達(dá)式n注意:自左至右,依次計(jì)算各表達(dá)式的值,“表達(dá)式n” 的值即為整個(gè)逗號(hào)表達(dá)式的值。如:a = 3 * 5, a * 4, a
11、 + 5的值為20。四、運(yùn)算符的優(yōu)先級(jí)與結(jié)合性1、所謂結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是語言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。2、表達(dá)式求值n 按運(yùn)算符的優(yōu)先級(jí)高低次序執(zhí)行。例如,先乘除后加減。n 如果在一個(gè)運(yùn)算對(duì)象(或稱操作數(shù))兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同,則按語言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a b + c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a - b”
12、;然后再執(zhí)行加c的運(yùn)算。練習(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;則邏輯表達(dá)式(m=3)&&(m= =3)的值是1。練習(xí)2_14 如果a=5,b=3,c=7,d=9,則條件表達(dá)式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,則條件表達(dá)式a&
13、lt;b?a:c<d?c:d的值為7。第三章 順序結(jié)構(gòu)程序設(shè)計(jì)一、順序結(jié)構(gòu)程序設(shè)計(jì)數(shù)據(jù)的輸入和輸出1、格式化輸出printf()函數(shù)n printf()函數(shù)的一般格式如下:printf("格式字符串" ,輸出項(xiàng)表);² 輸出項(xiàng)表:要輸出的數(shù)據(jù)項(xiàng)(可以沒有,有多個(gè)時(shí)以“,”分隔)² 格式控制串:包含兩種信息格式說明: %修飾符格式字符 ,用于指定輸出格式如:格式控制字符“%c”表示的含義是輸出一個(gè)字符型數(shù)據(jù)。普通字符或轉(zhuǎn)義序列:原樣輸出。n 格式控制字符:表3_1 printf()函數(shù)格式字符格式轉(zhuǎn)換字符含義舉例%d,%i以十進(jìn)制整數(shù)輸出int a=
14、65;printf(“%d”,a)/65%c輸出一個(gè)字符型數(shù)據(jù)int a=65;printf(“%c”,a)/A%s輸出一個(gè)字符串printf(“%s”,“abcd”)/abcd%e,%E以指數(shù)形式輸出一個(gè)浮點(diǎn)型數(shù)據(jù)(小數(shù)位數(shù)缺省值為6位)float x=984.235497426;printf("%e",x);/9.842355e+002%f(有效數(shù)字6-7位)以十進(jìn)制小數(shù)形式輸出一個(gè)浮點(diǎn)型數(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 ,左補(bǔ)空格.int a=36;printf("a=%5dn",a);/36.n對(duì)實(shí)數(shù),表示輸出n位小數(shù);對(duì)字符串,表示截取的字符個(gè)數(shù)float a=123.456;printf("a=%8.2fn",a);/123.46輸出的數(shù)值靠左端,右邊補(bǔ)空格。printf("s=%-5.3s","guangd
16、ong")/gua 0小于指定寬度左邊補(bǔ)0。int b=789;printf("b=%05dn",b);/00789如:在C程序的格式輸出中,%d表示輸出十進(jìn)制整數(shù),%6.2f表示輸出長(zhǎng)度為6位,有2位小數(shù)的實(shí)數(shù)。printf("s=%-5.3s","student");的輸出結(jié)果是s=stu 。2、格式化輸入scanf()函數(shù)scanf()函數(shù)的一般格式scanf("格式字符串", 輸入項(xiàng)首地址表);注:格式輸入函數(shù)scanf()可以從鍵盤上接收不同數(shù)據(jù)類型的數(shù)據(jù)。格式化輸出函數(shù)(printf())和格
17、式化輸入函數(shù)(scanf())都包含在頭文件“stdio.h”中。n 格式字符串。格式字符串可以包含3種類型的字符:格式指示符、空白字符(空格、Tab鍵和回車鍵)和非空白字符(又稱普通字符)。格式指示符與printf()函數(shù)的相似,空白字符作為相鄰2個(gè)輸入數(shù)據(jù)的缺省分隔符,非空白字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。n 輸入項(xiàng)首地址表由若干個(gè)輸入項(xiàng)首地址組成,相鄰2個(gè)輸入項(xiàng)首地址之間,用逗號(hào)分開。輸入項(xiàng)首地址表中的地址,可以是變量的首地址,也可以是字符數(shù)組名或指針變量。變量首地址的表示方法: &變量名其中“&”是地址運(yùn)算符。n 數(shù)據(jù)輸入操作² 如果相鄰2個(gè)格式指示符
18、之間,不指定數(shù)據(jù)分隔符(如逗號(hào)、冒號(hào)等),則相應(yīng)的2個(gè)輸入數(shù)據(jù)之間,至少用一個(gè)空格分開,或者用Tab鍵分開,或者輸入1個(gè)數(shù)據(jù)后,按回車,然后再輸入下1個(gè)數(shù)據(jù)。例如,scanf("%d%d",&num1,&num2);假設(shè)給num1輸入12,給num2輸入36,則正確的輸入操作為:1236或者:12 36 注:使用“”符號(hào)表示按回車鍵操作,在輸入數(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)都是錯(cuò)誤的)練習(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è)計(jì)一、算法1、算法的概念:算法是指為解決一個(gè)問題而采取的確定的、有限的方法和步驟。2、算法的描述方法最常用的有自然語言、流程圖、N-S流程圖、PAD圖和偽代碼等。二、順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中最簡(jiǎn)單、最常見的一種程序結(jié)構(gòu)。順序結(jié)構(gòu)中的語句是按照書寫的先后次序執(zhí)行的,并且每個(gè)語句都會(huì)被執(zhí)行到。練習(xí)4_1 編寫一個(gè)程序,從鍵盤上輸入一個(gè)學(xué)生5門課的成績(jī),計(jì)算出該學(xué)生的總成績(jī)和平均成績(jī),并用自然語言描述算法。解:設(shè)變量 a、b、c、d、e分別表示學(xué)生5門課的成績(jī),sum表示總成績(jī),ave
21、r表示平均成績(jī), 則用自然語言描述算法如下:輸入學(xué)生5門課的成績(jī)a、b、c、d、e;求總成績(jī)sum=a+b+c+d+e;求平均成績(jī): aver =sum/5.0;輸出總成績(jī)和平均成績(jī)。程序如下:#include <stdio.h>main()float a,b,c,d,e,sum,aver;printf("請(qǐng)輸入學(xué)生5門課的成績(jī)n");scanf("%f,%f,%f,%f,%f",&a,&b,&c,&d,&e);sum=a+b+c+d+e;aver=sum/5.0;printf("總成績(jī)=%0
22、.2f,平均成績(jī)=%.2fn",sum,aver);練習(xí)4_2 編寫一個(gè)程序,從鍵盤輸入梯形的上底、下底和高的值(浮點(diǎn)數(shù)),計(jì)算并輸出其面積(保留兩位小數(shù)),并用N-S結(jié)構(gòu)圖表示算法。 解:設(shè)變量a、b、h、area分別表示梯形的上底、下底、高和面積,則用N-S結(jié)構(gòu)圖表示算法如下:輸入梯形的上底a、下底b和高h(yuǎn)計(jì)算梯形的面積: area=(a+b)*h/2.0輸出結(jié)果。 程序如下:#include <stdio.h>main()float a,b,h,area;printf("請(qǐng)輸入梯形的上底、下底和高n");scanf("%f,%f,%f&
23、quot;,&a,&b,&h); area=(a+b)*h/2.0;printf("梯形的面積為%0.2fn",area);練習(xí)4_3 編寫一個(gè)程序,從鍵盤輸入圓的半徑,計(jì)算并輸出圓的周長(zhǎng)和面積(保留兩位小數(shù)),用偽代碼表示出算法。解:設(shè)用變量r 、length、area分別表示圓的半徑、周長(zhǎng)和面積,則用偽代碼表示算法如下: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("請(qǐng)輸入圓的半徑n");scanf("%f",&r);length=2*PI*r;area=PI*r*r;printf("圓的周長(zhǎng)為%0.2fn",length);printf("圓的面積為%0.2fn",area); 三、選擇結(jié)構(gòu)程序設(shè)計(jì)1、if語句、if語句的一般格式 if(表達(dá)式) 語句組1; else 語句組2; n if語句中的“表達(dá)式”必須用“(”和“)”括起來。表示程序執(zhí)行的條件,常用關(guān)系運(yùn)算符、邏輯運(yùn)算符等表示的條件表達(dá)式,其結(jié)果只有兩個(gè)值
25、“1”或“0”(成立或不成立)。如:表示字符型變量ch是大寫英文字符的C語言表達(dá)式是ch>='A'&&ch<='Z',要判斷字符變量ch中的值是否為數(shù)字字符,則其表達(dá)式是ch>='0'&&ch<='9'。n else子句(可選)是if語句的一部分,必須與if配對(duì)使用,不能單獨(dú)使用。n 當(dāng)if和else下面的語句組,僅由一條語句構(gòu)成時(shí),也可不使用復(fù)合語句形式(即去掉花括號(hào))。、if語句的執(zhí)行過程n 缺省else子句時(shí)n 當(dāng)“表達(dá)式”的值不等于0(即判定為“邏輯真”)時(shí),則執(zhí)行語
26、句組1,否則直接轉(zhuǎn)向執(zhí)行下一條。n 指定else子句時(shí)n 當(dāng)“表達(dá)式”的值不等于0(即判定為“邏輯真”)時(shí),則執(zhí)行語句組1,然后轉(zhuǎn)向下一條語句;否則,執(zhí)行語句組2。、if語句的嵌套與嵌套匹配原則n if語句允許嵌套。所謂if語句的嵌套是指,在“語句組1”或(和)“語句組2”中,又包含有if語句的情況。n if語句嵌套時(shí),為避免嵌套的if-else語句的二義性,C語言規(guī)定:else總是與在其之前最近的未配對(duì)的if語句組成配對(duì)關(guān)系。練習(xí)4_4:鐵路托運(yùn)行李,假設(shè)每張車票可按每公斤0.3元托運(yùn)40公斤以內(nèi)的行李,如果超過40公斤時(shí),超過的部分每公斤加價(jià)0.5元,試編寫一道計(jì)算行李托運(yùn)費(fèi)的程序。解:/
27、*程序功能:計(jì)算行李托運(yùn)費(fèi)*/#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公斤,托運(yùn)費(fèi)x=%.2f元n",w,x); 2switch語句、switch語句的一般形式switch(表達(dá)式) case 常量表達(dá)式1:語句組;break; case 常量表達(dá)式2:語句組;br
28、eak; . case 常量表達(dá)式:語句組;break; default:語句組;break; 、執(zhí)行過程 n 當(dāng)switch后面“表達(dá)式”的值,與某個(gè)case后面的“常量表達(dá)式”的值相同時(shí),就執(zhí)行該case后面的語句(組);當(dāng)執(zhí)行到break語句時(shí),跳出switch語句,轉(zhuǎn)向執(zhí)行switch語句的下一條。n 如果沒有任何一個(gè)case后面的“常量表達(dá)式”的值,與“表達(dá)式”的值匹配,則執(zhí)行default 后面的語句(組)。然后,再執(zhí)行switch語句的下一條。說明n switch后面的“表達(dá)式”,可以是int、char和枚舉型中的一種。n 每個(gè)case子句后面的“常量表達(dá)式”的值,必須各不相同,
29、否則會(huì)出現(xiàn)相互矛盾的現(xiàn)象(即對(duì)表達(dá)式的同一值,有兩種或兩種以上的執(zhí)行方案)。n case后面的常量表達(dá)式僅起語句標(biāo)號(hào)作用,并不進(jìn)行條件判斷。系統(tǒng)一旦找到入口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行,不再進(jìn)行標(biāo)號(hào)判斷,所以要退出switch語句,方法是使用break語句。n 各case及default子句的先后次序,不影響程序執(zhí)行結(jié)果。n 多個(gè)case子句,可共用同一語句(組)n 用switch語句實(shí)現(xiàn)的多分支結(jié)構(gòu)程序,完全可以用if語句或if語句的嵌套來實(shí)現(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è)計(jì)一、循環(huán)程序設(shè)計(jì)1、while語句、一般格式 while(循環(huán)繼續(xù)條件) 循環(huán)體語句組;、執(zhí)行過程求解“循環(huán)繼續(xù)條件”表達(dá)式。如果其值為非0,轉(zhuǎn);否則轉(zhuǎn)。執(zhí)行循環(huán)體語句組,然后轉(zhuǎn)。執(zhí)行while語句的下一條。練習(xí)5_1:/*程序功能:求1100的累計(jì)和*/#include <stdio.h>void main() int i=1,sum=0; /*初始化循環(huán)控制變量i和累計(jì)器sum*/ while( i<=100 ) sum += i;/*實(shí)現(xiàn)累加*/ i+;/*循環(huán)控制變量i增1*/ printf(“sum=%dn”,sum); 程序
32、運(yùn)行情況如下:sum=50502、do-while語句(直到型循環(huán))、一般格式 do 循環(huán)體語句組; while(循環(huán)繼續(xù)條件);/*本行的分號(hào)不能缺省*/當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時(shí),可以不使用復(fù)合語句形式。、執(zhí)行過程執(zhí)行循環(huán)體語句組。計(jì)算“循環(huán)繼續(xù)條件”表達(dá)式。如果“循環(huán)繼續(xù)條件”表達(dá)式的值為非 0(真),則轉(zhuǎn)向繼續(xù)執(zhí)行;否則,轉(zhuǎn)向。執(zhí)行do-while的下一條語句。、do-while循環(huán)語句的特點(diǎn)是:先執(zhí)行循環(huán)體語句組,然后再判斷循環(huán)條件。因此do.while語句不論條件是否成立,至少要執(zhí)行一次循環(huán)體。練習(xí)5_2:用do-while語句求解1100的累計(jì)和。/*程序功能:求1100的
33、累計(jì)和*/main() int i=1, sum=0; /*定義并初始化循環(huán)控制變量,以及累計(jì)器*/ 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í)行過程求解“變量賦初值”表達(dá)式。求解“循環(huán)繼續(xù)條件”表達(dá)式。如果其值非0,執(zhí)行;否則,轉(zhuǎn)至。執(zhí)行循環(huán)體語句組,并求解“循環(huán)變量增值”表達(dá)式,然后轉(zhuǎn)向。執(zhí)行for語句的下一條語句。、說明“變量賦初值”、“循環(huán)繼續(xù)
34、條件”和“循環(huán)變量增值”部分均可缺省,甚至全部缺省,但其間的分號(hào)不能省略。當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時(shí),可以不使用復(fù)合語句形式?!把h(huán)變量賦初值”表達(dá)式,既可以是給循環(huán)變量賦初值的賦值表達(dá)式,也可以是與此無關(guān)的其它表達(dá)式(如逗號(hào)表達(dá)式)。例如,for(sum=0;i<=100;i+) sum += i; for(sum=0,i=1;i<=100;i+) sum += i;“循環(huán)繼續(xù)條件”部分是一個(gè)邏輯量,除一般的關(guān)系(或邏輯)表達(dá)式外,也允許是數(shù)值(或字符)表達(dá)式。for語句最為靈活,不僅可用于循環(huán)次數(shù)已經(jīng)確定的情況,也可用于循環(huán)次數(shù)雖不確定、但給出了循環(huán)繼續(xù)條件的情況。4、循
35、環(huán)的比較、While和 for都是先判斷后循環(huán),而do-while是先循后判斷。即do-while語句在條件不成立時(shí)循環(huán)體也要被執(zhí)行一次。、while和do-while語句的條件表達(dá)式只有一個(gè),只起到控制循環(huán)結(jié)束的作用,循環(huán)變量的初值等都用其他語句完成;for語句則有3個(gè)表達(dá)式,不僅能起到控制循環(huán)結(jié)束的作用,還可給循環(huán)變量賦初值。練習(xí)5_7 對(duì)于以下程序段intm=-1;do m=m*m;while(!m);循環(huán)執(zhí)行的次數(shù)為多少?答:1次。練習(xí)5_8 對(duì)于以下程序段intk=5; while(k=0)k=k-1;printf("%dn",k);,循環(huán)體執(zhí)行的次數(shù)為多少次?答
36、:0次。練習(xí)5_9 對(duì)于以下程序段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ù)組名常量表達(dá)式;n “數(shù)據(jù)類型”是指數(shù)組元素的數(shù)據(jù)類型。n 數(shù)組名,與變量名一樣,必須遵循標(biāo)識(shí)符命名規(guī)則。n “常量表達(dá)式”必須用方括號(hào)括起來,指的是數(shù)組的元素個(gè)數(shù)(又稱數(shù)組長(zhǎng)度)
37、,它是一個(gè)整型值,其中可以包含常數(shù)和符號(hào)常量,但不能包含變量。n 數(shù)組元素的下標(biāo),是元素相對(duì)于數(shù)組起始地址的偏移量,所以從0開始順序編號(hào)。n 數(shù)組名中存放的是一個(gè)地址常量,它代表整個(gè)數(shù)組的首地址。同一數(shù)組中的所有元素,按其下標(biāo)的順序占用一段連續(xù)的存儲(chǔ)單元。2、數(shù)組元素的引用引用數(shù)組中的任意一個(gè)元素的形式: 數(shù)組名下標(biāo)表達(dá)式練習(xí)6_1:從鍵盤上任意輸入n個(gè)整數(shù),用冒泡法按從小到大地排序,并在屏幕上顯示出來。解:冒泡法排序的基本思想:從第一個(gè)數(shù)開始依次對(duì)相鄰兩數(shù)進(jìn)行比較,如次序?qū)t不做任何操作;如次序不對(duì)則使這兩個(gè)數(shù)交換位置。第一遍的(N-1)次比較后,最大的數(shù)已放在最后,第二遍只需考慮(N-1)
38、個(gè)數(shù),以此類推直到第(N-1)遍比較后就可以完成排序。#include "stdio.h"#define NUM 10/*定義符號(hào)常量(數(shù)據(jù)個(gè)數(shù)N)*/main() int dataNUM;/*定義1個(gè)1維整型數(shù)組data*/ int i,j,temp;/*定義循環(huán)變量和臨時(shí)變量*/ printf("請(qǐng)輸入10個(gè)整數(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):進(jì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下列對(duì)一維數(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ù)組的定義中,有語法錯(cuò)誤的是A、intx=1,2,3,4,5; B、intx5=0;C、intx5; D、 intx;答案:D二、二維數(shù)組1、二維數(shù)組的定義: 數(shù)據(jù)類型 數(shù)組名行常量表達(dá)式列常量表達(dá)式數(shù)組元素在內(nèi)存中的排列順序?yàn)椤鞍葱写娣拧?,即先順序存放第一行的元素,再存放第二行,以此類推?、二維數(shù)組元素的引用形式為:數(shù)組名行下標(biāo)表達(dá)式列下標(biāo)表達(dá)式賦值規(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 以下對(duì)二維數(shù)組a進(jìn)行正確初始化的是 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、部分; 注意:在舊標(biāo)準(zhǔn)中,函數(shù)可以缺省參數(shù)表。但在新標(biāo)準(zhǔn)中,函數(shù)不可缺省參數(shù)表;如果不需要參數(shù),則用“void”表示,主函數(shù)main()例外。、有參函數(shù)的一般形式函數(shù)類型 函數(shù)名( 數(shù)據(jù)類型 參數(shù),數(shù)據(jù)類型 參數(shù)2 ) 說明語句部分; 可執(zhí)行語句部分; 有參函數(shù)比無參函數(shù)多了一個(gè)參數(shù)表。調(diào)用有參函數(shù)時(shí),調(diào)用函數(shù)將賦予這些參數(shù)實(shí)際的值。為了與調(diào)用函數(shù)提供的實(shí)際參數(shù)區(qū)別開,將函數(shù)定義中的參數(shù)表稱為形式參數(shù)表,簡(jiǎn)稱形參表。練習(xí)7_1:定義一個(gè)函數(shù),用于求兩個(gè)數(shù)中的大數(shù)。解:/*功能:定義一個(gè)求較大數(shù)的函數(shù)并在主函數(shù)中調(diào)用*/int max(int n1, int n2) /*定義一個(gè)函數(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 寫出以下程序運(yùn)行的結(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;運(yùn)行結(jié)果:max=5第八章 指針一、指針和指針變量的概念1、指針即地址一個(gè)變量的地址稱為該變量的指針。取變量地址的運(yùn)算符是,通過變量的指針能夠找到該變量。2指針變量專門用于存儲(chǔ)其它變量地址的變量二、指針變量的定義與應(yīng)用、指針變量的定義: 數(shù)據(jù)類型 *指針變
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 班級(jí)歷史文化傳承的舉措計(jì)劃
- 大班班級(jí)日常管理的注意事項(xiàng)計(jì)劃
- 2025年玉米酒精糟回收蛋白飼料成套設(shè)備(DDGS)項(xiàng)目建議書
- 2025年異步轉(zhuǎn)移模式寬帶交換機(jī)項(xiàng)目建議書
- 2025年不停電電源(UPS)項(xiàng)目合作計(jì)劃書
- 2025年中國(guó)文創(chuàng)產(chǎn)品行業(yè)發(fā)展策略、市場(chǎng)環(huán)境及前景研究分析報(bào)告
- 2025年鼠抗腫瘤相關(guān)抗原單克隆抗體項(xiàng)目合作計(jì)劃書
- 客戶資料查詢權(quán)限嚴(yán)格把控
- 簡(jiǎn)易私人承包合同
- 電纜電線采購(gòu)合同書
- 《消費(fèi)者心理與行為分析》第五版 課件全套 肖澗松 單元1-10 消費(fèi)者心理與行為概述 - 消費(fèi)者購(gòu)買決策與購(gòu)后行為
- 信息系統(tǒng)運(yùn)行管理員(基礎(chǔ)知識(shí)、應(yīng)用技術(shù))合卷軟件資格考試(初級(jí))試題與參考答案(2024年)
- 延安研學(xué)活動(dòng)方案
- 2024年高考政治必修三《政治與法治》常考材料題考點(diǎn)梳理匯編
- 體檢報(bào)告電子版
- 2024年中考語文真題分類匯編(全國(guó)版)專題12議論文閱讀(第01期)含答案及解析
- 食堂清洗及消毒制度
- 服裝質(zhì)量管理制度
- 稀土材料技術(shù)基礎(chǔ)知識(shí)單選題100道及答案解析
- 自然辯證法概論:第四章-馬克思主義科學(xué)技術(shù)社會(huì)論
- 建筑工程質(zhì)量管理培訓(xùn)
評(píng)論
0/150
提交評(píng)論