版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言概述
主要內(nèi)容:
C語(yǔ)言的特點(diǎn)
C語(yǔ)言的開(kāi)發(fā)流程簡(jiǎn)單的C語(yǔ)言程式
Win-TC的基本操作教學(xué)目的及要求:
通過(guò)對(duì)本章的學(xué)習(xí),要求掌握C語(yǔ)言的特點(diǎn)及其發(fā)展歷史;初步認(rèn)識(shí)C語(yǔ)言編譯軟體Win-TC的使用,基本瞭解C語(yǔ)言程式開(kāi)發(fā)的設(shè)計(jì)流程。第一章C語(yǔ)言概述本章重點(diǎn):
C語(yǔ)言的特點(diǎn)
C語(yǔ)言程式的開(kāi)發(fā)流程
Win-TC的基本操作本章難點(diǎn):
Win-TC的基本操作第一章C語(yǔ)言概述
1.C語(yǔ)言的誕生與發(fā)展(1)在C語(yǔ)言誕生以前,系統(tǒng)軟體主要是用組合語(yǔ)言編寫(xiě)的。由於組合語(yǔ)言程式依賴於電腦硬體,其可讀性和可移植性都很差;但一般的高級(jí)語(yǔ)言又難以實(shí)現(xiàn)對(duì)電腦硬體的直接操作(這正是組合語(yǔ)言的優(yōu)勢(shì)),於是人們盼望有一種兼有組合語(yǔ)言和高級(jí)語(yǔ)言特性的新語(yǔ)言。(2)C語(yǔ)言是貝爾實(shí)驗(yàn)室於70年代初研製出來(lái)的,後來(lái)又被多次改進(jìn),並出現(xiàn)了多種版本。80年代初,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI),根據(jù)C語(yǔ)言問(wèn)世以來(lái)各種版本對(duì)C語(yǔ)言的發(fā)展和擴(kuò)充,制定了ANSIC標(biāo)準(zhǔn)(1989年再次做了修訂)。*本書(shū)以ANSIC新標(biāo)準(zhǔn)來(lái)介紹。1.1C語(yǔ)言的特點(diǎn)(3)目前,在微機(jī)上廣泛使用的C語(yǔ)言編譯系統(tǒng)有MicrosoftC、TurboC、BorlandC等。雖然它們的基本部分都是相同的,但還是有一些差異,所以請(qǐng)大家注意自己所使用的C編譯系統(tǒng)的特點(diǎn)和規(guī)定(參閱相應(yīng)的手冊(cè))。本書(shū)選定的上機(jī)環(huán)境是Win-TC(Windows操作系統(tǒng))。2.C語(yǔ)言的特點(diǎn)
C語(yǔ)言同時(shí)具有組合語(yǔ)言和高級(jí)語(yǔ)言的優(yōu)勢(shì)。(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。(2)運(yùn)算符極其豐富。(3)生成的目標(biāo)代碼品質(zhì)高,程式執(zhí)行效率高。(4)可移植性好(較之組合語(yǔ)言)。(5)可以直接操縱硬體。3.在C語(yǔ)言中,除實(shí)現(xiàn)順序、選擇和迴圈三種基本結(jié)構(gòu)等的9條控制語(yǔ)句外,輸入輸出操作均由標(biāo)準(zhǔn)庫(kù)函數(shù)(不是C語(yǔ)言的組成部分)來(lái)實(shí)現(xiàn)。所以學(xué)習(xí)C語(yǔ)言,不僅要學(xué)習(xí)這9條控制語(yǔ)句和各種運(yùn)算符,而且要學(xué)習(xí)並掌握常用標(biāo)準(zhǔn)庫(kù)函數(shù)的使用。1.2C語(yǔ)言程式的開(kāi)發(fā)過(guò)程1.編輯編輯C語(yǔ)言根源程式,以.C為擴(kuò)展名。2.編譯將C語(yǔ)言根源程式編譯成目標(biāo)程式。擴(kuò)展名為.OBJ。3.連接將目標(biāo)程式連接生成可執(zhí)行的代碼。可執(zhí)行檔的擴(kuò)展名為.EXE。4.執(zhí)行執(zhí)行可執(zhí)行檔。1.3簡(jiǎn)單的C語(yǔ)言程式1.3.1C語(yǔ)言程式的總體結(jié)構(gòu)一個(gè)完整的C語(yǔ)言程式,是由一個(gè)main()函數(shù)(又稱(chēng)主函數(shù))和若干個(gè)其他函數(shù)結(jié)合而成的,或僅由一個(gè)main()函數(shù)構(gòu)成。[案例1.1]僅由main()函數(shù)構(gòu)成的C語(yǔ)言程式。/*案例代碼檔案名:AL1_1.C*//*功能:僅由main()函數(shù)構(gòu)成的C語(yǔ)言程式示例*/main(){printf(“ThisisaCprogram.\n”);}程式運(yùn)行結(jié)果:
ThisisaCprogram.1.3.2C語(yǔ)言程式規(guī)定
一個(gè)C語(yǔ)言程式可由多個(gè)函數(shù)組成,但必須包含一個(gè)且只能包含一個(gè)名為main的函數(shù),程式總是從main函數(shù)開(kāi)始執(zhí)行。
由一對(duì){}擴(kuò)起來(lái)的部分是函數(shù)體,其中語(yǔ)句實(shí)現(xiàn)程式的預(yù)定功能。
C語(yǔ)言的每個(gè)基本語(yǔ)句都以“;”結(jié)束。
C語(yǔ)言程式書(shū)寫(xiě)格式較自由,一行可寫(xiě)一個(gè)或多個(gè)語(yǔ)句。
所有的變數(shù)必須“先定義、後使用”。
/*……*/中的內(nèi)容是程式的注釋部分
#include語(yǔ)句是編譯預(yù)處理語(yǔ)句。1.4Win-TC軟體的使用本章小結(jié):
本章系統(tǒng)介紹了C語(yǔ)言的特點(diǎn)及其C語(yǔ)言程式設(shè)計(jì)開(kāi)發(fā)流程,讓學(xué)生對(duì)C語(yǔ)言有個(gè)感性的認(rèn)識(shí),初步接觸了簡(jiǎn)單易學(xué)的C語(yǔ)言編譯軟體——Win-TC。第一章C語(yǔ)言概述
常量和變數(shù)
基本數(shù)據(jù)類(lèi)型及其常量
算術(shù)運(yùn)算符、賦值運(yùn)算符及其運(yùn)算式
關(guān)係運(yùn)算符、邏輯運(yùn)算符及其運(yùn)算式
逗號(hào)運(yùn)算符、條件運(yùn)算符及其運(yùn)算式
變數(shù)的初始化
不同類(lèi)型數(shù)據(jù)之間的轉(zhuǎn)換
類(lèi)型定義第二章數(shù)據(jù)類(lèi)型、運(yùn)算符及其表達(dá)式主要內(nèi)容:本章授課理論課:
4學(xué)時(shí)實(shí)踐課:4學(xué)時(shí)第二章數(shù)據(jù)類(lèi)型、運(yùn)算符及其表達(dá)式教學(xué)目的及要求:
通過(guò)對(duì)本章的學(xué)習(xí),要求掌握C語(yǔ)言程式設(shè)計(jì)的基礎(chǔ)知識(shí),能夠?qū)ψ償?shù)和常量進(jìn)行定義及使用,對(duì)常用的運(yùn)算符及其運(yùn)算式能夠熟練應(yīng)用?;静t解C語(yǔ)言不同類(lèi)型數(shù)據(jù)間的轉(zhuǎn)換和類(lèi)型定義。本章重點(diǎn):
變數(shù)定義和應(yīng)用基本類(lèi)型及其常量定義和應(yīng)用算術(shù)運(yùn)算符、賦值運(yùn)算符及其運(yùn)算式關(guān)係運(yùn)算符、邏輯運(yùn)算符及其運(yùn)算式本章難點(diǎn):
逗號(hào)運(yùn)算符、條件運(yùn)算符及其運(yùn)算式類(lèi)型定義第二章數(shù)據(jù)類(lèi)型、運(yùn)算符及其表達(dá)式2.1常量和變數(shù)
常量
即在程式運(yùn)行過(guò)程中其值不會(huì)改變的量。
變數(shù)
即在程式運(yùn)行過(guò)程中其值可以改變的量。
識(shí)別字
用以標(biāo)識(shí)程式中用到的變數(shù)名、函數(shù)名、類(lèi)型名、數(shù)組名、檔案名、符號(hào)常量名等的有效字元序列。識(shí)別字的命名規(guī)則:由字母(大、小寫(xiě)均可)、數(shù)字及下劃線組成,且第一個(gè)字元必須是字母或下劃線。變數(shù)名
合法變數(shù)名:Year,Day,ATOK,x1,_CWS,_change,_to
不合法變數(shù)名:#123,.CUM,$100,1996Y,1-2-3-大,小寫(xiě)字母有區(qū)別,一般變數(shù)名用小寫(xiě),組成變數(shù)名的有效字元數(shù)隨C語(yǔ)言的編譯系統(tǒng)而定,同一個(gè)函數(shù)內(nèi)所定義的變數(shù)不能同名。最基本的數(shù)據(jù)類(lèi)型有四種:整型:int字元型:char單精確度型:float雙精度型:double2.2基本數(shù)據(jù)類(lèi)型及其常量浮點(diǎn)型2.2.1整型變數(shù)及其常量
整型變數(shù)用以存放整型數(shù)據(jù).
一般定義形式:inti1,i2;
整型常量
C語(yǔ)言中可用三種數(shù)製錶示:
十進(jìn)位:
如250,23,-10等十六進(jìn)制:
以0X或0x開(kāi)頭,如0X61(相當(dāng)97)
八進(jìn)制:以0開(kāi)頭,如0141(相當(dāng)97)2.2.2浮點(diǎn)型變數(shù)及其常量
帶有小數(shù)點(diǎn)的數(shù)稱(chēng)為浮點(diǎn)數(shù)或?qū)嵭蛿?shù)。浮點(diǎn)型變數(shù)分單精確度浮點(diǎn)型變數(shù)和雙精度浮點(diǎn)型變數(shù)。單精確度浮點(diǎn)型變數(shù)的定義方式:floatf1,f2;雙精度浮點(diǎn)型變數(shù)的定義方式:doubled1,d2;不同系統(tǒng)中,float型數(shù)據(jù)和double型數(shù)據(jù)所能提供的精度是有差異的。浮點(diǎn)型常量一般不分float型和double型,根據(jù)變數(shù)的類(lèi)型來(lái)截取相應(yīng)的有效位數(shù)。兩種表示形式:(1)十進(jìn)位形式:由數(shù)字和小數(shù)點(diǎn)組成。如,21.34567,-4,30等。(2)指數(shù)形式:即用科學(xué)計(jì)數(shù)法。字母E和e之前必須有數(shù)字,且e後面的指數(shù)部分必須是整數(shù)。2.2.3字元型變數(shù)及其常量字元型變數(shù)用於存放一個(gè)字元。一般定義形式:charc1,c2;字元型常量用一對(duì)單引號(hào)括起來(lái)的一個(gè)字元。如‘A’,‘3’,‘#’等。轉(zhuǎn)義字元以‘\’開(kāi)頭的特殊字元型常量?!甛n’換行字元‘\r’回車(chē)字元‘\b’退格字元‘\t’跳格字元‘\’’單引號(hào)字元‘\“’雙引號(hào)字元
2.2.4長(zhǎng)整型、短整型和無(wú)符號(hào)型
長(zhǎng)整型變數(shù)定義的一般形式:longintX;能表示的數(shù)值範(fàn)圍與電腦系統(tǒng)有關(guān),是int的兩倍。長(zhǎng)整型常量:在整型常量的末尾加上字母L或l。例:x=9876543L;
短整型變數(shù)定義的一般形式:shortintx;能表示的數(shù)值範(fàn)圍與電腦系統(tǒng)有關(guān),有的與int相同,有的小於int。
無(wú)符號(hào)整型變數(shù)定義的一般形式:unsignedintx;用於存放非負(fù)整型數(shù)。與int型變數(shù)占相同的記憶體空間。
注:C語(yǔ)言只要求long型數(shù)據(jù)長(zhǎng)度不短於int型,short型數(shù)據(jù)長(zhǎng)度不長(zhǎng)於int型,各數(shù)據(jù)類(lèi)型所占存儲(chǔ)位元組數(shù)具體所使用系統(tǒng)及編譯器。2.2.5sizeof運(yùn)算符
用於瞭解一個(gè)變數(shù)或某種數(shù)據(jù)類(lèi)型的量在內(nèi)存中所占位元組數(shù)。Sizeof有兩種使用方法:
sizeof運(yùn)算式如:當(dāng)x是整形變數(shù)的時(shí)候,sizeofx=2;
sizeof(類(lèi)型名)
如:sizeof(float)=42.3算術(shù)運(yùn)算符、賦值運(yùn)算符及其運(yùn)算式運(yùn)算符的優(yōu)先順序及結(jié)合性優(yōu)先順序:一個(gè)運(yùn)算式中,多個(gè)運(yùn)算符運(yùn)算的先後順序。結(jié)合性:一個(gè)運(yùn)算對(duì)象的兩側(cè)的運(yùn)算符的優(yōu)先順序相同時(shí),進(jìn)行運(yùn)算的結(jié)合方向。算術(shù)運(yùn)算符和算術(shù)運(yùn)算式
1.加、減、乘、除及取模運(yùn)算符(自左至右)
+、-、*、/(運(yùn)算符兩側(cè)是整數(shù),則其結(jié)果為整數(shù))、%(取兩個(gè)整型數(shù)相除的餘數(shù))。
2.增1、減1運(yùn)算符(自右至左)運(yùn)算對(duì)象只能是整型或字元型變數(shù)。
i++;先使用變數(shù)i的值,再使i的值加1。
++i;先使i的值加1,再先使用變數(shù)i的值。
i--;先使用變數(shù)i的值,再使i的值減1。
--i;先使i的值減1,再先使用變數(shù)i的值。賦值運(yùn)算符和賦值運(yùn)算式
1.賦值運(yùn)算符(自右至左)
=
功能:將賦值運(yùn)算符右邊的運(yùn)算式的值賦給左邊的變數(shù)。例:x=23;f=23.5;h=‘A’;
2.複合賦值運(yùn)算符(自右至左)
+=,-=,*=,/=,%=
例:x+=10;y*=20;舉例#include"stdio.h"voidmain(){inti,j;i=3;j=-i++;printf("%d,%d\n",j,i);system(“pause”)}#include"stdio.h"voidmain(){inta;a=12;a+=a-=a*a;printf("%d\n",a);system(“pause”)}a+=a-=a*a=>1.a-=a*a
即:a=a-a*a
2.a+=a
即:a=a+a
a+=a-=a*a=>a=(a-a*a)+(a-a*a)2.4關(guān)係運(yùn)算符、邏輯運(yùn)算符及其運(yùn)算式關(guān)係運(yùn)算符和關(guān)係運(yùn)算式
1.關(guān)係運(yùn)算符(自左至右)
共6種:
<、<=、>、>=、==、!=
後兩種運(yùn)算符的優(yōu)先順序低於前4種。關(guān)係運(yùn)算符的優(yōu)先順序低於算術(shù)運(yùn)算符。
2.關(guān)係運(yùn)算式用關(guān)係運(yùn)算符將兩個(gè)運(yùn)算量連接起來(lái)的有意義的式子。例:X>Y,A+B<=C+D。關(guān)係運(yùn)算式是一個(gè)邏輯值“真”(用1表示)或“假”(用0表示)。邏輯運(yùn)算符和邏輯運(yùn)算式
1.邏輯運(yùn)算符有三種:!、&&、||
優(yōu)先順序依次降低,“!”優(yōu)先順序高於算術(shù)運(yùn)算符和關(guān)係運(yùn)算符;&&、||優(yōu)先順序低於算術(shù)運(yùn)算符和關(guān)係運(yùn)算符。結(jié)合性:!自右至左。
&&、||自左至右。
2.邏輯運(yùn)算式用邏輯運(yùn)算符將關(guān)係運(yùn)算式或邏輯量連接起來(lái)的式子。邏輯運(yùn)算式結(jié)果是一個(gè)邏輯值“真”(用1表示)或“假”(用0表示)。但判斷一個(gè)量是否為“真”時(shí),以非0表示“真”,以0表示“假”。#include"stdio.h"voidmain(void){inta=10,b=20,c=30;charx='a',y='b';printf("%d\n",a>b||b<c);printf("%d\n",!(x<y));system(“pause”);}舉例#include"stdio.h"voidmain(void){inta=10,b=20,c=30;charx='a',y='b';printf("%d,%d\n",a>b,b<c);printf("%d\n",x<y);system(“pause”);}2.5逗號(hào)運(yùn)算符、條件運(yùn)算符及其運(yùn)算式
逗號(hào)運(yùn)算符和逗號(hào)運(yùn)算式
1.逗號(hào)運(yùn)算符:,(自左至右)
優(yōu)先順序最低。
2.逗號(hào)運(yùn)算式:一般形式:運(yùn)算式1,運(yùn)算式2,…,運(yùn)算式n
求解過(guò)程:先求解運(yùn)算式1,再求解運(yùn)算式2,最後求解運(yùn)算式n,逗號(hào)運(yùn)算式的值為最右邊運(yùn)算式n的值。例:a=6,a*3
條件運(yùn)算符和條件運(yùn)算式
1.條件運(yùn)算符:?:(自右至左)唯一的三目運(yùn)算符。
2.條件運(yùn)算式一般形式:運(yùn)算式1?運(yùn)算式2:運(yùn)算式3
功能:當(dāng)運(yùn)算式1的值為“真”時(shí),條件運(yùn)算式的值取運(yùn)算式2的值,當(dāng)運(yùn)算式1的值為“假”時(shí),條件運(yùn)算式的值取運(yùn)算式3的值。例:c=(a>b)?a:b;舉例#include"stdio.h"voidmain(void){inta=10,b=20,c=30,x;x=(a,b,c);printf("%d\n",x);}#include"stdio.h"voidmain(void){inta,b,max;scanf("%d,%d",&a,&b);max=(a>b)?a:b;printf("max=%d\n",max);}2.6變數(shù)的初始化
即在對(duì)變數(shù)進(jìn)行定義的同時(shí),為其賦初值。例:int age=20;
char letter=‘A’;
int convert=‘b’-‘B’;
float average=3.2*9.8;int x=10,y=20,z=30;2.7不同類(lèi)型數(shù)據(jù)之間的轉(zhuǎn)換
不同類(lèi)型數(shù)據(jù)在進(jìn)行混合運(yùn)算時(shí),需進(jìn)行類(lèi)型轉(zhuǎn)換,有兩種方式:1.自動(dòng)類(lèi)型轉(zhuǎn)換
2.強(qiáng)制類(lèi)型轉(zhuǎn)換
C語(yǔ)言允許字元型數(shù)據(jù)和整型數(shù)據(jù)之間通用。2.7.1自動(dòng)類(lèi)型轉(zhuǎn)換自動(dòng)類(lèi)型轉(zhuǎn)換規(guī)則:當(dāng)單、雙精度浮點(diǎn)型數(shù)據(jù)賦給整型變數(shù)時(shí),浮點(diǎn)數(shù)的小數(shù)部分將被捨棄,且需進(jìn)行相應(yīng)有效位數(shù)的截取。當(dāng)整型數(shù)據(jù)賦給浮點(diǎn)型變數(shù)時(shí),數(shù)值上不發(fā)生任何變化。只要某個(gè)算術(shù)運(yùn)算符的兩個(gè)運(yùn)算對(duì)象中有一個(gè)是浮點(diǎn)數(shù),則運(yùn)算將按浮點(diǎn)型格式來(lái)進(jìn)行。2.7.2強(qiáng)制類(lèi)型轉(zhuǎn)換自動(dòng)類(lèi)型轉(zhuǎn)換達(dá)不到目的時(shí),可以利用強(qiáng)制類(lèi)型轉(zhuǎn)換。一般形式:(類(lèi)型名)(運(yùn)算式)例:(float)x/y說(shuō)明:強(qiáng)制類(lèi)型轉(zhuǎn)換後,得到的是一個(gè)所需類(lèi)型的中間變數(shù),原來(lái)變數(shù)的類(lèi)型沒(méi)有發(fā)生任何變化。舉例#include"stdio.h"voidmain(void){ inti='a'; charc=97; printf("%d,%c\n",c,c); printf("%d,%c\n",i,i);}#include"stdio.h"voidmain(void){ inti=20,j; floatf; j=i/40; f=(float)i/40; printf("%d\n",j); printf("%f\n",f);}2.8類(lèi)型定義
C語(yǔ)言允許使用typedef語(yǔ)句定義新的類(lèi)型名,以代替已有的類(lèi)型名。例:typedefintcounter;
counterx,y;=>intx,y;說(shuō)明: 1.typedef不能創(chuàng)建新的類(lèi)型
2.typedef不能用以定義變數(shù).第二章數(shù)據(jù)類(lèi)型、運(yùn)算符及其表達(dá)式本章小結(jié):
本章主要介紹C語(yǔ)言程式設(shè)計(jì)中的常用數(shù)據(jù)類(lèi)型,對(duì)變數(shù)和常量的定義和引用,對(duì)常用的運(yùn)算符及其運(yùn)算式應(yīng)用方法。簡(jiǎn)單介紹C語(yǔ)言不同類(lèi)型數(shù)據(jù)間的轉(zhuǎn)換方法和類(lèi)型定義方法。
基本語(yǔ)句
數(shù)據(jù)的輸入
數(shù)據(jù)的輸出
第三章基本語(yǔ)句主要內(nèi)容:本章授課理論課:
2學(xué)時(shí)實(shí)踐課:2學(xué)時(shí)
第三章基本語(yǔ)句教學(xué)目的及要求:
通過(guò)對(duì)本章的學(xué)習(xí),要求掌握C語(yǔ)言程式設(shè)計(jì)中常用的基本語(yǔ)句和複合語(yǔ)句,熟悉數(shù)據(jù)的輸入和輸出方法。能夠調(diào)用常用的數(shù)據(jù)輸入和輸出函數(shù)。本章重點(diǎn):
基本語(yǔ)句複合語(yǔ)句數(shù)據(jù)的輸入數(shù)據(jù)的輸出本章難點(diǎn):數(shù)據(jù)的輸入數(shù)據(jù)的輸出
第三章基本語(yǔ)句語(yǔ)句和複合語(yǔ)句數(shù)據(jù)的輸入數(shù)據(jù)的輸出第三章基本語(yǔ)句3.1語(yǔ)句和複合語(yǔ)句
一個(gè)運(yùn)算式的後面跟一個(gè)分號(hào)構(gòu)成語(yǔ)句。用左、右花括弧括起來(lái)的語(yǔ)句稱(chēng)為複合語(yǔ)句。
一個(gè)複合語(yǔ)句在語(yǔ)法上等同於一個(gè)語(yǔ)句。例: x=a+b;
if(1)
{a=3;b=4;x=a*b;}第三章基本語(yǔ)句
字元輸入函數(shù)格式:getchar()
功能:接收從鍵盤(pán)輸入的一個(gè)字元。例:#include"stdio.h"voidmain(void){ charc;
c=getchar(); }3.2數(shù)據(jù)的輸入第三章基本語(yǔ)句格式輸入函數(shù)格式:scanf(格式控制,地址表);
功能:用以接收從鍵盤(pán)上輸入的多個(gè)任何類(lèi)型的數(shù)據(jù)。1.格式控制由%和格式字元組成。作用是將輸入的數(shù)據(jù)轉(zhuǎn)換成指定的格式後存入到由地址表所指向的相應(yīng)的變數(shù)中。例:%c,%d,%f2.地址表由變數(shù)地址組成。變數(shù)地址由&和變數(shù)名組成。例:&a,&b3.2數(shù)據(jù)的輸入第三章基本語(yǔ)句格式字元d輸入十進(jìn)位整數(shù)(長(zhǎng)整型用ld;短整型用hd)o輸入八進(jìn)制整數(shù)(長(zhǎng)整型用lo;短整型用ho)x輸入十六進(jìn)制整數(shù)(長(zhǎng)整型用lx;短整型用hx)c輸入單個(gè)字元f輸入浮點(diǎn)數(shù)e輸入浮點(diǎn)數(shù),作用與f相同.s輸入以‘\0’為結(jié)束標(biāo)緻的字串3.2數(shù)據(jù)的輸入第三章基本語(yǔ)句舉例#include"stdio.h"voidmain(void){ inti; floatf; charc; scanf("%d%f%c",&i,&f,&c); printf("%d,%f,%c\n",i,f,c);}3.2數(shù)據(jù)的輸入第三章基本語(yǔ)句字元輸出函數(shù) 格式:putchar(變數(shù)名)
功能:將變數(shù)中的字元輸出到螢?zāi)划?dāng)前游標(biāo)位置。 例:#include"stdio.h" voidmain(void) { charc; c=getchar(); putchar(c); }3.3數(shù)據(jù)的輸出第三章基本語(yǔ)句格式輸出函數(shù) 格式:printf(格式控制,輸出表); 功能:用以輸出多個(gè)任何類(lèi)型的數(shù)據(jù)。
1.格式控制 由%和格式字元組成,作用是將要輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式後輸出。 例:%d,%f,%c 2.輸出表 由變數(shù)名組成。變數(shù)名間用逗號(hào)隔開(kāi)。 例:a,b,c第三章基本語(yǔ)句3.3數(shù)據(jù)的輸出格式字元d 輸出十進(jìn)位整數(shù)(長(zhǎng)整型用ld)o 輸出八進(jìn)制整數(shù)(長(zhǎng)整型用lo)x 輸出十六進(jìn)制整數(shù)(長(zhǎng)整型用lx)c 輸出單個(gè)字元f 輸出浮點(diǎn)數(shù)e 以科學(xué)計(jì)數(shù)法輸出浮點(diǎn)數(shù)s 輸出以‘\0’為結(jié)束標(biāo)緻的字串第三章基本語(yǔ)句3.3數(shù)據(jù)的輸出#include"stdio.h"voidmain(void){ charc1,c2; scanf("%c%c",&c1,&c2); ++c1; --c2;
printf("C1=%c,C2=%c",c1,c2);}第三章基本語(yǔ)句3.3數(shù)據(jù)的輸出舉例
第三章基本語(yǔ)句本章小結(jié):
本章在闡述C語(yǔ)言程式設(shè)計(jì)中常用的基本語(yǔ)句和複合語(yǔ)句基礎(chǔ)上,詳細(xì)介紹了數(shù)據(jù)的輸入和輸出的常用函數(shù)及其使用方法。第四章選擇結(jié)構(gòu)
主要內(nèi)容:
結(jié)構(gòu)化程式設(shè)計(jì)的三種基本結(jié)構(gòu)
IF-else選擇結(jié)構(gòu)多分支Switch選擇結(jié)構(gòu)本章授課理論課:
2學(xué)時(shí)實(shí)踐課:2學(xué)時(shí)教學(xué)目的及要求:
通過(guò)對(duì)本章的學(xué)習(xí),要求掌握C語(yǔ)言程式設(shè)計(jì)中的三種基本結(jié)構(gòu),把握選擇結(jié)構(gòu)的兩種常用語(yǔ)句結(jié)構(gòu)?;静t解C語(yǔ)言程式開(kāi)發(fā)的選擇流程設(shè)計(jì)。第四章選擇結(jié)構(gòu)本章重點(diǎn):
C語(yǔ)言程式設(shè)計(jì)的三種基本結(jié)構(gòu)
IF-else選擇語(yǔ)句結(jié)構(gòu)多分支Switch選擇語(yǔ)句結(jié)構(gòu)本章難點(diǎn):
Switch多分支選擇結(jié)構(gòu)第四章選擇結(jié)構(gòu)
結(jié)構(gòu)化程式設(shè)計(jì)的三種基本結(jié)構(gòu)
1.順序結(jié)構(gòu)按語(yǔ)句的書(shū)寫(xiě)順序依此執(zhí)行。
2.選擇結(jié)構(gòu)通過(guò)對(duì)特定條件的判斷,選擇一個(gè)分支執(zhí)行。
3.迴圈結(jié)構(gòu)在給定條件下,重複執(zhí)行某段程式,直到條件不滿足為止。AB第四章選擇結(jié)構(gòu)格式:if(運(yùn)算式)
語(yǔ)句1else
語(yǔ)句2
功能:先計(jì)算運(yùn)算式的值,若運(yùn)算式的值為“真”(非0),則執(zhí)行語(yǔ)句1,否則,若運(yùn)算式的值為“假”(為0),則執(zhí)行語(yǔ)句2。
說(shuō)明:
1、語(yǔ)句1、語(yǔ)句2可以是單個(gè)語(yǔ)句,也可是複合語(yǔ)句。
2、if語(yǔ)句可以嵌套。(else總是與它前面的離它最近的if配對(duì))。非0?YNAB4.1IF條件選擇語(yǔ)句第四章選擇結(jié)構(gòu)if語(yǔ)句舉例#include"stdio.h"main(){ charc1,c2; c1=getchar(); c2=getchar(); if(c1>c2) printf("%c\n",c1); else printf("%c\n",c2);}#include<stdio.h>main(){ inta,b,c,max; printf("Inputa,b,c:");scanf("%d,%d,%d",&a,&b,&c); if(a>b&&a>c) max=a; else if(b>c) max=b; else max=c;printf("max=%d\n",max);}4.1IF條件選擇語(yǔ)句第四章選擇結(jié)構(gòu)格式:switch(運(yùn)算式){ case常量運(yùn)算式1:
語(yǔ)句1 case常量運(yùn)算式2:
語(yǔ)句2 …… case常量運(yùn)算式n:
語(yǔ)句n [default: 語(yǔ)句n+1] }功能:先計(jì)算switch後面運(yùn)算式的值,若此值等於某個(gè)case後面的常量運(yùn)算式的值,則轉(zhuǎn)去執(zhí)行該case後面的語(yǔ)句去執(zhí)行;否則執(zhí)行default後面的語(yǔ)句。4.2多分支選擇語(yǔ)句第四章選擇結(jié)構(gòu)說(shuō)明:
1.“運(yùn)算式”及“常量運(yùn)算式”的值,必須是整型或字元型。
2.case後面的常量運(yùn)算式的值必須互不相同。
3.執(zhí)行完某個(gè)case後面的語(yǔ)句後,將自動(dòng)轉(zhuǎn)到該語(yǔ)句後面的語(yǔ)句去執(zhí)行,直到遇到switch語(yǔ)句結(jié)束或“break”語(yǔ)句為止。
4.case後面的多個(gè)語(yǔ)句可以不用花括弧括起。
5.多個(gè)case後面的語(yǔ)句可以共用一組執(zhí)行語(yǔ)句。4.2多分支選擇語(yǔ)句第四章選擇結(jié)構(gòu) case4: case6: case9: case11:days=30;break; case2:if(year%4==0&&year%100!=0||year%400==0) days=29; else days=28;break; default: printf("Dataerror!");break; } printf("Days=%d",days);}4.3Switch語(yǔ)句舉例第四章選擇結(jié)構(gòu)#include<stdio.h>main(){ intyear,month,days; printf("Inputyearandmonth:"); scanf("%d%d",&year,&month); switch(month) { case1: case3: case5: case7: case8: case10: case12:days=31;break;本章小結(jié):
本章簡(jiǎn)單介紹了C語(yǔ)言程式設(shè)計(jì)中的三種基本結(jié)構(gòu),重點(diǎn)系統(tǒng)介紹了選擇結(jié)構(gòu)的兩種常用語(yǔ)句結(jié)構(gòu)及其使用方法。第四章選擇結(jié)構(gòu)第五章迴圈結(jié)構(gòu)
主要內(nèi)容:
while迴圈語(yǔ)句
do-while迴圈語(yǔ)句
for迴圈語(yǔ)句
break和continue語(yǔ)句空操作語(yǔ)句和goto語(yǔ)句本章授課理論課:
4學(xué)時(shí)實(shí)踐課:4學(xué)時(shí)教學(xué)目的及要求:
通過(guò)對(duì)本章的學(xué)習(xí),要求熟悉C語(yǔ)言程式設(shè)計(jì)中常用的迴圈語(yǔ)句,包括while、do-while和for語(yǔ)句結(jié)構(gòu),並能夠熟練應(yīng)用它們?nèi)ピO(shè)計(jì)程式;掌握迴圈語(yǔ)句結(jié)構(gòu)配套使用的break和continue的用法;瞭解空操作語(yǔ)句和goto語(yǔ)句的用法;第五章迴圈結(jié)構(gòu)本章重點(diǎn):
while、do-while和for迴圈語(yǔ)句
break和continue語(yǔ)句空操作和goto語(yǔ)句本章難點(diǎn):
for迴圈語(yǔ)句
break和continue的用法區(qū)別第五章迴圈結(jié)構(gòu)while迴圈語(yǔ)句do-while迴圈語(yǔ)句for迴圈語(yǔ)句break語(yǔ)句和continue語(yǔ)句空操作語(yǔ)句和goto語(yǔ)句第五章迴圈結(jié)構(gòu)格式:while(運(yùn)算式){
循環(huán)體
}功能:先計(jì)算運(yùn)算式的值,若運(yùn)算式的值為真,則執(zhí)行循環(huán)體,否則,執(zhí)行循環(huán)體後面的語(yǔ)句。運(yùn)算式真假循環(huán)體第五章迴圈結(jié)構(gòu)5.1while迴圈語(yǔ)句While迴圈舉例#include"stdio.h"voidmain(){ inti=1,sum=0;
while(i<=100) { sum+=i; i=i+1; } printf("%d\n",sum);}第五章迴圈結(jié)構(gòu)5.1while迴圈語(yǔ)句格式:do{循環(huán)體}while(運(yùn)算式);功能:先執(zhí)行一次循環(huán)體,再判斷運(yùn)算式的值是否為“真”,若為“真”,繼續(xù)執(zhí)行循環(huán)體,直到運(yùn)算式的值為“假”,退出迴圈。循環(huán)體運(yùn)算式真假第五章迴圈結(jié)構(gòu)5.2do-while迴圈語(yǔ)句do-while迴圈語(yǔ)句舉例#include"stdio.h"voidmain(){ inti=1,sum=0;
do {sum+=i; i=i+1;} while(i<=100); printf("%d\n",sum);}第五章迴圈結(jié)構(gòu)5.2do-while迴圈語(yǔ)句格式:for(運(yùn)算式1;運(yùn)算式2;運(yùn)算式3)
{循環(huán)體}執(zhí)行過(guò)程:1、先求解運(yùn)算式1,2、再求解運(yùn)算式2,若運(yùn)算式2的值為“真”,則執(zhí)行循環(huán)體中的語(yǔ)句,接著求解運(yùn)算式3,3、重複執(zhí)行步驟2),直到運(yùn)算式2的值為“假”,退出迴圈。
求解運(yùn)算式1運(yùn)算式2執(zhí)行循環(huán)體求解運(yùn)算式3退出迴圈真假第五章迴圈結(jié)構(gòu)5.3for迴圈語(yǔ)句for迴圈說(shuō)明for語(yǔ)句中的任何一個(gè)運(yùn)算式都可以省略,但其中分號(hào)不能省略。省略運(yùn)算式2,相當(dāng)於死迴圈。此時(shí)應(yīng)在循環(huán)體中設(shè)置相應(yīng)語(yǔ)句結(jié)束迴圈。如循環(huán)體由多個(gè)語(yǔ)句組成,則必須用花括弧括起。運(yùn)算式1和運(yùn)算式3都可是逗號(hào)運(yùn)算式。第五章迴圈結(jié)構(gòu)5.3for迴圈語(yǔ)句for迴圈舉例#include"stdio.h"voidmain(){ inti,sum;
for(i=1,sum=0;i<=100;i++) sum+=i; printf("%d\n",sum);}第五章迴圈結(jié)構(gòu)5.3for迴圈語(yǔ)句break語(yǔ)句格式:break;功能:終止switch語(yǔ)句或迴圈語(yǔ)句的執(zhí)行。continue語(yǔ)句格式:continue;功能:終止本次迴圈。第五章迴圈結(jié)構(gòu)5.4break和continueBreak、continue語(yǔ)句舉例#include"stdio.h"voidmain(){ inti,sum; for(i=1,sum=0;i<=100;i++){ if(sum>2000) break; sum+=i;} printf("%d\n",sum);}第五章迴圈結(jié)構(gòu)5.4break和continue#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') continue; sum++;} printf("sum=%d",sum);}第五章迴圈結(jié)構(gòu)Break、continue語(yǔ)句比較舉例#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') continue; sum++;} printf("sum=%d",sum);}#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') break; sum++;} printf("sum=%d",sum);}空操作語(yǔ)句 僅由一個(gè)分號(hào)組成,不進(jìn)行任何操作。goto語(yǔ)句 格式:goto標(biāo)號(hào);
……
標(biāo)號(hào):語(yǔ)句; 功能:將執(zhí)行流程轉(zhuǎn)到以該標(biāo)號(hào)為首碼的語(yǔ)句去執(zhí)行。 說(shuō)明:標(biāo)號(hào)的命名規(guī)則與變數(shù)完全相同。第五章迴圈結(jié)構(gòu)5.5空操作和goto語(yǔ)句舉例#include"stdio.h"voidmain(){ intsum,i; charch; for(sum=0,i=1;i<=100;sum+=i,i++) ; printf("sum=%d\n",sum);}#include"stdio.h"voidmain(){ inti; floatsum; sum=1; i=2;L1:sum+=1/(float)i; i+=2; if(i<=50) gotoL1; printf("sum=%f\n",sum);}第五章迴圈結(jié)構(gòu)5.5空操作和goto語(yǔ)句本章小結(jié):
本章重點(diǎn)介紹了C語(yǔ)言程式設(shè)計(jì)中常用的迴圈語(yǔ)句及其使用方法,包括while、do-while和for語(yǔ)句結(jié)構(gòu),並通過(guò)例子說(shuō)明了它們的使用方法;同時(shí)介紹了迴圈語(yǔ)句結(jié)構(gòu)配套使用的break和continue的用法;最後,對(duì)空操作語(yǔ)句和goto語(yǔ)句的用法作了簡(jiǎn)單介紹;第五章迴圈結(jié)構(gòu)第六章數(shù)組
主要內(nèi)容:
一維數(shù)組定義、引用、初始化和舉例二維數(shù)組定義、引用、初始化和舉例字元數(shù)組定義、引用、初始化和舉例字串函數(shù)的應(yīng)用本章授課理論課:
4學(xué)時(shí)實(shí)踐課:4學(xué)時(shí)教學(xué)目的及要求:
通過(guò)對(duì)本章的學(xué)習(xí),要求掌握C語(yǔ)言一維數(shù)組、二維數(shù)組和字元數(shù)組的定義、引用及其初始化方法;初步認(rèn)識(shí)數(shù)組的應(yīng)用舉例使用,瞭解常用的字串處理函數(shù)。第六章數(shù)組本章重點(diǎn):
一維數(shù)組的定義、引用、舉例和初始化二維數(shù)組的定義、引用、舉例和初始化字元數(shù)組的定義、引用、舉例和初始化字串處理函數(shù)本章難點(diǎn):
一維數(shù)組、二維數(shù)組和字元數(shù)組的初始化第六章數(shù)組
一維數(shù)組
二維數(shù)組
字元數(shù)組和字串第六章數(shù)組一維數(shù)組的定義和引用 定義:類(lèi)型說(shuō)明符數(shù)組名[常量運(yùn)算式]; 例:intage[10];
floata[10],f,b[20]; 說(shuō)明:不允許動(dòng)態(tài)定義數(shù)組。 如:inti;i=15;intdata[i]; 引用:數(shù)組名[下標(biāo)運(yùn)算式]
例:a[0]=10;a[5]=2*a[0]; 說(shuō)明:下標(biāo)從0開(kāi)始,不允許一次引用整個(gè)數(shù)組,只能逐個(gè)引用每個(gè)數(shù)組元素。一維數(shù)組元素的初始化
staticinta[5]={1,2,3,4,5}; staticintdata[5]={5,4,3}; staticintdata[5]; staticintdata[]={1,2,3,4,5};第六章數(shù)組6.1一維數(shù)組舉例#include"stdio.h"voidmain(){ inti;
staticintx[]={10,8,7,6,5}; staticinty[]={-3,9,-10,-2,4}; intz[5]; for(i=0;i<5;i++) z[i]=x[i]+y[i]; for(i=0;i<5;i++) printf("%d\n",z[i]);}第六章數(shù)組6.1一維數(shù)組二維數(shù)組的定義和引用 定義:類(lèi)型說(shuō)明符數(shù)組名[常量運(yùn)算式][常量運(yùn)算式]; 例:int x[3][2];
float a[2][3],f,b[20]; 說(shuō)明:數(shù)組元素的排列順序按行進(jìn)行。 引用:數(shù)組名[下標(biāo)運(yùn)算式][下標(biāo)運(yùn)算式]
例:a[0][1]=10;a[1][1]=2*a[0][1]; 說(shuō)明:每個(gè)下標(biāo)從0開(kāi)始,不允許一次引用整個(gè)數(shù)組,只能逐個(gè)引用每個(gè)數(shù)組元素。一維數(shù)組元素的初始化
staticinta[3][2]={1,2,3,4,5,6}; staticintdata[2][3]={5,4,3}; staticintdata[3][2]={{1},{2},{3}}; staticintdata[][2]={{1},{2,3},{4}};第六章數(shù)組6.2二維數(shù)組舉例#include"stdio.h"voidmain(){ intyear,month,day,days,i,leap; staticintmtable[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; printf("inputyear,month,day:"); scanf("%d%d%d",&year,&month,&day); leap=0; if(year%4==0&&year%100!=0||year%400==0) leap=1; days=day; for(i=1;i<month;i++) days+=mtable[leap][i]; printf("Days=%d",days);}第六章數(shù)組6.2二維數(shù)組字元數(shù)組
一維數(shù)組定義: char數(shù)組名[常量運(yùn)算式];
二維數(shù)組定義: char數(shù)組名[常量運(yùn)算式][常量運(yùn)算式];
字元數(shù)組元素的引用: c[5]=‘B’;ch[1][2]=‘k’;
字元數(shù)組初始化: staticcharch[5]={‘G’,’O’,’O’,’D’,’!’}
說(shuō)明:初值個(gè)數(shù)可以少於數(shù)組元素的個(gè)數(shù),不可多於。
第六章數(shù)組6.3字元數(shù)組和字串字元數(shù)組舉例#include"stdio.h"voidmain(){
staticchartext[]={'h','e','l','l','o'}; charbuff[5]; inti,flag; for(i=0;i<5;i++) buff[i]=getchar(); flag=0; for(i=0;i<5;i++) if(buff[i]!=text[i]) {flag=1; break;} if(flag) printf("Thiswordisnothello"); else printf("Thiswordishello");}第六章數(shù)組6.3字元數(shù)組和字串字串字串及其結(jié)束標(biāo)誌 字串是用雙引號(hào)括起來(lái)的字元序列。 字串利用字元數(shù)組存放。 字串結(jié)束標(biāo)誌:‘\0’
字串常量初始化數(shù)組: staticcharstr[]={“Happy”};
或:staticcharstr[]=“Happy”;字串的輸入和輸出 “%c”格式符:每次輸入或輸出一個(gè)字元。 “%s”格式符:每次輸入或輸出一個(gè)字串。第六章數(shù)組6.3字元數(shù)組和字串字串輸入輸出舉例#include"stdio.h"voidmain(){ charstr[10]; inti; printf("Inputastring:"); scanf("%s",str); i=0; while(str[i]!='\0') { printf("%c",str[i]); i++; }}第六章數(shù)組6.3字元數(shù)組和字串常用的字串處理函數(shù)
輸入字串函數(shù)
輸出字串函數(shù)
字串比較函數(shù)
字串拷貝函數(shù)
字串連接函數(shù)
字串測(cè)試長(zhǎng)度函數(shù)第六章數(shù)組6.3字元數(shù)組和字串輸入字串函數(shù)格式:gets(字元數(shù)組名)功能:輸入一個(gè)字串。說(shuō)明:
1.要用#include命令將“stdio.h”頭檔包含到檔中。
2.返回字元數(shù)組的首地址。例:charp[20];
……gets(p);第六章數(shù)組輸入字串函數(shù)舉例#include"stdio.h"main(){ charp[20]; gets(p); printf("%s\n",p);}第六章數(shù)組輸出字串函數(shù)格式:puts(字元數(shù)組名)功能:輸出以‘\0’結(jié)尾的字串。說(shuō)明: 要用#include命令將“stdio.h”頭檔包含到檔中。 例: charp[20];
…… puts(p);第六章數(shù)組輸出字串函數(shù)舉例#include"stdio.h"main(){ charp[20]; gets(p); puts(p);}第六章數(shù)組字串比較函數(shù)格式:strcmp(字串1,字串2)功能:比較兩個(gè)字串。說(shuō)明: R<0字串1<字串2 R=0字串1=字串2 R>0字串1>字串2例: intR; R=strcmp(“Good”,”Happy”)第六章數(shù)組字串比較函數(shù)舉例#include"stdio.h"#include"string.h"voidmain(){ charstr1[]={"abcde"},p[20]; intr; gets(p); r=strcmp(str1,p); printf("%d",r);}第六章數(shù)組字串拷貝函數(shù)格式: strcpy(字元數(shù)組1,字元數(shù)組2)功能:
將字元數(shù)組2(以‘\0’結(jié)尾)拷貝到字元數(shù)組1中。例: staticcharstr2[]=“string” charstr1[7];
…… strcpy(str1,str2);第六章數(shù)組字串拷貝函數(shù)舉例#include"stdio.h"#include"string.h"voidmain(){ charstr1[20],p[20]; gets(p); strcpy(str1,p); printf("%s\n",str1);}第六章數(shù)組字串連接函數(shù)格式:strcat(字串1,字串2)功能:連接兩個(gè)以‘\0’結(jié)尾的字串。說(shuō)明: 字元數(shù)組1必須足夠長(zhǎng),以便容納字串2。例: staticcharstr1[20]=“Happy”staticcharstr2[10]=“NewYear” ……strcat(str1,str2);第六章數(shù)組字串連接函數(shù)舉例#include"stdio.h"#include"string.h"voidmain(){ charp1[]="abcde",p2[]="12345"; strcat(p1,p2); printf("%s\n",p1);}第六章數(shù)組字串測(cè)試長(zhǎng)度函數(shù)格式:strlen(字串)功能:測(cè)試字串長(zhǎng)度(不包括‘\0’)。例: strlencharstr[10]={“China”};printf(“%d”,strlen(str));第六章數(shù)組字串測(cè)試長(zhǎng)度函數(shù)舉例#include"stdio.h"#include"string.h"voidmain(){ charp1[]="abcde"; inti,j; i=strlen(p1); j=strlen("1234567890"); printf("%d,%d\n",i,j);}第六章數(shù)組本章小結(jié):
本章主要介紹了C語(yǔ)言一維數(shù)組、二維數(shù)組和字元數(shù)組的定義、引用及其初始化方法;闡述了數(shù)組的應(yīng)用方法,並介紹了跟數(shù)組相關(guān)的常用的字串處理函數(shù)的用法。第六章數(shù)組第七章函數(shù)
主要內(nèi)容:
函數(shù)的概念和定義函數(shù)的常用調(diào)用方法函數(shù)的參數(shù)傳遞方式函數(shù)變數(shù)的作用域函數(shù)的作用域本章授課理論課:
6學(xué)時(shí)實(shí)踐課:6學(xué)時(shí)教學(xué)目的及要求:
通過(guò)對(duì)本章的學(xué)習(xí),要求掌握構(gòu)成C語(yǔ)言程式模組的單元--函數(shù)的特點(diǎn)及其定義和調(diào)用的方法;初步認(rèn)識(shí)C語(yǔ)言變數(shù)的作用範(fàn)圍,區(qū)分函數(shù)的作用域。第七章函數(shù)本章重點(diǎn):
函數(shù)的定義
函數(shù)的調(diào)用方法函數(shù)的參數(shù)傳遞方式函數(shù)的作用域函數(shù)變數(shù)的作用域本章難點(diǎn):
函數(shù)的調(diào)用方法及其參數(shù)傳遞方式第七章函數(shù)
函數(shù)的概念
函數(shù)的定義和調(diào)用
函數(shù)的返回值及其類(lèi)型
函數(shù)的參數(shù)及其傳遞方式
函數(shù)的嵌套調(diào)用和遞歸調(diào)用
變數(shù)的作用域及存儲(chǔ)類(lèi)型
內(nèi)部函數(shù)和外部函數(shù)第七章函數(shù)和變數(shù)一個(gè)C程式由一個(gè)或多個(gè)函數(shù)組成,必須有且僅有一個(gè)主函數(shù)(main())。函數(shù)之間沒(méi)有從屬關(guān)係。函數(shù)通過(guò)調(diào)用執(zhí)行,從main函數(shù)開(kāi)始,main函數(shù)可以調(diào)用任何一個(gè)函數(shù),其他函數(shù)不能調(diào)用main函數(shù)。函數(shù)包括:標(biāo)準(zhǔn)庫(kù)函數(shù)和用戶自定義函數(shù)。第七章函數(shù)和變數(shù)7.1函數(shù)的概念函數(shù)的定義格式:類(lèi)型說(shuō)明符函數(shù)名(形參表)形參類(lèi)型說(shuō)明
{
說(shuō)明部分語(yǔ)句部分(函數(shù)體部分)
}函數(shù)的調(diào)用格式:函數(shù)名(實(shí)參表);例第七章函數(shù)和變數(shù)7.2函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用舉例#include"stdio.h"intmax(inta,intb){inti;i=(a>b)?a:b;return(i);}main(){intx=10,y=20,temp;
temp=max(x,y);printf("Themaxis%d\n",temp);system("pause");}第七章函數(shù)和變數(shù)7.2函數(shù)的定義和調(diào)用返回語(yǔ)句 格式: return[(運(yùn)算式)]; 或: return[運(yùn)算式];返回值類(lèi)型
C語(yǔ)言規(guī)定第七章函數(shù)和變數(shù)7.3函數(shù)返回值與類(lèi)型C語(yǔ)言規(guī)定在調(diào)用函數(shù)中,通常應(yīng)對(duì)被調(diào)用函數(shù)的返回值類(lèi)型進(jìn)行說(shuō)明例: main()
{ floatcount();
floats;
…… s=count(20);
…… }第七章函數(shù)和變數(shù)7.3函數(shù)返回值與類(lèi)型當(dāng)被調(diào)用函數(shù)的定義位於調(diào)用函數(shù)之前時(shí)可不必說(shuō)明例: floatcount(n)
intn;
{ floats;
…… return(s);
} main()
{ floats;
…… s=count(10);
…… }第七章函數(shù)和變數(shù)7.3函數(shù)返回值與類(lèi)型允許在所有函數(shù)的外面、檔的開(kāi)頭對(duì)函數(shù)的類(lèi)型進(jìn)行說(shuō)明,而在調(diào)用函數(shù)中便可以不對(duì)被調(diào)用函數(shù)的類(lèi)型進(jìn)行說(shuō)明。例: floatcount();
main()
{ floats;
…… s=count(10);
…… }
floatcount(n)
intn;
{ floats;
…… return(s);
}第七章函數(shù)和變數(shù)7.3函數(shù)返回值與類(lèi)型當(dāng)函數(shù)的返回值為int型時(shí),在函數(shù)定義時(shí),返回值的類(lèi)型說(shuō)明可以省略。當(dāng)函數(shù)沒(méi)有返回值時(shí),函數(shù)的返回值類(lèi)型可說(shuō)明為void型。例: #include"stdio.h" voidabc() { printf("good!"); } main() { abc(); }第七章函數(shù)和變數(shù)7.3函數(shù)返回值與類(lèi)型函數(shù)返回值類(lèi)型一般應(yīng)與return語(yǔ)句中的運(yùn)算式的值的類(lèi)型一致,若不同,則以函數(shù)定義時(shí)的返回值類(lèi)型說(shuō)明為準(zhǔn)。允許在沒(méi)有返回值的函數(shù)中使用return語(yǔ)句,以結(jié)束函數(shù)的執(zhí)行,返回主調(diào)函數(shù)。
格式:return第七章函數(shù)和變數(shù)7.3函數(shù)返回值與類(lèi)型實(shí)參和形參
實(shí)參:函數(shù)調(diào)用時(shí),函數(shù)名後面的參數(shù) 形參:函數(shù)定義時(shí),函數(shù)名後面的參數(shù)。一般變數(shù)(包括數(shù)組元素)作函數(shù)參數(shù)
實(shí)參—>形參 (單向)值傳遞 形參值改變不影響實(shí)參。數(shù)組名作函數(shù)參數(shù)
實(shí)參和形參共占一段存儲(chǔ)單元 (雙向)地址傳遞 形參值的改變將影響實(shí)參。第七章函數(shù)和變數(shù)7.4參數(shù)及傳遞方式一般變數(shù)(包括數(shù)組元素)作函數(shù)參數(shù)#include"stdio.h"intmult10(intn){ n*=10; return(n);}main(){ intnum; intresult; num=5; result=mult10(num); printf("result=%d\n",result); printf("num=%d\n",num);}第七章函數(shù)和變數(shù)7.4參數(shù)及傳遞方式數(shù)組名作函數(shù)參數(shù)#include"stdio.h"voidADD1(inta[],intn){ inti; for(i=0;i<n;i++) a[i]++;}main(){ staticintarray[]={0,1,2,3,4,5,6,7,8,9}; inti; ADD1(array,10); for(i=0;i<10;i++) printf("%d",array[i]);}第七章函數(shù)和變數(shù)7.4參數(shù)及傳遞方式函數(shù)的嵌套調(diào)用 即一個(gè)函數(shù)可以被其他函數(shù)調(diào)用,也可調(diào)用其他函數(shù)。函數(shù)的遞歸調(diào)用
直接遞歸調(diào)用: 一個(gè)函數(shù)可直接調(diào)用該函數(shù)本身。
間接遞歸調(diào)用: 一個(gè)函數(shù)可間接調(diào)用該函數(shù)本身。第七章函數(shù)和變數(shù)7.5嵌套和遞歸調(diào)用函數(shù)的嵌套調(diào)用#include"stdio.h"intSADD(intn){ inti,sum=0; for(i=1;i<=n;i++) sum+=i; return(sum);}intsmul(intn){ intm,d;
m=SADD(n); d=2*m-1; eturn(d);}main(){ inti,n,d; intflag; printf("Inputanumber:"); scanf("%d",&n);
d=smul(n); flag=0; for(i=0;i<n;i++) { printf("%d",d); d-=2; flag++; if(flag==5) { printf("\n");flag=0; } }}第七章函數(shù)和變數(shù)7.5嵌套和遞歸調(diào)用直接遞歸調(diào)用floatfunc(n)intn;{ intm;
floatf;
…… f=func(m);
……}第七章函數(shù)和變數(shù)7.5嵌套和遞歸調(diào)用間接遞歸調(diào)用func1(n)intn;{ intm;
…… func2(m);
……}func2(x)intx;{ int
y;
…… func1(y);
……}第七章函數(shù)和變數(shù)7.5嵌套和遞歸調(diào)用函數(shù)的遞歸調(diào)用#include"stdio.h"main(){ intn; longintresult; longintfact(int); while(1) { printf("Inputanumber:"); scanf("%d",&n); if(n>=0) break; } result=fact(n); printf("Result=%ld",result);}longintfact(intn){ longintf; if(n==0) f=1; else f=n*fact(n-1); return(f);}第七章函數(shù)和變數(shù)7.5嵌套和遞歸調(diào)用
一般概念
局部變數(shù)及存儲(chǔ)類(lèi)型
全局變數(shù)及存儲(chǔ)類(lèi)型第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型一般概念C語(yǔ)言所占存儲(chǔ)空間分為: 程式區(qū):存放可執(zhí)行的程式的機(jī)器指令。 靜態(tài)存儲(chǔ)區(qū):存放需佔(zhàn)用固定存儲(chǔ)單元的變數(shù)。 動(dòng)態(tài)存儲(chǔ)區(qū):存放不需佔(zhàn)用固定存儲(chǔ)單元的變數(shù)。變數(shù)的定義包含三個(gè)方面: 變數(shù)的數(shù)據(jù)類(lèi)型 變數(shù)的作用域:一個(gè)變數(shù)能夠起作用的程式範(fàn)圍。 變數(shù)的存儲(chǔ)類(lèi)型:變數(shù)在內(nèi)存中的存儲(chǔ)方法。第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型局部變數(shù)及存儲(chǔ)類(lèi)型局部變數(shù): 在函數(shù)內(nèi)部定義的變數(shù)。局部變數(shù)的作用域:僅限於定義它的函數(shù)。局部變數(shù)的三種存儲(chǔ)類(lèi)型:
自動(dòng)類(lèi)(auto)
靜態(tài)類(lèi)(static)
寄存器類(lèi)(register)第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型自動(dòng)類(lèi)(auto)變數(shù)
在函數(shù)內(nèi)部定義的,沒(méi)有指定其他存儲(chǔ)類(lèi)型的變數(shù)。格式:[auto]類(lèi)型說(shuō)明符變數(shù)表在動(dòng)態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,函數(shù)調(diào)用結(jié)束時(shí),其中的數(shù)據(jù)被釋放,每調(diào)用一次函數(shù)都需重新賦初值一次。#include"stdio.h"voidtest_auto(){ intva=0; printf("auto=%d\n",va); ++va;}main(){ inti; for(i=0;i<4;i++) test_auto();}第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型靜態(tài)類(lèi)(static)變數(shù)
在函數(shù)內(nèi)用static定義的變數(shù)。格式:static類(lèi)型說(shuō)明符變數(shù)表在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,函數(shù)調(diào)用結(jié)束後其中數(shù)據(jù)並不釋放。#include"stdio.h"voidtest_static(){
staticintvs=0; printf("static=%d\n",vs); ++vs;}main(){ inti; for(i=0;i<4;i++) test_static();}第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型寄存器類(lèi)(register)變數(shù)用寄存器存放值的變數(shù)。格式:
register類(lèi)型說(shuō)明符變數(shù)表能被說(shuō)明為寄存器類(lèi)變數(shù)的數(shù)據(jù)類(lèi)型只有char、shortint、unsignedint、int和指針類(lèi)型。第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型全局變數(shù)及存儲(chǔ)類(lèi)型全局變數(shù):
在函數(shù)外定義的變數(shù)。作用域:
從定義位置開(kāi)始到本源檔結(jié)束。所有全局變數(shù)都在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元。默認(rèn)初值為0。全局變數(shù)的兩種存儲(chǔ)類(lèi)型:
外部的(extern)
靜態(tài)的(static)第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型外部變數(shù)
沒(méi)有說(shuō)明為static的全局變數(shù)稱(chēng)外部變數(shù)。一個(gè)C語(yǔ)言程式可由多個(gè)原始檔案組成,如果一個(gè)檔要引用另一個(gè)檔中定義的外部變數(shù),需用extern關(guān)鍵字說(shuō)明,一般應(yīng)在檔的開(kāi)頭且位於所有函數(shù)的外面。如在同一個(gè)檔中的全局變數(shù)的定義位於使用它的函數(shù)後面,可在要使用該全局變數(shù)的函數(shù)中,用extern說(shuō)明,再使用它(見(jiàn)例)。格式:
extern數(shù)據(jù)類(lèi)型變數(shù)名檔f1.c的內(nèi)容:#include"stdio.h"intx;main(){ intsum,y; scanf("%d",&y); store(); sum=x+y; printf("sum=%d",sum);}檔f2.c的內(nèi)容:externintx;voidstore(){ x=10;}第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型例#include"stdio.h"main(){
externintx,y; intm; scanf("%d%d",&x,&y); m=(x<y)?x:y; printf("Min=%d",m);}
intx,y;第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型靜態(tài)(static)外部變數(shù)
若希望在一個(gè)檔中定義的全局變數(shù)的作用域僅限於此檔中,則可在定義全局變數(shù)的類(lèi)型說(shuō)明符的前面使用static關(guān)鍵字。格式:
static類(lèi)型說(shuō)明符變數(shù)名作用域:從定義位置開(kāi)始到該檔結(jié)束。file1.cstaticinta;main(){……}file2.cexterninta;fun(n)intn;{ …… a=a*n; ……}第七章函數(shù)和變數(shù)7.6變數(shù)作用域及存儲(chǔ)類(lèi)型
內(nèi)部函數(shù)只能在定義它的檔中被調(diào)用,不能被其他檔中的函數(shù)所調(diào)用。定義格式:
static類(lèi)型說(shuō)明符函數(shù)名(參數(shù)表)
外部函數(shù)可以被其他檔中的函數(shù)所調(diào)用??稍诙x和調(diào)用函數(shù)時(shí)使用extern說(shuō)明。定義函數(shù)時(shí)extern可以省略。第七章函數(shù)和變數(shù)7.7內(nèi)部函數(shù)和外部函數(shù)外部函數(shù)file1.cmain(){
externvoidinput(); charbuff[100]; ...... input(buff); ......}file2.cexternvoidinput(b)charb[100];{ ......}第七章函數(shù)和變數(shù)7.7內(nèi)部函數(shù)和外部函數(shù)本章小結(jié):
本章系統(tǒng)介紹了函數(shù)的特點(diǎn)及其定義和調(diào)用的方法;簡(jiǎn)單介紹了C語(yǔ)言變數(shù)的作用域和函數(shù)的作用域。第七章函數(shù)第八章結(jié)構(gòu)和聯(lián)合
主要內(nèi)容:
結(jié)構(gòu)體的定義、引用及其初始化結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體的嵌套聯(lián)合枚舉本章授課理論課:
4學(xué)時(shí)實(shí)踐課:4學(xué)時(shí)教學(xué)目的及要求:
通過(guò)對(duì)本章的學(xué)習(xí),要求掌握C語(yǔ)言結(jié)構(gòu)體的特點(diǎn)及其定義、引用和初始化方法;在此基礎(chǔ)上,初步認(rèn)識(shí)結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體的嵌套方法;瞭解聯(lián)合和枚舉的定義、引用的方法。第八章結(jié)構(gòu)和聯(lián)合本章重點(diǎn):
結(jié)構(gòu)體的定義、引用和初始化
結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體的嵌套聯(lián)合的定義、引用枚舉的定義、引用本章難點(diǎn):
結(jié)構(gòu)體數(shù)組的定義和引用第八章結(jié)構(gòu)和聯(lián)合結(jié)構(gòu)類(lèi)型變數(shù)的定義結(jié)構(gòu)類(lèi)型變數(shù)的引用結(jié)構(gòu)的初始化結(jié)構(gòu)和函數(shù)結(jié)構(gòu)和數(shù)組結(jié)構(gòu)的嵌套聯(lián)合枚舉第八章結(jié)構(gòu)和聯(lián)合先定義結(jié)構(gòu)類(lèi)型,再定義結(jié)構(gòu)變數(shù)在定義結(jié)構(gòu)類(lèi)型的同時(shí)定義結(jié)構(gòu)變數(shù)直接定義結(jié)構(gòu)變數(shù)定義結(jié)構(gòu)類(lèi)型名8.1
結(jié)構(gòu)類(lèi)型變數(shù)的定義第八章結(jié)構(gòu)和聯(lián)合先定義結(jié)構(gòu)類(lèi)型,再定義結(jié)構(gòu)變數(shù)定義結(jié)構(gòu)格式:
struct結(jié)構(gòu)名
{
成員表
};定義結(jié)構(gòu)變數(shù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《直接能源ATP》課件
- 幼兒園工作總結(jié)笑容滿園
- 探索學(xué)術(shù)之路
- 公司人員述職報(bào)告匯編9篇
- 幼兒園工作總結(jié)傳遞溫暖收獲微笑
- 2023-2024年項(xiàng)目部安全培訓(xùn)考試題含答案(培優(yōu)B卷)
- 2023年項(xiàng)目管理人員安全培訓(xùn)考試題附答案(研優(yōu)卷)
- 《電廠職業(yè)病防治》課件
- 激發(fā)學(xué)習(xí)動(dòng)力教學(xué)策略報(bào)告
- 中醫(yī)理療師年度總結(jié)
- 體檢營(yíng)銷(xiāo)話術(shù)與技巧培訓(xùn)
- TSG 07-2019電梯安裝修理維護(hù)質(zhì)量保證手冊(cè)程序文件制度文件表單一整套
- 養(yǎng)殖場(chǎng)巡查制度模板
- 2023-2024學(xué)年浙江省杭州市西湖區(qū)五年級(jí)(上)期末數(shù)學(xué)試卷
- 建設(shè)工程造價(jià)案例分析-形成性考核2(占形考總分25%)-國(guó)開(kāi)(SC)-參考資料
- 《期貨市場(chǎng)發(fā)展之》課件
- 酒店旅游業(yè)OTA平臺(tái)整合營(yíng)銷(xiāo)推廣策略
- 淋巴水腫康復(fù)治療技術(shù)
- 2024年國(guó)家公務(wù)員考試《申論》真題(副省級(jí))及參考答案
- 零星維修工程 投標(biāo)方案(技術(shù)方案)
- 10KV電力配電工程施工方案
評(píng)論
0/150
提交評(píng)論