《C程序設(shè)計》課程教案_第1頁
《C程序設(shè)計》課程教案_第2頁
《C程序設(shè)計》課程教案_第3頁
《C程序設(shè)計》課程教案_第4頁
已閱讀5頁,還剩160頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《C程序設(shè)計》課程教案

第一章c語言概述ー、教學(xué)目標(biāo).了解c語言出現(xiàn)的背景.掌握C語言程序的構(gòu)成、書寫格式和上機步驟二、教材分析.本章重點:C語言程序的構(gòu)成.本章難點:上機操作三、教學(xué)方法和手段.講授與演示法相結(jié)合2.計算機和投影儀四、教學(xué)時數(shù)2學(xué)時五、教學(xué)內(nèi)容第一節(jié)C語言出現(xiàn)的歷史背景ー、ALG0L60:1960年面向問題、結(jié)構(gòu)化,可讀性、可移植性好,不能對硬件操作;二、CPL:63年接近硬件,規(guī)模較大、難以應(yīng)用;三、SIMULA:1966?1967SIMULA66是ALGOL60的擴(kuò)充;SIMULA67引進(jìn)了“對象”和“類”等概念而成為第一個面向?qū)ο蟮恼Z言;四、BCPL:67年由CPL改制,結(jié)構(gòu)化、直接處理硬件;五、B語言:1970年貝爾實驗室的KenThompson以BCPL語言為基礎(chǔ)設(shè)計的,開發(fā)了第一個UNIX操作系統(tǒng);六、C語言:1972-73年間,保持了BCPL和B語言的精煉與接近硬件的優(yōu)點,克服了它們過于簡單、數(shù)據(jù)無類型的缺點,重寫了UNIX操作系統(tǒng)的90%;七、標(biāo)準(zhǔn)C:以1978年發(fā)表的UNIX第七版中的C編譯程序為基礎(chǔ),BrainW.Kernighan&DennisM.Ritchie合著的《TheCProgrammingLanguage》問世;ハ、ANSIC:1983年美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI)制定的標(biāo)準(zhǔn);九、C++:1986年與C兼容,保持了C的所有優(yōu)點并進(jìn)行了增強:增強了面向?qū)ο蟮臋C制,成為典型的面向?qū)ο蠛兔嫦蜻^程的混合語言,適用于大型系統(tǒng)軟件和應(yīng)用軟件的開發(fā);十、87ANSIC:1987年制定的新標(biāo)準(zhǔn);Hー、ISOC:1990年ISO接受87ANSIC為ISOC的標(biāo)準(zhǔn),該標(biāo)準(zhǔn)是目前C編譯器的標(biāo)準(zhǔn)。第二節(jié)C語言的特點ー、語言簡潔、緊湊,使用方便、靈活;二、運算符豐富;三、數(shù)據(jù)類型多(整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類等);四、具有結(jié)構(gòu)化的控制語句;五、語法不太嚴(yán)格,自由度大;六、既是高級語言,又具有低級語言的功能;七、生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率;ハ、可移植性好。第三節(jié)簡單的C語言程序介紹ー、C語言是由函數(shù)構(gòu)成的,至少有一個main。函數(shù);二、每個函數(shù)由函數(shù)首部和函數(shù)體組成;函數(shù)體由說明語句、執(zhí)行語句組成;三、每個C程序從main。函數(shù)開始執(zhí)行,并在main。中結(jié)束;四、每個語句和數(shù)據(jù)定義的最后必須加分號;五、C程序無輸入、輸出語句:輸入功能由scanf()函數(shù)完成;輸出功能由printf()函數(shù)完成;六、可加注釋/* */七、借助程序?qū)嵗右哉f明,并提倡良好的程序設(shè)計書寫風(fēng)格:(一)每個語句占一行;(二)同一層次的語句從同一位置處開始書寫;(三)同一層次中嵌套的結(jié)構(gòu),應(yīng)從不同位置開始書寫;(四)編譯控制行、外部數(shù)據(jù)定義、函數(shù)定義之間空一行書寫;(五)對于函數(shù)體的大括號的書寫約定(六)學(xué)會使用注釋。第四節(jié)運行C程序的步驟和方法ー、進(jìn)入環(huán)境;二、編輯源程序;三、保存源程序;四、編譯源程序F9;五、執(zhí)行程序Ctrl-F9,査看結(jié)果程t-F5;六、退出C環(huán)境Alt-X〇本章小結(jié)ー、C語言的構(gòu)成要素,main函數(shù)在程序中的作用;二、上機操作的過程。作業(yè)題P13頁1.3題、1.7題、1.8題。第二章程序的靈魂——算法ー、教學(xué)目標(biāo),了解算法的概念.掌握結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)及算法的N-S圖表示法二、教材分析.本章重點:怎樣表示一個算法.本章難點:三種基本結(jié)構(gòu)三、教學(xué)方法和手段.講授與演示法相結(jié)合.計算機和投影儀四、教學(xué)時數(shù)4學(xué)時五、教學(xué)內(nèi)容第一節(jié)算法的概念ー個程序包括以下兩方面內(nèi)容:ー、對數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu);二、對操作的描述。即算法,為解決ー個問題而采取的方法和步驟;三、著名計算機科學(xué)家Wirth提出ー個公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序。第二節(jié)簡單算法舉例例1:設(shè)有兩個杯子A和B,分別盛放酒和醋,要求將它們互換。SI:C-AS2:A-BS3:B-C例2:從10個數(shù)中挑出最大數(shù),并將之置入max。SI:i=l,令max等于第一個數(shù);S2:i=i+l;S3;將max與第i個數(shù)進(jìn)行比較,若前者小于后者,將修正max為第i個數(shù);否則進(jìn)行S4;S4;若i<10,則轉(zhuǎn)到S2;否則輸出max并結(jié)束。例3:求C100的和SI:sum—0,t—1;S2:sum-sum+tS3:t=t+lS4:若t<=100,則轉(zhuǎn)到S2,否則轉(zhuǎn)到S5;S5:輸出sum,結(jié)束。例4:求n!SI:s-1,t—1;S2:s-s*t;S3:t-t+1;S4:若tく=n,則返S2,否則輸出s并結(jié)束。第三節(jié)算法的特性ー、有窮性;二、確定性;三、有零個或多個輸入;四、有一個或多個輸出;五、有效性;第四節(jié)怎樣表示ー個算法

