

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言復(fù)習(xí)提綱第一章 C語言程序設(shè)計概述一、Visual C+6.0開發(fā)環(huán)境1、了解Visual C+6.0的安裝過程;2、了解Visual C+6.0的工作界面,菜單和工具欄的使用;二、掌握C語言程序運行的過程1、編輯:是指把按照C語法規(guī)則編寫的程序代碼通過編輯器(Visual C+ 6.0,Turbo C 3.0)輸入計算機,并存盤。在存盤時,C源文件的擴展名為 .c 2、編譯:將C語言源程序編譯成目標程序,即對源程序進行編譯,并將源程序轉(zhuǎn)換為擴展名為.obj的二進制目標代碼(即把已經(jīng)編輯好的源程序翻譯成二進制目標代碼的過程)。 3、連接:將用戶程序生成的目標代碼文件(.obj)和系統(tǒng)提供
2、的庫文件(.lib)中的某些代碼連接在一起,生成一個可執(zhí)行文件(.exe)。4、執(zhí)行:執(zhí)行生成的可執(zhí)行代碼,并輸出結(jié)果。5、調(diào)試:是將編制的程序投入實際運行前,用手工或編譯程序等方法進行測試,修正語法錯誤和邏輯錯誤的過程。三、結(jié)構(gòu)化程序設(shè)計的基本概念1、概念以模塊化設(shè)計為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個相互獨立的模塊,將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計,任何模塊都可以使用一些基本的結(jié)構(gòu)來實現(xiàn),任何復(fù)雜的程序,都可以使用這些基本結(jié)構(gòu)按一定的順序組合起來,這些基本結(jié)構(gòu)的特點都是只有一個入口、一個出口,這樣的程序設(shè)計方法稱為結(jié)構(gòu)化程序設(shè)計。2、基本思想結(jié)構(gòu)化程序設(shè)計的基本思想是采用&
3、quot;自頂向下,逐步細化、模塊化設(shè)計、結(jié)構(gòu)化編碼"的程序設(shè)計方法和"單入口單出口"的控制結(jié)構(gòu)。3、三種基本結(jié)構(gòu)順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)4、三種基本結(jié)構(gòu)的特點只有一個入口 只有一個出口每一個基本結(jié)構(gòu)中的每一部分都有機會執(zhí)行到結(jié)構(gòu)內(nèi)不存在“死循環(huán)”5、設(shè)計原則自頂向下 逐步細化 模塊化設(shè)計結(jié)構(gòu)化編碼四、C程序的基本組成:C程序是由若干個函數(shù)構(gòu)成的,至少有一個主函數(shù)main(),main()的位置可以任意,其他各函數(shù)在程序中的前后位置也是可以任意的。程序的執(zhí)行總是從主函數(shù)開始,在主函數(shù)中結(jié)束。主函數(shù)是可以調(diào)用其他任何非主函數(shù)的函數(shù),任何非主函數(shù)也可以調(diào)用其它任何
4、非主函數(shù)。C程序的基本組成:聲明區(qū)、主程序區(qū)、函數(shù)定義區(qū)。1、聲明區(qū)處在程序文件的所有函數(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ī)
5、則:由字母、數(shù)字或下畫線組成,并且第1個字符必須為字母或下畫線。注意:標識符區(qū)分大小寫,即大寫字母和小寫字母的通常意義不同,且不能與關(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
6、枚舉類型enum結(jié)構(gòu)類型struct數(shù)組類型一、C語言的數(shù)據(jù)類型C語言中基本數(shù)據(jù)類型包括整型、實型、字符型、枚舉類型,構(gòu)造類型有數(shù)組、結(jié)構(gòu)體、共用體等。、基本數(shù)據(jù)類型(見P17)、構(gòu)造類型又稱為組合類型,它是由基本類型按照某種規(guī)則組合而成的。n 數(shù)組:是由具有相同數(shù)據(jù)類型的元素組成的集合。n 結(jié)構(gòu)體:是由不同的數(shù)據(jù)類型構(gòu)成的一種混合的數(shù)據(jù)結(jié)構(gòu),構(gòu)成結(jié)構(gòu)體的成員的數(shù)據(jù)類型一般不同,并且在內(nèi)存中分別占據(jù)不同的存儲單元。n 共用體:是類似于結(jié)構(gòu)體的一種構(gòu)造類型,與結(jié)構(gòu)體不同的是構(gòu)成共同體的數(shù)據(jù)成員共用同一段內(nèi)存單元。n 枚舉:是將變量的值一一列舉出來,變量的值只限于列舉出來的值的范圍內(nèi)。、指針類型變
7、量用于存儲另一變量的地址,而不能用來存放基本類型的數(shù)據(jù)。它在內(nèi)存中占據(jù)一個存儲單元。、類是一種數(shù)據(jù)類型,它定義的是一種對象類型,由數(shù)據(jù)和方法組成,描述了屬于該類型的所有對象的性質(zhì)。 二、常量和變量、常量:在程序運行的整個過程中,其值始終保持不變的量。n 整型常量:表示形式有十進制、八進制(以0開頭)和十六進制(以0x或0X開頭)。整型常量可以后綴字母L(或l)表示長整數(shù),后綴字母U(或u)表示無符號整數(shù)。n 實型常量(浮點型常量):表示形式有一般形式和指數(shù)形式。實型常量缺省為double型(雙精度型),如后綴f或F,則為float型(單精度型)。n 字符常量:用單撇號括起來的一個字符。如
8、9;A','*'等。轉(zhuǎn)義字符:用反斜杠引導(dǎo)的,具有特定含義的字符(見P22表2-4),如 '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.
9、2e0.5 E-3 0xFF 2L '72' 160 -0xffff5E2.0 -0xcdf 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 _a
10、bove _abc a>b sin day三、運算符和表達式1、算術(shù)運算符和算術(shù)表達式注意:int i=1.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+
11、1)m=9%(3+1)m=1。3、關(guān)系運算符和關(guān)系表達式注意:n 關(guān)系運算符的優(yōu)先級低于算術(shù)運算符。例如:a+b>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
12、=+a|+b;后,b的值為3。練習(xí)2_7設(shè)x、y和z都是int型變量,且x=8, y=3, z=5, 則表達式x*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相當于a>b?a:(c>d?c:
13、d)n 條件運算符的優(yōu)先級別高于賦值運算符,低于關(guān)系運算符和算術(shù)運算符。如:a>b?a-b:b-a相當于a>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é)果相當于操作數(shù)乘以8。8、逗號運算符表達式, 表達式, , 表達式n注意:自
14、左至右,依次計算各表達式的值,“表達式n” 的值即為整個逗號表達式的值。如:a = 3 * 5, a * 4, a + 5的值為20。四、運算符的優(yōu)先級與結(jié)合性1、所謂結(jié)合性是指,當一個操作數(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é)合性)進行
15、。例如,算術(shù)運算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a b + c”時,變量b先與減號結(jié)合,執(zhí)行“a - b”;然后再執(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) &&
16、amp; (n=c>d);后,n的值為2。練習(xí)2_16 如果a=5,b=3,c=7,d=9,則條件表達式a<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)義序列:原樣輸出。
17、n 格式控制字符:表3_1 printf()函數(shù)格式字符格式轉(zhuǎn)換字符含義舉例%d,%i以十進制整數(shù)輸出int a=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
18、;printf("%f",x);/984.235413%g,%G按照%e,%f輸出寬度較短的格式輸出,不輸出無意義的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.
19、46輸出的數(shù)值靠左端,右邊補空格。printf("s=%-5.3s","guangdong")/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("格式字符串", 輸入項首
20、地址表);注:格式輸入函數(shù)scanf()可以從鍵盤上接收不同數(shù)據(jù)類型的數(shù)據(jù)。格式化輸出函數(shù)(printf())和格式化輸入函數(shù)(scanf())都包含在頭文件“stdio.h”中。n 格式字符串。格式字符串可以包含3種類型的字符:格式指示符、空白字符(空格、Tab鍵和回車鍵)和非空白字符(又稱普通字符)。格式指示符與printf()函數(shù)的相似,空白字符作為相鄰2個輸入數(shù)據(jù)的缺省分隔符,非空白字符在輸入有效數(shù)據(jù)時,必須原樣一起輸入。n 輸入項首地址表由若干個輸入項首地址組成,相鄰2個輸入項首地址之間,用逗號分開。輸入項首地址表中的地址,可以是變量的首地址,也可以是字符數(shù)組名或指針變量。變量首地址
21、的表示方法: &變量名其中“&”是地址運算符。n 數(shù)據(jù)輸入操作² 如果相鄰2個格式指示符之間,不指定數(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)義字符形式
22、的字符),務(wù)必原樣輸入。 例如,scanf("%d,%d",&num1,&num2); 假設(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",&am
23、p;d,&f)都是錯誤的)練習(xí)3_2 有下列程序段int m=2, n=2;n = m+ -1;printf("%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é)生的總成績
24、和平均成績,并用自然語言描述算法。解:設(shè)變量 a、b、c、d、e分別表示學(xué)生5門課的成績,sum表示總成績,aver表示平均成績, 則用自然語言描述算法如下:輸入學(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,&
25、;d,&e);sum=a+b+c+d+e;aver=sum/5.0;printf("總成績=%0.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
26、;printf("請輸入梯形的上底、下底和高n");scanf("%f,%f,%f",&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,a
27、reaEND程序如下:#include <stdio.h>#define PI 3.14main()float 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語句中的“表達
28、式”必須用“(”和“)”括起來。表示程序執(zhí)行的條件,常用關(guān)系運算符、邏輯運算符等表示的條件表達式,其結(jié)果只有兩個值“1”或“0”(成立或不成立)。如:表示字符型變量ch是大寫英文字符的C語言表達式是ch>='A'&&ch<='Z',要判斷字符變量ch中的值是否為數(shù)字字符,則其表達式是ch>='0'&&ch<='9'。n else子句(可選)是if語句的一部分,必須與if配對使用,不能單獨使用。n 當if和else下面的語句組,僅由一條語句構(gòu)成時,也可不使用復(fù)合語句形式(即去掉
29、花括號)。、if語句的執(zhí)行過程n 缺省else子句時n 當“表達式”的值不等于0(即判定為“邏輯真”)時,則執(zhí)行語句組1,否則直接轉(zhuǎn)向執(zhí)行下一條。n 指定else子句時n 當“表達式”的值不等于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
30、元托運40公斤以內(nèi)的行李,如果超過40公斤時,超過的部分每公斤加價0.5元,試編寫一道計算行李托運費的程序。解:/*程序功能:計算行李托運費*/#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語句的
31、一般形式switch(表達式) case 常量表達式1:語句組;break; case 常量表達式2:語句組;break; . case 常量表達式:語句組;break; default:語句組;break; 、執(zhí)行過程 n 當switch后面“表達式”的值,與某個case后面的“常量表達式”的值相同時,就執(zhí)行該case后面的語句(組);當執(zhí)行到break語句時,跳出switch語句,轉(zhuǎn)向執(zhí)行switch語句的下一條。n 如果沒有任何一個case后面的“常量表達式”的值,與“表達式”的值匹配,則執(zhí)行default 后面的語句(組)。然后,再執(zhí)行switch語句的下一條。說明n switch后面
32、的“表達式”,可以是int、char和枚舉型中的一種。n 每個case子句后面的“常量表達式”的值,必須各不相同,否則會出現(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
33、 x=7,y=8,z=9;if(x>y) x=y,y=z;z=x;printf("%d,%d,%dn",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+;ca
34、se 1:x+;case 2:x+;y+;printf("x=%d,y=%dn",x,y);結(jié)果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
35、 += i;/*實現(xiàn)累加*/ i+;/*循環(huán)控制變量i增1*/ printf(“sum=%dn”,sum); 程序運行情況如下:sum=50502、do-while語句(直到型循環(huán))、一般格式 do 循環(huán)體語句組; while(循環(huán)繼續(xù)條件);/*本行的分號不能缺省*/當循環(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語句不論條件
36、是否成立,至少要執(zhí)行一次循環(huán)體。練習(xí)5_2:用do-while語句求解1100的累計和。/*程序功能:求1100的累計和*/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í)行
37、循環(huán)體語句組,并求解“循環(huán)變量增值”表達式,然后轉(zhuǎn)向。執(zhí)行for語句的下一條語句。、說明“變量賦初值”、“循環(huán)繼續(xù)條件”和“循環(huán)變量增值”部分均可缺省,甚至全部缺省,但其間的分號不能省略。當循環(huán)體語句組僅由一條語句構(gòu)成時,可以不使用復(fù)合語句形式。“循環(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ù)值(或字符)表達式。
38、如:while(!E)等價于while(0),while(E)等價于while(1)。for語句最為靈活,不僅可用于循環(huán)次數(shù)已經(jīng)確定的情況,也可用于循環(huán)次數(shù)雖不確定、但給出了循環(huán)繼續(xù)條件的情況。練習(xí)5_3:求n的階乘n!(n!=1*2*n)。/*程序功能:求n!*/main() int i, n; long fact=1;/*將累乘器fact初始化為1*/ printf(“Input n: ”); scanf(“%d”, &n); for(i=1; i<=n; i+)fact *= i;/*實現(xiàn)累乘*/ printf("%d ! = %ldn", n, fac
39、t); 程序運行情況如下:Input n: 55 ! = 120練習(xí)5_4 有以下程序#include <stdio.h>void main()int a=10,b=10,i;for(i=0;a>8;b=+i)printf("%d %d ",a-,b);程序輸出的結(jié)果是10 10 9 1練習(xí)5_5 有以下程序#include <stdio.h>void main()int k;for(k=0;k<10;k+);printf("%d",k);答案:10練習(xí)5_6以下程序的運行結(jié)果是#include <stdio.h
40、>void main()int m;for(m=1;m<=50;m+)if(m%12!=0) continue; printf("%4d",m); printf("n");答: 12 24 36 484、循環(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
41、 對于以下程序段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ù)為多少次?答: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。5、循環(huán)的嵌套、循環(huán)語句
42、的循環(huán)體內(nèi),又包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。循環(huán)嵌套的概念,對所有高級語言都是一樣的。、for語句和while語句允許嵌套,do-while語句也不例外。練習(xí)5_11:編程: 輸出下列圖形 * * * * *解:/*程序功能:打印5行"*",第一行1個,第二行3個,第三行5個.*/#include <stdio.h>void main() int i=1; while(i<=5) int j=1,k=1; while(j<=5-i) printf(" "); j+; while(k<=2*i-1) printf(
43、"*"); k+; printf("n"); i+; 6、break語句與continue語句、一般格式: break; continue;、功能break:強行結(jié)束循環(huán),轉(zhuǎn)向執(zhí)行循環(huán)語句的下一條語句。continue:對于for循環(huán),跳過循環(huán)體其余語句,轉(zhuǎn)向循環(huán)變量增量表達式的計算;對于while和do-while循環(huán),跳過循環(huán)體其余語句,但轉(zhuǎn)向循環(huán)繼續(xù)條件的判定。、說明break能用于循環(huán)語句和switch語句中,而continue只能用于循環(huán)語句中。break是終止整個循環(huán)的執(zhí)行,而continue只是結(jié)束本次循環(huán)。循環(huán)嵌套時,break和cont
44、inue只影響包含它們的最內(nèi)層循環(huán),與外層循環(huán)無關(guān)。練習(xí)5_12 求Fibonacci數(shù)列前12項的和。解:每月新增兔子數(shù)Fn=1,1,2,3,5,8,13,21,34,(斐波那契數(shù)列)月份n 兔子數(shù)Fn 1 F1=1 2 F2=1 3 F3=2=F1+F2 4 F4=3=F2+F3 n Fn=Fn-1+Fn-2 由此可寫出遞推公式1 (n=1)F(n)= 1 (n=2) F(n-1)+ F(n-2) (n>3) 程序代碼如下:#include<stdio.h>void main() int F1=1,F2=1; int F,S=2,n=3; while(n<=12)
45、F=F1+F2; F1=F2; F2=F; S=S+F; n+; printf("S=%dn",S); 第六章 數(shù)組數(shù)組是數(shù)目固定、類型相同的若干變量的有序集合。一、一維數(shù)組1、一維數(shù)組的定義:數(shù)據(jù)類型 數(shù)組名常量表達式, 數(shù)組名2常量表達式2;n “數(shù)據(jù)類型”是指數(shù)組元素的數(shù)據(jù)類型。n 數(shù)組名,與變量名一樣,必須遵循標識符命名規(guī)則。n “常量表達式”必須用方括號括起來,指的是數(shù)組的元素個數(shù)(又稱數(shù)組長度),它是一個整型值,其中可以包含常數(shù)和符號常量,但不能包含變量。n 數(shù)組元素的下標,是元素相對于數(shù)組起始地址的偏移量,所以從0開始順序編號。n 數(shù)組名中存放的是一個地址常量
46、,它代表整個數(shù)組的首地址。同一數(shù)組中的所有元素,按其下標的順序占用一段連續(xù)的存儲單元。注:數(shù)組名能與其他變量名相同,數(shù)組名后是用方括號括起來的常量表達式,不能和圓括號。2、數(shù)組元素的引用引用數(shù)組中的任意一個元素的形式: 數(shù)組名下標表達式n “下標表達式”可以是任何非負整型數(shù)據(jù),取值范圍是0(元素個數(shù)-1)。n 1個數(shù)組元素,實質(zhì)上就是1個變量,它具有和相同類型單個變量一樣的屬性,可以對它進行賦值和參與各種運算。n 在C語言中,數(shù)組作為1個整體,不能參加數(shù)據(jù)運算,只能對單個的元素進行處理。、一維數(shù)組元素的初始化n 初始化格式:數(shù)據(jù)類型 數(shù)組名常量表達式初值表n 如果對數(shù)組的全部元素賦以初值,定義
47、時可以不指定數(shù)組長度(系統(tǒng)根據(jù)初值個數(shù)自動確定)。如果被定義數(shù)組的長度,與初值個數(shù)不同,則數(shù)組長度不能省略。n “初值表”中的初值個數(shù),可以少于元素個數(shù),即允許只給部分元素賦初值。3、數(shù)組元素的存儲數(shù)組元素在計算機內(nèi)存中存儲時,占據(jù)一片連續(xù)的存儲空間,數(shù)組名代表數(shù)組元素占據(jù)的內(nèi)存空間的首地址。由于數(shù)組各元素的數(shù)據(jù)類型相同,因此在數(shù)組中,每一個元素在內(nèi)存里占用的存儲單元數(shù)都是相同的。練習(xí)6_1:從鍵盤上任意輸入n個整數(shù),用冒泡法按從小到大地排序,并在屏幕上顯示出來。解:冒泡法排序的基本思想:從第一個數(shù)開始依次對相鄰兩數(shù)進行比較,如次序?qū)t不做任何操作;如次序不對則使這兩個數(shù)交換位置。第一遍的(N
48、-1)次比較后,最大的數(shù)已放在最后,第二遍只需考慮(N-1)個數(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
49、-1; i+) /*外循環(huán):控制比較趟數(shù)*/ for(j=NUM-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、
50、int a10= "I am a student"; 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練習(xí)6 _4青年歌手參加歌曲大獎賽,有10個評委對他進行打分,試編程求這位選手的平均得分(去掉一個最高分和一個最低分),并在屏幕上輸出去掉的最高分和去掉的最低分及這位選手的最后得分
51、。解:#include <stdio.h>main()int i,j,min;float temp,ave=0;float a11;printf("n輸入評委所打的分數(shù):n");for(i=1;i<=10;i+)scanf("%f",&ai); /*選擇法排序*/for(i=1;i<=9;i+)/*外循環(huán):控制比較趟數(shù)*/min=i;for(j=i+1;j<=10;j+) /*內(nèi)循環(huán):每趟比較的次數(shù)*/if(amin>aj)min=j;temp=ai;ai=amin;amin=temp;for(i=2;i<
52、;=9;i+) /*注意i值的變化范圍*/ave=ave+ai;printf("去掉一個最低分:%6.1f分n",a1);printf("去掉一個最高分:%6.1f分n",a10);printf("選手最后得分:%6.1f分n",ave/8);二、二維數(shù)組1、二維數(shù)組的定義: 數(shù)據(jù)類型 數(shù)組名行常量表達式列常量表達式, 數(shù)組名2行常量表達式2列常量表達式2;n 數(shù)組元素在內(nèi)存中的排列順序為“按行存放”,即先順序存放第一行的元素,再存放第二行,以此類推。n 設(shè)有一個m*n的數(shù)組x,則第i行第j列的元素xij在數(shù)組中的位置為:i*n+j(注意:行號、列號均從0開始計數(shù))。2、二維數(shù)組元素的引用引用2維數(shù)組元素的形式為:數(shù)組名行下標表達式列下標表達式n “行下標表達式”和“列下標表達式”,都應(yīng)是整型表達式或符號常量。n “行下標表達式”和“列下標表達式”的值,都應(yīng)在已定義數(shù)組大小的范圍內(nèi)。假設(shè)有數(shù)組x34,則可用的行下標范圍為02,列下標范圍為03。n 對
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)咖通風(fēng)系統(tǒng)優(yōu)化設(shè)計方案
- 水利水電工程節(jié)能技術(shù)試題及答案
- 亮化設(shè)計方案
- 2025年中級經(jīng)濟師考試形式與試題及答案解析
- 2024年水利水電工程現(xiàn)場實習(xí)報告寫作試題及答案
- 農(nóng)村電商平臺建設(shè)與運營合同
- 網(wǎng)絡(luò)教育平臺運營管理規(guī)范
- 個體簡易勞動協(xié)議年
- 人力資源管理實踐問題研究
- 航空器結(jié)構(gòu)與力學(xué)原理題庫
- 1.1細胞是生命活動的基本單位課件高一上學(xué)期生物人教版(2019)必修1
- 2025-2030中國氟化工行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展趨勢與投資前景研究報告
- 2025年湖北省武漢市高考地理調(diào)研試卷(2月份)
- 2024年呼和浩特市玉泉區(qū)消防救援大隊招聘真題
- 糞便檢測技術(shù)優(yōu)化-全面剖析
- 2025年糧油倉儲管理員職業(yè)技能競賽參考試題庫(含答案)
- 2025-2030白酒行業(yè)市場發(fā)展現(xiàn)狀及競爭形勢與投資前景研究報告
- 2025時政試題及答案(100題)
- 園林綠化安全培訓(xùn)課件
- DB14T 3231-2025安全風(fēng)險分級管控和隱患排查治理雙重預(yù)防機制建設(shè)通則
- 八省聯(lián)考陜西試題及答案
評論
0/150
提交評論