一、用自然語言表示算法一通俗易懂,但易出現(xiàn)“歧義性”。二、用傳統(tǒng)流程圖表示算法一直觀形象,易于理解。程序的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三、用三、用N-S流程圖表示算法A當(dāng)A當(dāng)P成立四、用偽代碼表示算法五、用計算機語言表示算法(即實現(xiàn)算法)第五節(jié)結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計方法強調(diào):四、用偽代碼表示算法五、用計算機語言表示算法(即實現(xiàn)算法)第五節(jié)結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計方法強調(diào):程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。ー、自頂向下二、逐步細(xì)化三、模塊化設(shè)計四、結(jié)構(gòu)化編碼本章小結(jié)ー、程序的三種基本結(jié)構(gòu):順序、選擇、循環(huán);二、5種描述算法的方法,關(guān)鍵是N-S圖;三、靈活運用三種基本結(jié)構(gòu),學(xué)會結(jié)構(gòu)化的程序設(shè)計方法。作業(yè)題P36頁2.4(1)(2)(4)題。第三章數(shù)據(jù)類型、運算符與表達(dá)式ー、教學(xué)目標(biāo).掌握C的數(shù)據(jù)類型.掌握整型、浮點型、字符型數(shù)據(jù)的常量及變量.掌握C語言中的各種運算符.掌握運算符的優(yōu)先級與結(jié)合性二、教材分析L本章重點:(1)基本數(shù)據(jù)類型的常量和變量;(2)C語言中各種運算符的使用2.本章難點:(1)不同類型的數(shù)據(jù)在內(nèi)存中的存儲形式(2)混合表達(dá)式中運算符的運算順序三、教學(xué)方法和手段.講授與演示法相結(jié)合.計算機和投影儀四、教學(xué)時數(shù)8學(xué)時五、教學(xué)內(nèi)容第一節(jié)C語言的數(shù)據(jù)類型C語言的數(shù)據(jù)類型豐富,但在學(xué)習(xí)第11章之前,我們只遇到C的四種基本數(shù)據(jù)類型:整型、字符型、單精度實型、雙精度實型。第二節(jié)常量和變量ー、常量:其值不能被改變的量。兩種:一般常量和符號常量(-)直接常量(字面常量):.整型常量:如12、〇、ー3等.實型常量:如4.5、-1.234等.字符常量:如‘a(chǎn)'、‘1’等,用單引號表示,占ー個字節(jié);.字符串常量:如‘‘a(chǎn)"、"abc”、“1”,用雙引號表示。(二)符號常量符號常量即是用ー個標(biāo)識符來代替ー個常量;符號常借助于預(yù)處理命令define來實現(xiàn);define命令格式是:#define標(biāo)識符字符串如:#definePI3.1415926535#defineSTRING“ABCD”.習(xí)慣上,符號常量用大寫字母表示;.定義符號常量時,不能以“;”結(jié)束;.ー個#define占一行;.—"個源程序文件中可含有若干個define命令,不同的define命令中指定的“標(biāo)識符”不能相同;二、變量:在程序運行過程中,其值會發(fā)生變化。(一)每個變量必須有一個名字,變量名是標(biāo)識符。(二)標(biāo)識符是用來標(biāo)識數(shù)據(jù)對象,是ー個數(shù)據(jù)對象的名字。(三)命名規(guī)則:以字母或下劃線開始,后跟字符、數(shù)字或下劃線。例:xl,_average,lotus_l_2_3,#abc,Ifs,M.D.Jhon.變量名不能是關(guān)鍵字(即保留字,是C編譯程序中保留使用的標(biāo)識符。如:auto、break、char>do、else>if>int等).怎樣定義變量?inti,z,h;charc,ch='c';floata=3.14,b-2.71,x,y;注意:變量要先定義后使用!例:voidmain(){inta,b,c,sum;a=3;b=-4; c=9;sum=a+b+c;printf("\nsum=%d",sum);a=16;b=56;c=-98;sum=a+b+c;printf(^<\nsum=%d^^,sum);)第三節(jié)整型數(shù)據(jù)ー、整型常量的表示方法(一)十進(jìn)制如:123,-456,0(二)ハ進(jìn)制數(shù)如:0123,-011(以〇開頭的數(shù))(三)十六進(jìn)制數(shù)如:0x123,-0x12,OxABC (以O(shè)x開頭的)二、整型變量(一)整型數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放,每ー個整型變量在內(nèi)存中占2個字節(jié)。例:定義整型變量i=10和j=-10的存放形式。(二)整型變量的分類:基本型int、短整型short,長整型long、無符號型unsigned(三)整型變量的定義對變量的定義,一般放在函數(shù)體開頭部分的聲明部分(也可放在函數(shù)中某ー分程序內(nèi))例:#include<stdio.h>voidmain(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(aa+u=%d,b+u=%d\n”,c,d);}(四)整型數(shù)據(jù)的溢出一個int型變量的最大允許值為32767,如果再加!,其結(jié)果不是32768,而是ー32768。即“溢出”。(五)整型常量的類型.ー個整數(shù)在ー32768?32767內(nèi),則為int型,可以賦給int型和longint型變量。,ー個整數(shù)超過上述范圍,在ー2147483648?2147483647內(nèi),則為longint型,可賦給longint型變量。.如果shortint和int型數(shù)據(jù)在內(nèi)存中占據(jù)長度相同,則其范圍與int相同。.常量無unsigned型。但可將非負(fù)且在取值范圍內(nèi)的整數(shù)賦給unsigned型變量。.在ー個整常量后面加一個字母1或L,則認(rèn)為是!ongint型常量。第四節(jié)浮點型數(shù)據(jù)ー、浮點型常量的表示方法(-)十進(jìn)制浮點數(shù)如:0.123,.456,0.0,123.,123.0整數(shù)部分和小數(shù)部分都可省,但不能同時省(二)指數(shù)形式如:123e3,123E3代表123X10、指數(shù)部分為整常數(shù);尾數(shù)部分可以是整常數(shù),也可以是實常數(shù);尾數(shù)部分和指數(shù)部分均不可省。E10,100.el5.2,.e5均為不合法的浮點數(shù)。二、浮點型變量(-)浮點型數(shù)據(jù)在內(nèi)存中的存放形式ー個浮點型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。(二)浮點型變量的分類:單精度float、雙精度double、長雙精度longdouble第五節(jié)字符型數(shù)據(jù)ー、字符常量(-)括在ー對單引號中的一個字符(單引號僅作界限符),‘a(chǎn)‘、‘X'為字符常量;(二)一個字符常量占1B,存放的是字符的ASCII碼值。(三)轉(zhuǎn)義字符.以‘'‘開頭,后跟ー個約定的字符或所要表示字符的十六進(jìn)制(或者ハ進(jìn)制)的編碼;.'\0'表示編碼值為〇的字符,即NULL,它與數(shù)值常數(shù)〇是等同的;.書中P48列出了常用的轉(zhuǎn)義字符。一字符變量字符變量用來存放字符常量,只能放一個字符。例:charcl='a',c2='A';ー個字符變量在內(nèi)存中占ー個字節(jié)。三、字符數(shù)據(jù)的存放形式及使用方法將字符常量放到字符變量中,實際上是將其ASCII代碼放到變量所占的存儲單元中。如:‘a(chǎn)’在內(nèi)存存放的是二進(jìn)制數(shù)01100001;'A,在內(nèi)存存放的是二進(jìn)制數(shù)01000001。在0~255之間字符型數(shù)據(jù)和整型數(shù)據(jù)可以通用。即ー個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出,還可以互相賦值。例:voidmain(){charcl,c2;cl=97;c2=98;printf("%c%c",cl,c2);printf("%d%d\n",cl,c2);cl=cl—32;c2=c2一('a'-'A');printf("%c%c\n",cl,c2); }運行結(jié)果:ab9798AB四、字符串常量(一)括在ー對雙引號中的〇個或多個(除、與“"自身之外)C語言字符集中的任何字符及轉(zhuǎn)義字符組成;雙引號僅作界限符;“Clanguageprogramming","a\\n"、“#123”、“”等為字符串常"Thedentistsaid:ヽ'openwide\'""Thepathis\\root\\user\\device""\077paytoattentionofthis!"(二)"China”在存儲器中實際占用6個字節(jié):(三)"a"與‘a(chǎn)’是不同的(表示形式不同、存儲方式不同、后者可像整數(shù)那樣參加運算,前者不能);(四)但應(yīng)注意的是,在寫字符串常量時沒有必要寫"China\0”,而只需寫"China”;(五)雖然C字符串后末尾的NULL字符屬字符串的內(nèi)容,但是NULL字符并不被顯示或輸出;(六)C語言的字符串常量是按數(shù)組處理的。(七)書寫ー個很長的字符串常量時,如果在一個書寫行內(nèi)寫不下,可跨行書寫。如:"Astringisasequenceofcharacters\surroundedbydoublequotes.”第六節(jié)變量賦初值在定義變量時對變量進(jìn)行賦值稱為變量的初始化;格式:類型說明符變量1=值1,變量2=值2,……;如;inta=3,b=4,c=5;floatx=3.4,y=0.75;charchl='K',ch2='P';注意;ー、inta,b,c=5J只對c初始化,值為5;二、對幾個變量賦以同一個初值時,inta=b=c=5;是非法的;inta=5,b=5,c=5J是合法的。(注:a=b=c=5;是合法的賦值語句)說明:對變量賦初值,僅表示該變量在程序運行過程中執(zhí)行本函數(shù)時的初值。第七節(jié)各類數(shù)值型數(shù)據(jù)間的混合運算混合算術(shù)表達(dá)式,如:10+'a'+i*f—d/e需自動轉(zhuǎn)換成同一類型再運算;轉(zhuǎn)換的規(guī)則如下:(書P54)設(shè)有:inti=2;floatf=3.5;doubled=16.0;longe=2;則10+匕'+i*f—d/e的運算次序為:ー、進(jìn)行10+'a'的運算,轉(zhuǎn)換‘a(chǎn)'為97;二、進(jìn)行i*f的運算,將i和f都轉(zhuǎn)成double型;三、整數(shù)107與i*f的積相加,先將107轉(zhuǎn)化成雙精度數(shù),結(jié)果為double型;四、將變量e轉(zhuǎn)化成double型,d/e的結(jié)果為double型;五、將10+'a'+i*f的結(jié)果與d/e的商相減,結(jié)果為double型。以上數(shù)據(jù)類型轉(zhuǎn)換都是由C編譯系統(tǒng)自動隱含完成的,故稱自動類型轉(zhuǎn)換第ハ節(jié)算術(shù)運算符和算術(shù)表達(dá)式ー、基本的算術(shù)運算符?、/、% +、ー 左結(jié)合性二、算術(shù)表達(dá)式(-)用算術(shù)運算符和括號將運算對象(操作數(shù))連接起來的、符合C語法規(guī)則的式子稱為算術(shù)表達(dá)式。如:('a'-b*c/(d+e)+sin(3.14/2+f))-3.14*g*g(二)?不能省,?、/不能寫成另外的符號;(三)數(shù)學(xué)函數(shù)自變量的括號不能省;如:sin(x);loglO(x);log(x);pow(x,y)(四)角度、特殊的符號要轉(zhuǎn)換。三、5種算術(shù)運算符的優(yōu)先級與結(jié)合性四、強制類型轉(zhuǎn)換運算符格式:(類型關(guān)鍵字或類型名)表達(dá)式如:(int)(x+y)%(int)p(double)a(float)(5%3)實例:voidmain(){floatx;inti;x=3.6:i=(int)x;printf(“x=%f,i=%d",x,i);)運行的結(jié)果是:x=3.600000,i=3五、自增與自減運算符++、 基本運算有:++i、i++、 i、i 說明:(一)++和一ー只能用于變量,不能用于表達(dá)式或常量;如:2++或(i+j)一是非法的;(二)++、ー運算符的結(jié)合方向是“右結(jié)合”;如:-i++不等于(-i)++;(三)++、ーー運算常用于循環(huán)控制、數(shù)組的下標(biāo)處理等場合;(四)i+++j應(yīng)理解為(i++)+j;(五)printf(“籾,%d0,i,i++):最好寫成j=i++;printf("%d,%dM,i,j);當(dāng)i的初值為3時,其結(jié)果為4,3第九節(jié)賦值運算符和賦值表達(dá)式ー、賦值運算符:=二、類型轉(zhuǎn)換規(guī)則:把賦值運算符右邊表達(dá)式的數(shù)據(jù)類型轉(zhuǎn)換成左邊對象的類型。(一)實型賦給整型變量時,舍去實數(shù)的小數(shù)部分。(-)整型賦給實型變量時,數(shù)值不變,以浮點形式存儲。(三)ー個較短的有符號的int型數(shù)據(jù)轉(zhuǎn)換成一個較長的有符號int型數(shù)據(jù)總是進(jìn)行符號擴(kuò)展,以保證數(shù)據(jù)的正確性;如:a、b分別為8位、16位整型數(shù)據(jù),則執(zhí)行b=a后:11111110(-2)轉(zhuǎn)換后的結(jié)果:1111111111111110(-2)(四)一個較長的有符號int型數(shù)據(jù)轉(zhuǎn)換成一個較短的有符號int型數(shù)據(jù)時把較長的有符號int型數(shù)據(jù)的高位部分截去;如:設(shè)a為8位,b為16位,則執(zhí)行a=b后,若b: 0000000000001111轉(zhuǎn)換后的結(jié)果 00001111TOC\o"1-5"\h\zb: 1111111111110001 (-15)轉(zhuǎn)換后的結(jié)果 11110001 (-15)1111111100000000 (-128)轉(zhuǎn)換后的結(jié)果 00000000 (0)三、復(fù)合的賦值運算符在“=”之前加上其他運算符,可構(gòu)成復(fù)合運算符x+=y等價于x=x+ya%=b+c/d等價于a=a%(b+c/d)C中10種復(fù)合賦值運算符:+=、ー=、?=、/=、%=、くく=、>>=、&=、=、|=四、賦值表達(dá)式〈變量X賦值運算符>く表達(dá)式/值〉如:voidmain(){inta,b,c,d;a=(a=100)+(b=30)-b*5;嵌套賦值表達(dá)式:el=e2=---=en,如:a=b=c=d=100等價于a=(b=(c=(d=100)))el,e2,—,en不必具有相同的數(shù)據(jù)類型例: 當(dāng)a=12時,a+=a-=a*a求解結(jié)果?先"a-=a*a"的運算,a=a-a*a=T32;再進(jìn)行再+=-132”的運算,a=a+(-132)=-264o第十節(jié)逗號運算符和逗號表達(dá)式語法:表達(dá)式1,表達(dá)式2, 表達(dá)式n語義:依次求各個表達(dá)式的值,最后ー個表達(dá)式的值作為整個逗號表達(dá)式的值;如:3+5,6+8的值為14;a=3*5,a*4的值為60;逗號表達(dá)式常用在for語句中;逗號表達(dá)式的優(yōu)先級別最低;C語言中,逗號有兩種用途(分隔符,運算符)思考:(a=3*5,a*4),a+5的值是多少?本章小結(jié)ー、C的基本數(shù)據(jù)類型int^float、double>char;二、基本數(shù)據(jù)類型的常量表示、變量定義,及不同類型的數(shù)據(jù)在內(nèi)存中的存儲形式;三、算術(shù)運算符及表達(dá)式的計算;四、++、ー運算;五、各種運算符的優(yōu)先級和結(jié)合性。作業(yè)題P66頁ー68頁3.6題、3.9題、3.10題、3.12題。第四章最簡單的C程序設(shè)計——順序程序設(shè)計ー、教學(xué)目標(biāo).掌握賦值語句、輸入輸出語句.學(xué)會簡單的順序程序設(shè)計二、教材分析.本章重點:輸入、輸出語句.本章難點:格式輸入輸出語句三、教學(xué)方法和手段.講授與演示法相結(jié)合.計算機和投影儀四、教學(xué)時數(shù)4學(xué)時五、教學(xué)內(nèi)容第一節(jié)c語句概述ー、控制語句(一)二個分支語句(if-else,switch)(二)三個循環(huán)語句(for、while、do-while)(三)四個轉(zhuǎn)移語句(continue、break,goto,return)二、函數(shù)調(diào)用語句如:printf("Hello,world!w;三,表達(dá)式語句x+y; i++;a=2;a=3*5,40;四,空語句(つ五,復(fù)合語句{語句序列}第二節(jié)賦值語句賦值語句是由賦值表達(dá)式加上一個分號構(gòu)成,如:b=3;if((a=b)>0)t=a;第三節(jié)數(shù)據(jù)輸入輸出的概念及在c語言中的實現(xiàn)ー、輸入、輸出的概念二、輸入輸出操作是由函數(shù)來實現(xiàn)的c語言函數(shù)庫中有“標(biāo)準(zhǔn)輸入輸出函數(shù)”字符的輸入與輸出:getchar(),putchar()字符串的輸入與輸出:gets()>puts()格式輸入與輸出:scanfO,printf()三、在使用C語言庫函數(shù)時,要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。例如:使用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時,要用到“stdio.h”文件,在源文件開頭應(yīng)有:#include<stdio.h>或#include“stdio.h”第四節(jié)字符數(shù)據(jù)的輸入輸出一>字符輸出函數(shù) putchar語法:putchar(c)語義:(向stdout終端)輸出ー個字符;如:ttinclude<stdio.h>voidmain(){putchar( ;putchar(匕’);putchar('A'+32);putchar('\n');)輸出:aaa二、字符輸入函數(shù) getchar語法:getchar(),是ー個無參函數(shù);語義:(從stdin終端上)輸入一個字符;getchar包含在stdio.h中,是stdio.h中定義的宏;如:ttinclude<stdio.h>voidmain(){putchar(getchar());}如:#include<stdio.h>voidmain(){intc;while((c=getchar())!= )if(c>='a'&&c<=?ガ)putchar(c-,a'+'A');elseputchar(c);)從鍵盤上輸入ー串字符遇結(jié)束,若字符在a?z之間時,則輸出字符的大寫;否則直接輸出字符。第五節(jié)格式輸入與輸出ー、格式輸出函數(shù) printf語法:printf(“格式控制”,輸出表列);格式控制:是用雙引號括起來的字符串,包含兩種信息:普通字符和轉(zhuǎn)義字符(這類字符總是原樣輸出)格式說明:由%和格式控制符組成。如:%d1猊1等;如:printf(Ma=%d,b=%d”,a,b);若a、b的值分別為2和3,則輸出結(jié)果為:a=2,b=3例1:#include<stdio.h>voidmain(){inta=4096;longintb=123456;printf(w%5d\n%3d\n%ld\n%91d\nw,a,a,b,b);)例2:#include<stdio.h>voidmain(){inta=-8;printf("deca=%d\nocta=%o\nhexa=%x\n”,a,a,a);}例3:#include<stdio.h>voidmain(){inta=101;unsignedintb=65;charc='a';printf("a=%d,%c,%u\nM,a,a,a);printf("b=%d,%c,%u\n”,b,b,b);printf("c=%d,%c,%u\nH,c,c,c);printf("c=%3d,%3c,%3u\nM,c,c,c);)二、格式輸入函數(shù)scanf語法:scanf(“格式控制”,地址表列);格式控制:包含三類符號空白字符:(空格、Tab或、t、Xn),輸入時不必ーー對應(yīng);普通字符:(非格式轉(zhuǎn)換說明符、非空白符、非%),輸入時必須ーー對應(yīng);格式轉(zhuǎn)換說明符:(由/后接一個任選的壓縮指示符“中’,表示本輸入項在讀入后不賦給相應(yīng)的變量)例1:#include<stdio.h>voidmain(){inta;floatb;charstr[50];scanf(a%d%f%sw,&a,&b,str);例2:ttinclude<stdio.h>voidmain(){inta;floatb;charstr[50];scanf("%2d%f%*d%2sn,&a,&b,str);注意:scanf函數(shù)規(guī)定,組成輸入項表的輸入對象須是地址量;如:scanf(“%d,%d,%d",&a,&b,&c);scanf(“a=%d,b=%d,c=%d",&a,&b,&c);(一)第一個輸入語句,正確的輸入數(shù)據(jù)流為:123,456,789<enter>,處理的結(jié)果為:123fa,456—b,789—c(-)同理對第二個輸入語句,正確的輸入數(shù)據(jù)流應(yīng)是:a=123,b=456,c=789くenter)該輸入數(shù)據(jù)流中除123,456,789被賦給相應(yīng)變量外,其余都被丟棄例3:#include<stdio.h>voidmain(){charcl,c2,c3;scanf("%c%c%c",&cl,&c2,&c3);scanf("%3c%3c%3c”,&cl,&c2,&c3);(一)對第一個輸入語句,若輸入數(shù)據(jù)流為abcくenter),則a-clb-c2c—c3;但如果輸入的數(shù)據(jù)流為:abc<enter>則a-cl~*c2bfc3(-)對第二個輸入語句:要求輸入3個字段9個字符,但三個變量中只能各存放一個字符,其余的2個字符將被丟掉。如當(dāng)輸入數(shù)據(jù)流為:abcdefghiくenter〉時,結(jié)果為a-*cld-c2gfc3第六節(jié)順序結(jié)構(gòu)程序設(shè)計舉例例1:輸入三角形的三邊長,求三角形面積。分析:三邊為a,b,c,面積area's(s-a)(s-b)(s-c),其中s=(a+b+c)/2程序:Sinclude<math.h>voidmain(){floata,b,c,s,area;sacnf(%f,%f,%f”,&a,&b,&c);s=l.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(aa=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);printf("area=%7.2f\n”,area);)例2:從鍵盤輸入一個大寫字母,要求改用小寫字母輸出。#include<stdio.h>voidmain(){charcl,c2;cl=getchar();printf("%c,%d\nv,cl,cl);c2=cl+32;printf("%c,%d\n,>,c2,c2);本章小結(jié)ー、字符輸入輸出函數(shù):getchar\putchar;二、格式輸入輸出函數(shù):scanf\printf,特別注意scanf函數(shù)的地址項是否要加&;三、注意簡單程序的結(jié)構(gòu),頭文件、變量定義、輸入語句及輸出語句。作業(yè)題p88頁ー90頁4.5題、4.8題、4.9題。第五章選擇結(jié)構(gòu)程序設(shè)計ー、教學(xué)目標(biāo).掌握實現(xiàn)選擇結(jié)構(gòu)的兩種語句、一個運算符.學(xué)會編寫選擇結(jié)構(gòu)的程序二、教材分析1.本章重點:if-else語句、switch語句、條件運算符2,本章難點:嵌套if-else語句中的if與else匹配問題三、教學(xué)方法和手段.講授與演示法相結(jié)合.計算機和投影儀四、教學(xué)時數(shù)4學(xué)時五、教學(xué)內(nèi)容第一節(jié)關(guān)系運算符和關(guān)系表達(dá)式ー、關(guān)系運算符及其優(yōu)先次序在C語言中有以下關(guān)系運算符:小于=小于或等于大于=大于或等于==等于!=不等于關(guān)系運算符都是雙目運算符,其結(jié)合性均為左結(jié)合。關(guān)系運算符的優(yōu)先級低于算術(shù)運算符,高于賦值運算符。在六個關(guān)系運算符中,く,〈=,〉,〉=的優(yōu)先級相同,高于==和!=,==和!=的優(yōu)先級相同。二、關(guān)系表達(dá)式關(guān)系表達(dá)式的一般形式為:表達(dá)式關(guān)系運算符表達(dá)式例如:a+b>c~dx>3/2匕’+Kc-i-5*j==k+l都是合法的關(guān)系表達(dá)式。由于表達(dá)式也可以又是關(guān)系表達(dá)式。因此也允許出現(xiàn)嵌套的情況。例如:a>(b>c)a!=(c==d)等。關(guān)系表達(dá)式的值是“真”和“假”,用“1”和“〇”表示。如:5>0的值為“真”,即為1〇(a=3)>(b=5)由于3>5不成立,故其值為假,即為〇。第二節(jié)邏輯運算符和邏輯表達(dá)式ー、邏輯運算符及其優(yōu)先次序C語言中提供了三種邏輯運算符:&&與運算I!或運算!非運算與運算符&&和或運算符丨丨均為雙目運算符。具有左結(jié)合性。非運算符!為單目運算符,具有右結(jié)合性。邏輯運算符和其它運算符優(yōu)先級的關(guān)系可表示如下:!(非)算術(shù)運算符關(guān)系運算符&&和||賦值運算符!(非)(與)f1(或)“&&”和“丨|”低于關(guān)系運算符,“!”高于算術(shù)運算符。按照運算符的優(yōu)先順序可以得出:a>b&&c>d等價于 (a>b)&&(c>d)!b==c||d<a 等價于 ((!b)==c)||(d<a)a+b>c&&x+y<b等價于((a+b)〉c)&&((x+y)〈b)二、邏輯運算的值邏輯運算的值也為“真”和“假”兩種,用“1”和“〇”來表示。其求值規(guī)則如下:(-)與運算&&:參與運算的兩個量都為真時,結(jié)果ォ為真,否則為假。例如:5>0&&4>2由于5>0為真,4>2也為真,相與的結(jié)果也為真。(二)或運算|丨:參與運算的兩個量只要有一個為真,結(jié)果就為真。兩個量都為假時,結(jié)果為假。例如:5>0||5>8由于5>0為真,相或的結(jié)果也就為真。(三)非運算!:參與運算量為真時,結(jié)果為假;參與運算量為假時,結(jié)果為真。例如:!(5>0)的結(jié)果為假。雖然C編譯在給出邏輯運算值時,以“1”代表“真”,“〇”代表"假”。但反過來在判斷ー個量是為“真”還是為“假"時,以“〇”代表"假”,以非“〇”的數(shù)值作為“真”。例如:由于5和3均為非“〇”因此5&&3的值為“真”,即為10又如:5||0的值為“真”,即為1。三、邏輯表達(dá)式邏輯表達(dá)式的一般形式為:表達(dá)式邏輯運算符表達(dá)式其中的表達(dá)式可以又是邏輯表達(dá)式,從而組成了嵌套的情形。例如:(a&&b)&&c根據(jù)邏輯運算符的左結(jié)合性,上式也可寫為:a&&b&&c邏輯表達(dá)式的值是式中各種邏輯運算的最后值,以“1”和“〇”分別代表“真”和“假”。注:在邏輯表達(dá)式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只有在必須執(zhí)行下ー個邏輯運算符才能求出表達(dá)式的解時,オ執(zhí)行該運算符。具體例子見課本94頁。第三節(jié)if語句用if語句可以實現(xiàn)選擇結(jié)構(gòu)。它根據(jù)給定的條件進(jìn)行判斷,以決定執(zhí)行給出的兩種操作之一。C語言的if語句有三種基本形式。一、if語句的三種形式(-)第一種形式為基本形式:ifif(表達(dá)式)語句其語義是:如果表達(dá)式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。其過程可表示為下圖?!纠?.3】ttinclude<stdio.h>voidmain()(inta,b,max;printf(zz\ninputtwonumbers: 〃);scanf(〃%d%d〃,&a,&b);max=a;if(max<b)max二b;printf(max二%d”,max);)本例程序中,輸入兩個數(shù)a,b。把a先賦予變量max,再用if語句判別max和b的大小,如max小于b,則把b賦予max。因此max中總是大數(shù),最后輸出max的值。(二)第二種形式為:if-elseif(表達(dá)式)語句1else語句2其語義是:如果表達(dá)式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2〇其執(zhí)行過程可表示為下圖?!纠?.4】Sinclude<stdio.h>voidmain()inta,b;printf("inputtwonumbers: ");scanf("%d%d",&a,&b);if(a>b)printf("max=%d\n",a);elseprintf("max=%d\n",b);}輸入兩個整數(shù),輸出其中的大數(shù)。改用if-else語句判別a,b的大小,若a大,則輸出a,否則輸出b。(三)第三種形式為if-else-if形式前二種形式的if語句一般都用于兩個分支的情況。當(dāng)有多個分支選擇時,可采用if-else-if語句,其一般形式為:if(表達(dá)式1)語句1;elseif(表達(dá)式2)語句2;elseif(表達(dá)式3)語句3;elseif(表達(dá)式m)語句m;else語句n;其語義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個值為真時,則執(zhí)行其對應(yīng)的語句。然后跳到整個if語句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語句n。然后繼續(xù)執(zhí)行后續(xù)程序。if-else-if語句的執(zhí)行過程如圖3-3所示。【例5.5】#include"stdio.h"voidmain(){charc;printf("inputacharacter: ");c=getchar();if(c>=0,&&c<=,9')printf("Thisisadigit\n");elseif(c>=AJ&&c<=Z*)printf("Thisisacapitalletter\n");elseif(c>='a'&&cく二'z')printf("Thisisasmallletter\n");elseprintf("Thisisanothercharacter\n");putchar(c);本例要求判別鍵盤輸入字符的類別。可以根據(jù)輸入字符的ASCI!碼來判別類型。在“〇”和“9”之間的為數(shù)字,在“A”和“Z”之間為大寫字母,在“a”和“z”之間為小寫字母,其余則為其它字符。這是ー個多分支選擇的問題,用if-else-if語句編程,判斷輸入字符ASCII碼所在的范圍,分別給出不同的輸出。例如輸入為“g”,輸出顯示它為小寫字符。(四)在使用if語句中還應(yīng)注意以下問題1.在三種形式的if語句中,在if關(guān)鍵字之后均為表達(dá)式。該表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是其它表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個變量。例如:if(a=5)語句;if(b)語句;都是允許的。只要表達(dá)式的值為非0,即為“真”。如在:if(a=5),??;中表達(dá)式的值永遠(yuǎn)為非0,所以其后的語句總是要執(zhí)行的,當(dāng)然這種情況在程序中不一定會出現(xiàn),但在語法上是合法的。又如,有程序段:if(a=b)printf(*%d*,a);elseprintf("a=0");本語句的語義是,把b值賦予a,如為非〇則輸出該值,否則輸出“a=0”字符串。這種用法在程序中是經(jīng)常出現(xiàn)的。2,在if語句中,條件判斷表達(dá)式必須用括號括起來,在語句之后必須加分號。3.在if語句的三種形式中,所有的語句應(yīng)為單個語句,如果要想在滿足條件時執(zhí)行ー組(多個)語句,則必須把這ー組語句用{}括起來組成一個復(fù)合語句。但要注意的是在}之后不能再加分號。例如:if(a>b){a++;b++;}else{a=0;b=10;}【例5.6】輸入兩個實數(shù),按代數(shù)值由小到大的次序輸出這兩個數(shù)。程序如下:ttinclude<stdio.h>voidmain(){floata,b,t;scanf( %f”,&a,&b);if(a>b){t=a;a=b;b二t;)printf(a%5.2f,%5.2fw,a,b);)【例5.7】輸入3個數(shù)a,b,c,要求按由小到大的順序輸出。程序為#include<stdio.h>voidmain()(floata,b,c,t;scanf(a%f,%f,%fn,&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c);)二、if語句的嵌套當(dāng)if語句中的執(zhí)行語句又是if語句時,則構(gòu)成了if語句嵌套的情形。其一般形式可表示如下:if(表達(dá)式)if語句;或者為if(表達(dá)式)if語句;elseif語句;或者為if(表達(dá)式)語句;elseif語句;或者為if(表達(dá)式)if語句;else語句;在嵌套內(nèi)的if語句可能又是if-else型的,這將會出現(xiàn)多個if和多個else重疊的情況,這時要特別注意if和else的配對問題。例如:if(表達(dá)式1)if(表達(dá)式2)語句1;else語句2;其中的else究竟是與哪ー個if配對呢?應(yīng)該理解為:if(表達(dá)式1)if(表達(dá)式2)語句1;else語句2;還是應(yīng)理解為:if(表達(dá)式1)if(表達(dá)式2)語句1;else語句2;/r/

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論