C語言課程教案(比較規(guī)范)_第1頁
C語言課程教案(比較規(guī)范)_第2頁
C語言課程教案(比較規(guī)范)_第3頁
C語言課程教案(比較規(guī)范)_第4頁
C語言課程教案(比較規(guī)范)_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言課程教案詳解

章節(jié)題目:

第一章C語言概述

教學(xué)時間:

4學(xué)時

教學(xué)目的:

1、了解C語言的產(chǎn)生過程

2、掌握C程序結(jié)構(gòu)

3、掌握C程序開發(fā)過程

4、掌握用TURBOC運(yùn)行一個C程序。

內(nèi)容、重點(diǎn)、難點(diǎn):

內(nèi)容:

1.1C語言的歷史和特色

1.2C程序結(jié)構(gòu)

1.3C程序的開發(fā)過程

重點(diǎn):

1、掌握C程序的基本結(jié)構(gòu)構(gòu)成

2、學(xué)會用TurboC運(yùn)行一個C程序

難點(diǎn):

掌握C程序的開發(fā)過程

第1章C語言概述

C語言是國際上廣泛流行的一門高級程序設(shè)計語言,具有語言簡潔、使用方便靈活、移植性

好、能直接對系統(tǒng)硬件和外圍接口進(jìn)行控制等特點(diǎn)。本章將簡要地介紹它的產(chǎn)生過程和特點(diǎn)、

C程序結(jié)構(gòu)及C程序的上機(jī)步驟,以便對C語言有一個概括的認(rèn)識。

1.1c語言的歷史和特色

一、歷史

1、1960年出現(xiàn)了ALGOL60。

2、1963年和1967年,在ALGOL60的基礎(chǔ)上推出了CPL和BCPL語言更接近于硬件。

3、1970年美國貝爾實(shí)驗(yàn)室對BCPL語言做了進(jìn)一步簡化,設(shè)計了B語言,并用B語言編

寫了第一個UNIX操作系統(tǒng)。

4、在1972年至1973年間,貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計出C語言。

二、特色

1、簡潔緊湊,使用方便靈活

C語言一共只有32個關(guān)鍵字、9種控制語句,程序書寫自由,壓縮了一切不必要的成分,

語言簡練。

2、運(yùn)算符豐富

C語言有34種運(yùn)算符和15個等級的運(yùn)算優(yōu)先順序,使表達(dá)式類型多樣化,可以實(shí)現(xiàn)在其它

語言中難以實(shí)現(xiàn)的運(yùn)算。

3、數(shù)據(jù)類型豐富

C語言的數(shù)據(jù)類型有整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、聯(lián)合體類型

及枚舉類型等,能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算.

4、模塊化結(jié)構(gòu)

C語言用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化,而且便于模塊間相互調(diào)用及傳

遞數(shù)據(jù)。

5、語法限制少和程序設(shè)計自由度大

C語言允許程序編寫者有較大的自由度,放寬了以往高級語言嚴(yán)格的語法檢查,較好地處理

了“限制”與“靈活”這一對矛盾。

6、比較接近硬件

C語言允許直接訪問物理地址,能進(jìn)行位操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對

硬件進(jìn)行操作。

7、生成目標(biāo)代碼質(zhì)量高、程序執(zhí)行效率高

一般只比匯編程序生成的目標(biāo)代碼效率低10%—20%。

8、可移植性好

基本上不做修改就能用于各種型號的計算機(jī)和各種操作系統(tǒng)。

1.2C程序結(jié)構(gòu)

下面列出幾個簡單的C程序來說明C程序的結(jié)構(gòu)特征。

例1.1輸出一行信息。

main()

(

printf("ThisisfirstCprogramme!\n");

)

該程序的作用是輸出一行信息:ThisisfirstCprogramme!

main表示“主函數(shù)”;

函數(shù)體用大括號{}括起來。本例題中主函數(shù)僅包含一個語句,該語句由printf()輸出函數(shù)構(gòu)

成。括號內(nèi)雙引號中的字符串按原樣輸出;

'\n'是換行符,即在輸出"ThisisfirstCprogramme!”后回車換行;

語句后面有一個分號,表示該語句結(jié)束,這個分號必不可少。

例1.2計算兩個數(shù)之和。

main()/*求兩個數(shù)之和*/

(

inta,b,sum;/*定義3個整型變量*/

a=123;/*以下3行為C語句*/

b=321;

sum=a+b;

printf("sumis%d\n",sum);

)

該程序的作用是求兩個整數(shù)a和b之和sum,并在屏幕上輸出sum。程序中,/*……*/表

示注釋部分,對編譯和運(yùn)行不起作用。第3行是變量說明,使用的a、b和sum為整型(int)

變量。第4行是兩個賺值語句,使a的值為123,b為321。第5行使sum的值為a+b,第6

行的%d是輸入輸出的“格式說明”,表示“十進(jìn)制整數(shù)類型“,printf函數(shù)中括號內(nèi)最右端

的sum是要輸出的變量,當(dāng)然它的值為444。

例1.3比較兩個數(shù)的大小。

main()/*主函數(shù),功能輸入兩個整數(shù),判斷后輸出較大的數(shù)*/

(

inta,b,c;/*定義3個整型變量*/

scanf("%d,%d",&a,&b);/*輸入變量a和b的值*/

c=max(a,b);

printf("max=%d\n",c);/*輸出c的值*/

intmax(intx,inty)

/*定義max()函數(shù),函數(shù)值為整型,x,y為形式參數(shù)、整形變量*/

(

intz;

/*定義main()函數(shù)內(nèi)部用到的變量z為整數(shù)*/

if(x>y)

z=x;/*將x,y中較大的值賦給z*/

else

z=y;

return(z);

/*將z值返回。通過max()函數(shù)帶回調(diào)用處*/

)

該程序的作用是從鍵盤輸入兩個整數(shù),然后在屏幕上輸出它們中較大值的數(shù)。

程序的第5行是調(diào)用max()函數(shù),在調(diào)用過程中將實(shí)際參數(shù)a和b的值,分別傳遞給max。

函數(shù)中的形式參數(shù)x和y,然后得到一個返回值(z的值),并把這個值賦給變量c。

運(yùn)行情況如下:

2,8/

max=8

從以上幾個例題,可以看到C程序的結(jié)構(gòu)特征。

1.C程序是由函數(shù)構(gòu)成的。

一個C程序至少有一個main()函數(shù),也可以包含一個main()函數(shù)和若干個其它函數(shù)。

2.一個函數(shù)有兩部分構(gòu)成。

函數(shù)說明部分,即函數(shù)的第一行,包括函數(shù)類型、函數(shù)名、形參類型、形參名。

函數(shù)體,由一對大括號{}括起來的語句集合。函數(shù)體一般包括有聲明部分和執(zhí)行部分。聲明

部分用于定義所用到的變量。執(zhí)行部分由若干語句組成。

3.一個C程序總是從main。函數(shù)開始執(zhí)行,而不管main()在源程序中的位置,執(zhí)行完主函

數(shù)中的所有語句后,程序就結(jié)束。

4.每個語句和變量定義的最后必須要有一個分號,分號是C語句的必要組成部分。

5.C語言本身沒有提供輸入和輸出語句,輸入輸出操作是通過庫函數(shù)scanf()、printf()等函

數(shù)來實(shí)現(xiàn)的。

6.C語言用/*……*/對程序進(jìn)行注釋,/和*之間不允許留有空格,/*和*/應(yīng)當(dāng)一一對應(yīng)匹配,

注釋部分允許出現(xiàn)在程序中的任何位置上。程序中加一些注釋,可以增加程序的可讀性。

1.3C程序的開發(fā)過程

用C語句編寫的程序稱為“源程序”。

1.C程序開發(fā)的4個基本步驟

一般C程序開發(fā)要經(jīng)歷4個基本步驟:

編輯一一編譯一一連接一一運(yùn)行

(1)編輯

使用字處理軟件或編輯工具將源程序以文本文件形式保存到磁盤,源程序文件名由用戶自己

選定,但擴(kuò)展名必須為“.c"。

(2)編譯

編譯的功能就是調(diào)用“編譯程序”,將已編輯好的源程序翻譯成二進(jìn)制的目標(biāo)代碼。如果源

程序沒有語法錯誤將產(chǎn)生一個與源程序同名,以”.obj”為擴(kuò)展名的目標(biāo)程序。

(3)連接

編譯后產(chǎn)生的目標(biāo)程序往往形成多個模塊,還要和庫函數(shù)進(jìn)行連接才能運(yùn)行,連接過程是使

用系統(tǒng)提供的“連接程序”運(yùn)行的。連接后,產(chǎn)生以".exe”為擴(kuò)展名的可執(zhí)行程序。

(4)運(yùn)行

可執(zhí)行程序生成后,就可以在操作系統(tǒng)的支持下運(yùn)行,若執(zhí)行結(jié)果達(dá)到預(yù)期的目的,則開發(fā)

工作到此完成,否則,要進(jìn)一步地經(jīng)過以上過程以取得最終的正確結(jié)果。

2.使用TurboC開發(fā)程序的方法

現(xiàn)在,多數(shù)的C程序開發(fā)使用一個集成TurboC開發(fā)工具來完成。下面簡單介紹使用Turbo

C開發(fā)程序的方法。

(1)TurboC的目錄及文件

TurboC應(yīng)裝入磁盤的某一目錄下,例如,放在c盤的根目錄下一級TC子目錄下,TurboC

安裝完成后,磁盤上將增加以下目錄及文件:

TC子目錄(c:\tc):其中包括tc.exe、tcc.exe、make.exe等執(zhí)行文件。

INCLUDE子目錄(c:\tc\include):其中包括stdio.h、string.h、math.h等頭文件。

Lib子目錄(c:\tc\lib):其中包括graphlicsJib、math.lib、math1.lib等庫函數(shù)文件。

BGI子目錄(c:\tc|bgi):其中包括tc運(yùn)行時所需的信息。

通過執(zhí)行tc.exe命令就可以進(jìn)入TurboC環(huán)境,如果用戶的當(dāng)前目錄是TurboC所在的子目

錄tc,則只需從鍵盤輸入“tc”命令即可.

C:\tOtc/

(2)TurboC集成環(huán)境作簡單介紹,它包括以下幾個方面的內(nèi)容:

主菜單窗口

編輯窗口

信息窗口

功能鍵提示行

3.用TurboC運(yùn)行第一個C程序

下面介紹使用TurboC編輯和運(yùn)行一個簡單的C程序的操作步驟:

(1)編輯或修改源程序。

在編輯窗口鍵入一下源程序:

main()

(

printf("ThisismyfirstCprogram");

)

然后執(zhí)行“File/save”命令;或按“F2”鍵存盤。

(2)編譯與連接源程序。

執(zhí)行“compile/makeexeflle”命令或直接按下F9鍵,即可一次完成編譯與連接。

(3)運(yùn)行程序.

按“F10”鍵返回主菜單,用光標(biāo)移動鍵將亮條移到“Run”菜單選項(xiàng)回車或按下“Ctrl+F9”

鍵,即可運(yùn)行剛生成的可執(zhí)行文件。此時TurboC工作窗口消失,屏幕上顯示程序運(yùn)行結(jié)

果:

ThisismyfirstCprogram

若發(fā)現(xiàn)運(yùn)行結(jié)果不對,可再按“F10”鍵回工作窗口,重復(fù)上述步驟。

(4)運(yùn)行程序后查看程序的運(yùn)行結(jié)果。

(5)退出TurboC,按“Alt+X”鍵,系統(tǒng)即退出Turbo環(huán)境。

本章小結(jié)

本章對C語言進(jìn)行了總體介紹,對學(xué)生的要求是掌握基本概念,學(xué)習(xí)的過程要緊密結(jié)合本

章的知識要點(diǎn):

1.程序的構(gòu)成,main。函數(shù)和其他函數(shù)。

2.頭文件、數(shù)據(jù)說明、函數(shù)的開始和結(jié)束標(biāo)志。

3.源程序的書寫格式。

4.C語言的風(fēng)格。

作業(yè):

章節(jié)題目:

第二章順序結(jié)構(gòu)程序設(shè)計

教學(xué)時間:

6學(xué)時

教學(xué)目的:

1、掌握常量與變量的書寫和定義

2、掌握三種基本數(shù)據(jù)類型

3、掌握運(yùn)算符和表達(dá)式的使用

4、掌握順序結(jié)構(gòu)程序設(shè)計的方法

內(nèi)容、重點(diǎn)、難點(diǎn):

內(nèi)容:

2.1常量和變量

2.2整型數(shù)據(jù)

2.3實(shí)型數(shù)據(jù)

2.4字符型數(shù)據(jù)

2.5變量的初始化

2.6運(yùn)算符和表達(dá)式

重點(diǎn):

1、三種基本數(shù)據(jù)類型的定義和使用

2、各種運(yùn)算符的使用

難點(diǎn):

1、運(yùn)算符的使用

2、使用順序結(jié)構(gòu)編程

注:教案尾頁有小結(jié)和作業(yè)

第2章順序結(jié)構(gòu)程序設(shè)計

順序結(jié)構(gòu)是一組按書寫順序執(zhí)行的語句。本章將主要介紹程序中用到的一些基本要素(常量、

變量、運(yùn)算符、表達(dá)式和輸入輸出語句等),以及基本的數(shù)據(jù)類型(整型、實(shí)型和字符型)。

2.1常量和變量

一、常量

1、常量:在程序運(yùn)行的過程中,其值不能被改變的量。

如2、4、-1.6等。

2、分類:普通常量和符號常量

3、符號常量:用一個標(biāo)識符代表一個常量,這樣的標(biāo)識符稱為符號常量。如用PI代表

3.1415926

4、注意:符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。如在程序中,對PI重新

賦值:PI=2;這樣是不允許的。

二、變量

1、變量

C語言規(guī)定在程序運(yùn)行的過程中,其值可以改變的量,稱為變量。

2、標(biāo)識符:用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名和文件名的有效字符

序列。

3、C語言規(guī)定:標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字

母或下劃線。一般變量名的長度不能超過8個字符。

如下面是合法的標(biāo)識符,也是合法的變量名:

sum,average,day,month,student,_above,k_l_2_3?basic

下面是不合法的標(biāo)識符和變量名:

M.D.John,$123,#33,3D64,a>,-ab

在C語言中,要求對所有用到的變量作強(qiáng)制定義,也就是"先定義,后使用"。

2.2整型數(shù)據(jù)

一、整型常量

C語言整型常數(shù)可用以下三種形式表示:

1.十進(jìn)制整數(shù):數(shù)碼直接開頭的十進(jìn)制數(shù)。

2.八進(jìn)制整數(shù):以0開頭的常量是八進(jìn)制數(shù)。

3.十六進(jìn)制整數(shù):以O(shè)x開頭的數(shù)是16進(jìn)制數(shù)。

二、整型變量

1.整型變量的分類

整型變量可分為:基本型、短整型、長整型和無符號型四種,其定義的關(guān)鍵字如下:

(1)基本型,以int表示。范圍為-32768?32767,即-215?(215-1)?

(2)短整型,以shortint或short表示。范圍與基本型相同。

(3)長整型,以longint或long表示?若一個整型常量后面加上一個字母1或L,則認(rèn)為是

longint型常量。范圍為-2147483648?214783647即-231?(231-1)

(4)無符號型,在實(shí)際應(yīng)用中變量的值常常是正的,如年齡、工資、成績等,因此可以將

變量定義為"無符號"類型。

無符號型又分為:

①無符號整型,以unsignedint或unsigned表示。范圍:0~65535即0?(216-1)。

②無符號短整型,以unsignedshort表示。范圍:。?65535即0~(216-1)。

③無符號長整型,以unsignedlong表示。范圍:0?4294967295即0?(232-1)?

2.整型變量的定義

變量的定義格式為:數(shù)據(jù)類型變量表列;

其中若定義多個同類型的變量,則用逗號分開。

例:inta,b;(指定變量a,b為整型)

unsignedshortc,d;(指定變量c,d為無符號短整型)

longe,f;(指定變量e,f為長整型)

3.整型數(shù)據(jù)的輸入

整型變量鍵盤輸入,是通過scanf函數(shù)實(shí)現(xiàn)的,scanf函數(shù)是數(shù)據(jù)輸入函數(shù),格式為:

scanf(格式控制,地址表列);

例如:scanf("%d%d”,&a,&b);

(1)格式控制是用雙引號括起來的字符串,由"%"和格式字符組成,作用是將輸入數(shù)據(jù)

轉(zhuǎn)換為指定的格式輸入。

(2)格式字符,對于不同的數(shù)據(jù)用不同的格式字符。d格式符是用來輸入十進(jìn)制整數(shù)的。

因?yàn)楸竟?jié)問題中變量a,b是整型變量,所以輸入時,用了d格式符。

(3)&a,&b中的"&"是"地址運(yùn)算符”,&a是指a在內(nèi)存中的地址。上面scanf函數(shù)的

作用是:將a、b的值放到a,b在內(nèi)存的地址單元中去。所以,在該問題中,若輸入:35

則輸出結(jié)果為a+b=8

4.整型數(shù)據(jù)的輸出

整型數(shù)據(jù)的輸出用printf函數(shù)來實(shí)現(xiàn)。如printf("a+b=%d",c);

printf函數(shù)的格式為:

printf(格式控制,輸出表列);

(1)格式控制和輸入函數(shù)scanf的格式控制基本一致。

(2)輸出表列是需要輸出的數(shù)據(jù)或表達(dá)式。

(3)在輸出整型數(shù)據(jù)時,格式字符如下:

①%d,按整型數(shù)據(jù)的實(shí)際長度輸出。

②%md,m為輸出字段的寬度,如果輸出數(shù)據(jù)的位數(shù)小于m則左端補(bǔ)以空格,若大于m,

則按實(shí)際位數(shù)輸出。例如

printf("%4d,%4d",a,b);

若a=123,d=12345,則輸出結(jié)果為

V123,12345(注:V表示空格字符,下同)

③%ld,輸出長整型數(shù)據(jù)。如

longa=135790;

printf(,z%81d",a);

輸出結(jié)果為:VV135790

一個int型數(shù)據(jù)可以用%d或%Id格式輸出。

④%u,輸出unsigned型數(shù)據(jù),即無符號類型,如unsignedu;那么u在輸出的時候,應(yīng)該

用u格式控制符,那么輸出時應(yīng)使用語句:

printf("°/ou",u);

例2.1從鍵盤輸入任意一個整數(shù),輸出這個數(shù)的平方的值。

main()

{inta;

longs;

scanf(,z%d",&a);

s=a*a;

printf("s=%ld\n",s);}

2.3實(shí)型數(shù)據(jù)

一、實(shí)型常量

實(shí)數(shù)在C語言中,又稱浮點(diǎn)數(shù)。實(shí)數(shù)有兩種表示形式:

1.十進(jìn)制數(shù)形式。由數(shù)字和小數(shù)點(diǎn)組成(注意必須有小數(shù)點(diǎn))。

2.指數(shù)形式。但注意字母e(或E)之前必須有數(shù)字,且e后面指數(shù)必須為整數(shù),如e3、

2.1e3.5、.e3、e都不是合法的指數(shù)形式。

二、實(shí)型變量

在本節(jié)問題中,已知兩個數(shù)是實(shí)數(shù),那么兩數(shù)之和與積也必定為實(shí)數(shù),所以需要設(shè)四個

實(shí)型變量,分別為a,b,sum,mul。定義語句為:

floata,b,sum,mul;

C實(shí)型變量分為:

1.單精度型(float型)

一個float型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),在TURBOC中,

單精度實(shí)數(shù)的范圍約為一1038?1038之間并提供7位有效位;小于10-38

的數(shù)被處理成零值。

2.雙精度型(double型)

一個double型數(shù)據(jù)在內(nèi)存中占8個字節(jié),雙精度實(shí)數(shù)的數(shù)值范圍約為

-10308-10308,并提供15?16位有效位,具體精確多少位與機(jī)器有關(guān);小于10-308的數(shù)

被處理成零值。

三、實(shí)型數(shù)據(jù)的輸入和輸出

1.實(shí)型數(shù)據(jù)的輸入

實(shí)型數(shù)據(jù)的輸入也用scanf函數(shù)實(shí)現(xiàn)的,格式符使用的是f字符,以小數(shù)的形式輸入數(shù)據(jù),

也可以使用e字符,以指數(shù)的形式輸入數(shù)據(jù)。

如本節(jié)問題中的scanf("%f%f”,&a,&b);

2.實(shí)型數(shù)據(jù)的輸出

實(shí)型數(shù)據(jù)的輸出用printf函數(shù)實(shí)現(xiàn),格式符使用f字符,以小數(shù)的形式輸出數(shù)據(jù)。輸出時應(yīng)

注意:

(1)%f:不指定字段寬度,整數(shù)部分會全部輸出,并輸出6位小數(shù)。

(2)%m.n:指定輸出數(shù)據(jù)共占m歹U,其中有n位小數(shù)。如果數(shù)值長

度小于m,則左端補(bǔ)空格。

(3)%-m.n:指定輸出數(shù)據(jù)共占m歹U,其中有n位小數(shù)。如果數(shù)值長度小于m,則右端

補(bǔ)空格。

(4)若是雙精度型變量輸出時應(yīng)用%If格式控制,如doublef;

輸出時應(yīng)使用語句:printf(",D;

2.4字符型數(shù)據(jù)

一、字符常量

1、字符常量

C語言的字符常量是用一對單引號括起來的單個字符。如:‘a(chǎn)‘、’b'、’x'、’D'、

等都是字符常量.

2、轉(zhuǎn)義字符

除了這樣的字符常量外,C語言還允許用一種特殊形式的字符常量,就是以一個‘\'開頭的

字符序列.例如,前面已經(jīng)用到,在printf函數(shù)中的'\n',它表示一個"換行"符。

例2.2字符常量的輸出。

main()

(

printf(r,abc\n\tde");

)

運(yùn)行結(jié)果:abc

de

二、字符變量

在本節(jié)問題中,設(shè)了兩個字符型變量C1和c2。定義形式如下:

charcl,c2;

它表示cl和c2為字符型變量,各可以放一個字符??梢杂孟旅嬲Z句對cl,c2賦值:

cl='a';;c2='b';

因此在內(nèi)存中一個字符變量只占一個字節(jié)。

三、字符數(shù)據(jù)的存儲形式

字符在內(nèi)存中存儲的不是字符本身,而是它的ASCII碼,例如字符'a'的ASCII碼為97,

‘b'的ASCII碼為98。那么字符的存儲形式與整數(shù)的存儲形式是類似的。C語言使字符型數(shù)

據(jù)和整型數(shù)據(jù)是通用的。

例2.3main()

(

charal,a2;

al=97;a2=98:

print""%c%c\n”,al,a2);

printf("%d%d\n",al,a2);

)

程序運(yùn)行時輸出如下:

ab

9798

字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的,但應(yīng)該注意字符數(shù)據(jù)只占一個字節(jié),它只能存放。?255

范圍內(nèi)的整數(shù)。

例2.4大小寫字母的轉(zhuǎn)換。

main()

(

charal,a2;

al='a';a2='b';

a1=a132;a2a232;

printf("%c%c\n,z,al,a2);

)

運(yùn)行結(jié)果為:

AB

程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B?!痑'的ASCII碼為97,而'A

'為65,'b'為98,'B'為66。從ASCH碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字

母的ASCII碼大32o

四、字符型數(shù)據(jù)的輸入和輸出

1.getchar函數(shù)和putchar函數(shù)

例2.5#include"stdio.h"

main()

(

charc:

c=getchar();

putchar(c);

)

在運(yùn)行時,如果從鍵盤輸入字符'a'

a/(輸入'a'后,按回車鍵)

a(輸出變量c的值'a')

注意:getchar()只能接收一個字符。putchar()也只能向終端輸出一個字符。在使用getchar

函數(shù)和putchar函數(shù)時,程序的首部需使用預(yù)編譯命令〃include"stdio.h"。

2.scanf函數(shù)和printf函數(shù)

例2.6main()

charcl,c2;

scanf("%c%c",&cl,&c2);

printf("%c%c",cl,c2);

)

若輸入為ab/

則輸出為ab

在使用scanf函數(shù)和printf函數(shù)輸入輸出字符型數(shù)據(jù)時,使用"%c"格式控制,用來輸

入輸出單個字符。

注意,在用"%c"格式輸入字符時,空格將以有效字符輸入:

scanf("%c%c%c",&c1,&c2,&c3);

若輸入aVbVc/

則將字符'a'送給cl,字符空格'V'送給c2,因?yàn)榭崭褚彩且粋€有效字符,字符'b'送給c30%c

只需要讀入一個字符,用了空格做間隔,所以會出現(xiàn)這樣的問題。

五、字符串常量

字符串常量是用雙引號括住的字符序列。如:"Howdoyoudo"CHINA"a"等都

是字符串常量.

可以輸出一個字符串,如printf("Howdoyoudo.");

注意:不要將字符常量與字符串常量混淆。’a'是字符常量,"a"是字符串常量,二者不同。

C規(guī)定:在每個字符串的結(jié)尾加一個“字符串結(jié)束標(biāo)志”以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。

以'\0'作為字符串結(jié)束標(biāo)志。'\0'是ASCII碼為0的字符,從ASCII碼表中可以看到ASCII

碼為0的字符是“空操作字符”不引起任何操作。

2.5變量的初始化

變量的初始化,就是在定義變量的同時給變量賦予初值??梢圆捎谜f明變量的類型,然后再

賦值的方法,也可以對變量類型說明的同時,給變量賦初值。

1.先定義后賦值

inta,b,c;

a=2;

b=5;

c=10;

2.定義和賦值同時進(jìn)行

inta=5;

shortb=10;

charc='a";

floatd—7.8;

3.對幾個變量同時賦一個初值

intal=10,a2=10,a3=10;

不可以寫成:intal=a2=a3=10;

但是也可以寫成:intal,a2,a3;

al=a2=a3=10;

初始化不是在編譯階段完成的,而是在程序運(yùn)行時執(zhí)行本函數(shù)時賦以初值的。相當(dāng)于一個賦

值語句。例如:

inta=10;相當(dāng)于:inta;

a=10;

又如:

inta,b,c=20;相當(dāng)于:inta,b,c;

c=20;

2.6運(yùn)算符和表達(dá)式

一、算術(shù)運(yùn)算符和表達(dá)式

例2.7已知正方形的長和寬,求正方形的周長。

[分析]正方形的周長公式為:1=2*(a+b),已知正方形的長和寬可以計算周長。

main()

(

inta,b,l;

a=3;

b=4;

l=2*(a+b);

printf(z,l=%d\nv,1);

)

1.基本的算術(shù)運(yùn)算符

+(加法運(yùn)算符,或正值運(yùn)算符)

-(減法運(yùn)算符,或負(fù)值運(yùn)算符)

*(乘法運(yùn)算符)

/(除法運(yùn)算符)

%(模運(yùn)算符,或求余運(yùn)算符)

注意:(1)兩個整數(shù)相除結(jié)果為整數(shù)。但是如果相除的兩個數(shù)中,至少有一個為實(shí)數(shù),則結(jié)

果為帶小數(shù)的商。

(2)%模運(yùn)算符,要求操作數(shù)均為整型數(shù)據(jù),如7%4的值為3。

2.算術(shù)表達(dá)式

用算術(shù)運(yùn)算符和括號將操作數(shù)連接起來的,符合C語法規(guī)則的式子,稱C算術(shù)表達(dá)式。

在表達(dá)式求值時,按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行。

例如:10+'a'+1.5—8765.12*%'

在進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。

3.強(qiáng)制類型轉(zhuǎn)換

可以用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個表達(dá)式轉(zhuǎn)換成所需類型。例如

(double)a(將a轉(zhuǎn)換成double類型)

(int)(x+y)(將x+y的值轉(zhuǎn)換成整型)

(float)(5%3)(將5%3的值轉(zhuǎn)換成float型)

一般形式為:

(類型名)(表達(dá)式)

注意:(1)類型名應(yīng)用括號括起來。如(int)(x+y)

(2)已知floatx;對于(int)x,x仍然是float類型,而整個表達(dá)式(int)x為整型。

二、賦值運(yùn)算符和賦值表達(dá)式

1.賦值符號

賦值符號"="就是賦值運(yùn)算符,將一個數(shù)據(jù)賦給一個變量。如"a=3"。

2.類型轉(zhuǎn)換

如果賦值運(yùn)算符兩側(cè)的類型不一致,要進(jìn)行類型轉(zhuǎn)換。

(1)將實(shí)型數(shù)據(jù)賦給整型變量時,舍棄實(shí)數(shù)的小數(shù)部分。如i為整型變量,執(zhí)行"i=3.56”

的結(jié)果是使i的值為3。

(2)將整型數(shù)據(jù)賦給實(shí)型變量時,數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲到變量中。

3.復(fù)合的賦值運(yùn)算符

常用的賦值運(yùn)算符有以下幾種:

+=,_=,*=,/=,%=

例如:

a+=3等價于a=a+3

x*=y+8等價于x=x*(y+8)

x%=3等價于x=x%3

4,賦值表達(dá)式

由賦值運(yùn)算符將一個變量和一個表達(dá)式連接起來的式子稱為”賦值表達(dá)式"。

例如:

a=b=c=5(賦值表達(dá)式值為5,a、b、c值均為5)

a=5+(c=6)(表達(dá)式值為11,a值為11,c的值為6)

a=(b=4)+(c=6)(表達(dá)式值為10,a值為10,b等于4,c等于6)

三、逗號運(yùn)算符和逗號表達(dá)式

逗號運(yùn)算符將兩個表達(dá)式連接起來。如

3+5,6+8

稱為逗號表達(dá)式。逗號表達(dá)式的格式為

表達(dá)式1,表達(dá)式2

逗號表達(dá)式的求解過程是:先求解表達(dá)式1,再求解表達(dá)式2,整個逗號表達(dá)式的值是表達(dá)

式2的值。例如

逗號表達(dá)式

a=3*5,a*4

先求解a=3*5,得a的值為15,然后求解a*4,得60。整個逗號表達(dá)式的值為60。

課堂練習(xí)綜合實(shí)例例1輸入三角形的三條邊長,求三角形面積。

(為了簡單起見,設(shè)輸入的三邊長a,b,c能構(gòu)成三角形)

#include"math.h"

main()

(

floata,b,c,s,area;

scanf(z,%f,%f,%f",&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(wa=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n,/,a,b,c,s);

printf(,rarea=%7.2f\n,/,area);

)

運(yùn)行情況如下:

3,4,6

a=3.00,b=4.00,c=6.00,s=6.50

area=5.33

例2從鍵盤輸入一個大寫字母,要求改用小寫字母輸出。

#include“stdio.h"

main()

charcl,c2;

cl=getchar();

printf("%c,%d\n,/,cl,cl);

c2=cl+32;

printf(n%c,%d\n",c2,c2);

運(yùn)行情況如下:

A/

A,65

a,97

本章小結(jié)

本章在講解順序結(jié)構(gòu)程序設(shè)計方法的同時,介紹了三種數(shù)據(jù)類型。

1.整型數(shù)據(jù)。主要了解整型數(shù)據(jù)的定義方法,根據(jù)使用整數(shù)的范圍選用定義整數(shù)變量的類

型。掌握整型數(shù)據(jù)的輸入輸出方法,主要使用Id格式控制符。

2.實(shí)型數(shù)據(jù)。主要掌握實(shí)型變量的不同定義方法,單精度數(shù)和雙精度數(shù)的表示范圍,實(shí)型

數(shù)據(jù)的輸入輸出方法,主要使用f格式控制符。

3.字符型數(shù)據(jù)。是由一對單引號括起來的單個字符,要注意,字符與字符串的區(qū)別。

還講解了各種運(yùn)算符和表達(dá)式,主要掌握算術(shù)運(yùn)算符,在混合運(yùn)算中,要按照運(yùn)算符的

優(yōu)先級,結(jié)合方向運(yùn)算。

作業(yè):

實(shí)驗(yàn)一順序結(jié)構(gòu)程序設(shè)計

一、實(shí)驗(yàn)?zāi)康?/p>

1.掌握C語言數(shù)據(jù)類型,熟悉如何定義一個整型、字符型、實(shí)型變量,以及對它們賦值的

方法,了解以上類型數(shù)據(jù)輸出時所用的格式轉(zhuǎn)換符。2

2.學(xué)會使用有關(guān)算術(shù)運(yùn)算符,以及包含這些運(yùn)算符的表達(dá)式。

3.掌握數(shù)據(jù)的輸入輸出方法,能正確使用各種格式轉(zhuǎn)換符。

二、實(shí)驗(yàn)學(xué)時數(shù)

4學(xué)時

三、實(shí)驗(yàn)內(nèi)容和步驟

1.啟動TC2.0編譯系統(tǒng),進(jìn)入編輯界面,建立一個新文件。文件名自定。

(要求每個學(xué)生建立一個自己的文件夾,每個同學(xué)的練習(xí)和作業(yè)的源程序命名形成系列,便

于檢查、查找和考核)。

利用一個小程序驗(yàn)證常量、變量的使用方法與特點(diǎn),驗(yàn)證數(shù)據(jù)類型和表達(dá)式值的計算規(guī)則及

其輸出格式。

參考程序:

main()

{charcl,c2;

cl=97;c2=98;

printf(n%c,%c\n",cl,c2);

)

(1)在此基礎(chǔ)上加入以下printf語句,并運(yùn)行。

printf(f,%d,%d\n,f,cl,c2);

(2)將第二行改為以下語句,并運(yùn)行。

intcl,c2;

(3)將第三行改為以下語句,并運(yùn)行。

cl=300;c2=400;

分別寫出三次運(yùn)行結(jié)果。

2.編程并調(diào)試運(yùn)行

(1)編程序,用getchar函數(shù)讀入兩個字符給cl、c2,然后分別用putchar函數(shù)和printf

函數(shù)輸出這兩個字符。上機(jī)運(yùn)行此程序,比較putchar和printf函數(shù)輸出字符的特點(diǎn)。

(2)試編寫程序,從鍵盤輸入一個大寫字母,要求改用小寫字母輸出。

3.寫出下面程序的運(yùn)行結(jié)果:

1)main()

(

intx=l,y=l,z=l;

y=y+x;

x=x+y;

printf(%d\n”,x);

printf(,f%d\n",y);

)

2)main()

{chara;

intb;

a='A';b=97;

printfa:dec=%doct=%ohex=%xASCH=%c\n”,a,a,a,a);

printf(,fb:dec=%doct=%ohex=%xASCII=%c\n/,,b,b,b,b);

a='M';b=-8;

printf(,fa:dec=%doct=%ohex=%xASCII=%c\nz,,a,a,a,a);

printf(,fb:dec=%doct=%ohex=%xASCII=%c\n",b,b,b,b);

)

4.運(yùn)行下面的程序,分析功能并糾正錯誤。

main()

(

inta,b,c,d;

scanf(,f%d%d%d%d/,;a,b,c,d);

printf(,fa=%db=%dc=%de=a+b+c+d=%d\n",a,b,c,d,a+b+c+d);

)

章節(jié)題目:

第三章選擇結(jié)構(gòu)程序設(shè)計

教學(xué)時間:

8學(xué)時

教學(xué)目的:

1、掌握關(guān)系運(yùn)算表達(dá)式

2、掌握邏輯運(yùn)算表達(dá)式

3、熟練掌握if語句的使用

4、掌握switch語句

內(nèi)容、重點(diǎn)、難點(diǎn):

內(nèi)容:

3.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式

3.2邏輯運(yùn)算符和邏輯表達(dá)式

3.3if語句

3.4switch語句

重點(diǎn):

1、關(guān)系運(yùn)算符和關(guān)系表達(dá)式

2、邏輯運(yùn)算符和邏輯表達(dá)式

3、if語句的使用

難點(diǎn):

1、掌握switch語句的使用

2、if語句的嵌套使用

注:教案尾頁有小結(jié)和作業(yè)

第三章選擇結(jié)構(gòu)程序設(shè)計

選擇結(jié)構(gòu),或稱分支結(jié)構(gòu),是指對所給定的條件進(jìn)行判斷,然后決定選擇執(zhí)行不同的操作。

本章主要介紹如何用C語言實(shí)現(xiàn)選擇結(jié)構(gòu)。C語言的選擇語句有兩類,一類是if語句,另

一類是switch語句,本章將分別進(jìn)行介紹。在介紹選擇結(jié)構(gòu)程序設(shè)計的同時,還要介紹關(guān)

系運(yùn)算符和關(guān)系表達(dá)式,邏輯運(yùn)算符和邏輯表達(dá)式等內(nèi)容。

3.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式

一、關(guān)系運(yùn)算符及其優(yōu)先次序

1、關(guān)系運(yùn)算符

C語言提供6種關(guān)系運(yùn)算符:

(小于)

(小于或等于)

(大于)

(大于或等于)

(等于)

(不等于)

①<

②U

③〉

?>=

⑤==

⑥!=

優(yōu)先級相同(高)

優(yōu)先級相同(低)

2、關(guān)于優(yōu)先次序:

(1)前4種關(guān)系運(yùn)算符的優(yōu)先級別相同,后兩種也相同。前4

種高于后2種。例如,優(yōu)先于’==,而與優(yōu)先級相同。

(2)關(guān)系運(yùn)算符與算術(shù)運(yùn)算符、賦值運(yùn)算符的優(yōu)先級關(guān)系如下:

算術(shù)運(yùn)算符(高)f關(guān)系運(yùn)算符(中)f賦值運(yùn)算符(低)

例如:

a>b+c等效于a>(b+c)

a==b<c等效于a==(b<c)

a=b>=c等效于a=(b>=c)

(3)關(guān)系運(yùn)算符的結(jié)合方向是“自左向右”。

注意:“等于”關(guān)系的運(yùn)算符“==”和“不等于”關(guān)系的運(yùn)算符“!=”與數(shù)學(xué)中的表示方

法不同。例如,欲判斷x是否等于0,若寫成:x=0則表示把0賦值給變量x,正確的寫法

為:x==0。

二、關(guān)系表達(dá)式

1、關(guān)系表達(dá)式

用關(guān)系運(yùn)算符將兩個表達(dá)式(算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表

達(dá)式等)連接起來的式子,稱關(guān)系表達(dá)式。

例:x>y,a+b<18,'a'c'b'都為合法的關(guān)系表達(dá)式。

2、關(guān)系表達(dá)式的值

關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假工

在C語言中:常用1表示“真”,用0表示“假一

例如,a=5,b=2,則:

關(guān)系表達(dá)式a>b的值為“真”,表達(dá)式的值為1。

關(guān)系表達(dá)式a==b的值為“假”,表達(dá)式的值為0。

可以將關(guān)系表達(dá)式的運(yùn)算結(jié)果(0或1)賦給一個整型變量或字符型變量,如a=4,b=l,下面

的賦值語句是將1賦給變量c:

c=a>bc的值為1

例3.1試求X=5>3>1的值。

[分析]X=5>3>1相當(dāng)于X=(5>3)>1=1>1=0

[說明]根據(jù)關(guān)系運(yùn)算符的優(yōu)先級別高于賦值運(yùn)算符。

3.2邏輯運(yùn)算符和邏輯表達(dá)式

一、邏輯運(yùn)算符及其優(yōu)先次序

1、邏輯運(yùn)算符

C語言提供了3種邏輯運(yùn)算符:

①!邏輯非

②&&邏輯與

③I邏輯或

其中“&&”和“|”為“雙目(元)運(yùn)算符”,要求有兩個操作數(shù)(即運(yùn)算量),如

(a<b)&&(x<=y),(a<b)I(x<=y)。"!”是“一目(元)運(yùn)算符”,只需一個操作數(shù),如!a或!(a<b)。

2、關(guān)于邏輯運(yùn)算符的優(yōu)先次序:

(1)邏輯運(yùn)算符的優(yōu)先次序如下;

!(非)一&&(與)一I(或),即“!”為三者中最高的。

(2)邏輯運(yùn)算符中的“&&”和“|"低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符。

例如:

(a>=b)&&(x>y)可寫成:a>=b&&x>y

(a==b)|(x==y)可寫成:a==b|x==y

(3)邏輯運(yùn)算的結(jié)合方向是“自左向右二

二、邏輯表達(dá)式

1、邏輯表達(dá)式

用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來的式子就是邏輯表達(dá)式。

例如:a&&b*c,(a+b)I(c<0)均為邏輯表達(dá)式。

2、邏輯表達(dá)式的值

C語言編譯系統(tǒng)在給出邏輯運(yùn)算時,以數(shù)值1代表“真”,以0代表“假”,但在判斷一個量

是否為“真”時,以非0代表“真”,即將一個非0的數(shù)值認(rèn)為是“真”,以0代表“假”。

注意:(1)參與邏輯運(yùn)算的量不但可以是0和1,或者是0和非0的整數(shù),也可以是任何類

型的數(shù)據(jù),如字符型、實(shí)型或指針型。

(2)如果在一個表達(dá)式中不同位置上出現(xiàn)數(shù)值,應(yīng)區(qū)分哪些是作為數(shù)值運(yùn)算或關(guān)系運(yùn)算的

對象,哪些作為邏輯運(yùn)算的對象。

(3)在邏輯表達(dá)式的求解中,并不是所有邏輯運(yùn)算符都需要執(zhí)行,有時只需執(zhí)行一部分運(yùn)

算符就可以得到邏輯表達(dá)式的最后結(jié)果。例如:

①x&&y&&z

只有x為真時,才需要判斷y的值.只要x為假,就立即得出整個表達(dá)式為假。

②x|yIz

只要x為真(非0),就不必判斷y和x;當(dāng)x為假,才判斷y;x和y都為假才判斷z。

3.3if語句

if語句是選擇結(jié)構(gòu)的一種形式,又稱為條件分支語句。它是通過對給定條件的判斷,來決定

所要執(zhí)行的操作。C語言中提供了3種形式的if語句:if語句、if-else語句和if-else-if語句。

一、問題的提出

[問題]比較兩個數(shù)的大小,將兩個數(shù)中較大者賦給m。

[分析]要比較兩個數(shù)的大小就要用到關(guān)系表達(dá)式,定義兩個變量a,b,如果a>b則將a的

值賦給m,若a<b則將b的值賦給m,這里我們將用到if語句來實(shí)現(xiàn)該項(xiàng)功能。

main()

(

inta,b,s;

a=5;b=10;

if(a>b)m=a;

elsem=b;

printf("m=%d\n",m);

)

程序運(yùn)行結(jié)果:

m=10

[說明]在該問題中我們借用了if語句,通過條件來判斷應(yīng)該執(zhí)行哪條語句,充分體現(xiàn)出選

擇結(jié)構(gòu)程序設(shè)計的思想。

二、if語句的三種形式

1.if語句

if語句是條件分支語句最基本的形式。

格式:if(表達(dá)式)語句

功能:首先計算表達(dá)式的值,若表達(dá)式的值為“真”(非0),則執(zhí)行語句,若表達(dá)式的值為

“假”(0),不執(zhí)行語句。其流程圖3.1(a)所示。

例如:

if(x>y)printf("%d",x);

2.if-else語句

if-else語句是條件分支語句的標(biāo)準(zhǔn)使用形式。

格式:if(表達(dá)式)語句1

else語句2

功能:首先計算表達(dá)式的值,若表達(dá)式的值為“真”(非0),則執(zhí)行語句I,若表達(dá)式的值

為"假”(0),則執(zhí)行語句2。其流程圖3.1(b)所示。

例如:

if(x>y)printf("%d",x);

elseprintf("%d",y);

假(0)

真俳0)

(a)

表達(dá)式

語句

真俳0)假(0)

(b)

表達(dá)式

語句1

語句2

3.if-else-if語句

前面兩種if語句一般都用于兩個分支的選擇結(jié)構(gòu)。對于多個分支選擇時,可采用if-else-if

語句。

格式:

if(表達(dá)式1)語句1

elseif(表達(dá)式2)語句2

elseif(表達(dá)式3)語句3

I

I

elseif(表達(dá)式n-1)語句n-1

else語句n

功能:首先計算表達(dá)式1的值,若為“真”(非0),執(zhí)行語句1,否則進(jìn)行下一步判斷;若

表達(dá)式2為真,執(zhí)行語句2,否則進(jìn)行下一步判斷……最后所有表達(dá)式都為假時,執(zhí)行語句

n。

例如:

if(score>89)grade='A';

elseif(score>79)grade=B;

elseif(score>69)grade='C';

elseif(score>59)grade=D;

elsegrade='E';

關(guān)于if語句的說明:

(1)if后面圓括號中的表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式,用于描述選擇結(jié)構(gòu)的條件,

但也可以是任意的數(shù)值類型表達(dá)式(包括整型、實(shí)型、字符型、指針型數(shù)據(jù)表達(dá)式)。

例如:if(2)printf("OK!");

是合法的,因?yàn)楸磉_(dá)式的值為2,非0,按“真”處理,執(zhí)行結(jié)果輸出“OK!”

(2)第二種、第三種格式的if語句中,在每個else前面有一個分號,整個語句結(jié)束處也有

一個分號。這是由于分號是C語句中不可缺少的部分,這個分號是if語句中的內(nèi)嵌語句所

需要的。

(3)在if和else后面可以只含有一個內(nèi)嵌的操作語句,也可以含有多個操作語句,此時應(yīng)

用大括號“{}”將幾個語句括起來,構(gòu)成一個復(fù)合語句,注意:復(fù)合語句的“{”和“}”

之后不能加分號。

例3.2輸入兩個實(shí)數(shù),按代數(shù)值由小到大輸出這兩個數(shù)。

main()

floata,b,c;

scanf(u%f,%f;&a,&b);

if(a>b)

(

t=a;a=b;b=t;

)

printf(”%5.2f,%5.2f',a,b);

}

程序運(yùn)行結(jié)果:

2.2,-5.7/

-5.70,2.20

二、if語句的嵌套

在if語句中有包含一個或多個if語句稱為if語句的嵌套.要處理多重分支選擇結(jié)構(gòu)問

題,除了用if-else-if語句外,還可以利用if語句的嵌套來實(shí)現(xiàn)。

說明:(1)if和else的配對規(guī)則為:else總是與它上面的最近的未配對的if配對。

(2)if與else的個數(shù)最好相同,從內(nèi)層到外層一一對應(yīng),以避免出錯。

(3)在嵌套內(nèi)的if語句既可以是if語句形式,也可以是if-else語句形式,但最好使內(nèi)嵌if

語句也包含else部分。如果if與else的個數(shù)不同,可以用花括號來確定配對關(guān)系。例如:

if()

{if()語句1}

else

語句2

這時“{}”限定了內(nèi)嵌if語句的使用范圍,因此else與第一個if配對。

例3.3有一函數(shù):

-1(x<0)

y=0(x=0)

1(x>0)

編一程序,輸入一個x值,輸出y值。

main()

(

intx,y;

scanf("%d",&x);

if(x<0)y=-l;

elseif(x==0)y=0;

elsey=l;

printf("x=%d,y=%d\n",x,y);

)

三、條件運(yùn)算符

條件運(yùn)算符由兩個符號“?”和“:”組成,要求有3個操作對象,稱三目(元)運(yùn)算符,

它是C語言中唯一的三目運(yùn)算符。條件表達(dá)式的格式為:

表達(dá)式1?表達(dá)式2:表達(dá)式3

min=(a<b)?a:b;

說明:(1)通常情況下,表達(dá)式1是關(guān)系表達(dá)式或邏輯表達(dá)式,用于描述條件表達(dá)式中的條

件,表達(dá)式2和表達(dá)式3可以是常量、變量或表達(dá)式。

例如:(x==y)?'T':'F'

(a>b)?printf("%d",a):printf("%d",b)

等均為合法的條件表達(dá)式。

(2)條件表達(dá)式的執(zhí)行順序:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時表達(dá)

式2的值就作為整個條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式

3的值就是整個條件表達(dá)式的值。

min=(a<b)?a:b;

執(zhí)行結(jié)果就是將a和b二者中較小的賦給min。

(3)條件表達(dá)式的優(yōu)先級別僅高于賦值運(yùn)算符,而低于前面介紹過的所有運(yùn)算符。因此,

min=(a<b)?a:b;

可直接寫成:

min=a<b?a:b;

如果有

a>b?a:b+l

等效于a>b?a:(b+l),而不等效于(a>b?a:b)+l

(4)條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?。例如?/p>

x>O?l:x<O?-l:O等效于x>O?l:(x<O?-l:O)

(5)表達(dá)式1、表達(dá)式2和表達(dá)式3的類型可以不同,此時條件表達(dá)式的值的類型為它們中

較高的類型。

例3.4輸入一個字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,

不轉(zhuǎn)換。然后輸出最后得到的字符。

main()

(

charch;

printf("Pleaseenteracharcter:\n");

scanf("%c",&ch);

ch=(ch>='A'&&ch<='Z')?(ch+32):ch;

printf("%c",ch);

)

程序運(yùn)行結(jié)果:

Pleaseenteracharcter:

AZ

a

[說明]條件表達(dá)式中的(ch+32),其中32是小寫字母和大寫字母ASCH碼的差值。

3.4switch語句

一、問題的提出

要求按照考試成績的等級(grade)輸出百分制分?jǐn)?shù)段:鍵入'A',輸出85?100;鍵入'B’,

輸出70?84;鍵入'C',輸出60?69;鍵入'D',輸出<60;鍵入其他任意字符,輸出error。

main()

chargrade;

scanf("%c",&grade);

switch(grade)

(

case'A':printf("85?100\n");

case'B':printf(n70-84\nn);

case'C':printf("60~69\n");

case'D:printf(H<60\n");

default:printf(uerror\nn);

)

)

二、switch語句

格式為:

switch(表達(dá)式)

{case常量表達(dá)式1:語句1

case常量表達(dá)式2:語句2

?

?

case常量表達(dá)式n:語句n

default:語句n+1

(

其中default和語句n+1可以同時省略。

說明:(1)switch的表達(dá)式通常是一個整型或字符型變量,也允許是枚舉型變量,其結(jié)果為

相應(yīng)的整數(shù)、字符或枚舉常量。case后的常量表達(dá)式必須是與表達(dá)式對應(yīng)一致的整數(shù)、字符

或枚舉常量。

(2)switch語句中所有case后面的常量表達(dá)式的值都必須互不相同。

(3)switch語句中的case和default的出現(xiàn)次序是任意的。

(4)由于switch語句中的“case常量表達(dá)式”只是起語句標(biāo)號的作用,而不起條件判斷作

用,即“只是開始執(zhí)行處的入口標(biāo)號”??梢杂靡粋€break語句來終止switch。將上面的switch

結(jié)構(gòu)改寫如下:

switch(grade)

(

case'A':printf("85~100\n");break;

caseB:printf("70~84\n");break;

case'C:printf("60~69\n");break;

case'D:printf("<60\n");break;

default:printf("error\n");

}

最后一個分支(default)可以不加break語句。如果grade的值為'B',則只輸出“70?84"。

(5)每個case的后面既可以是一個語句,也可以是多個語句,當(dāng)是多個語句的時候,也不

需要用花括號括起來。

(6)多個case的后面可以共用一組執(zhí)行語句,如

switch(n)

case1:

case2:

x=10;

break;

1?

)

它表示當(dāng)n=l或n=2時,都執(zhí)行下面兩個語句:

x=10;

break;

課堂練習(xí)綜合實(shí)例

通過一些例子,進(jìn)一步說明選擇結(jié)構(gòu)的程序設(shè)計方法。

例1求一個整數(shù)的平方根,若為負(fù)數(shù),則求出它的負(fù)數(shù)平方根。

#include"stdio.h"

#include"math.hH

main()

(

intn;

floatroot;

printf("Enteranumber:\t");

scanf(u%dn,&n);

if(n>=0)

(

root=sqrt(n);printf(usqrt(%d)=%f',n,root);

)

else

(

root=sqrt(abs(n));

printf(,,sqrt(%d)=%fi",n,root);

例2從鍵盤上輸入3個實(shí)數(shù),求出其中的最小值并輸出其值。

main()

(

floata,b,c,temp;

printf("Pleaseentera,b,c:\n");

scanf(u%f,%f,%f;&a,&b,&c);

if(a>=b)

(

temp=a;a=b;b=temp;

)

if(a>=c)

(

temp=a;a=c;c=temp;

printf(nMin=%f\n';a);

程序運(yùn)行情況:

1.2,-34.5,678/

Min=-34.500001

也可以用如下方法解決此題:

main()

(

floata,b,c,temp;

printf("Pleaseentera,b,c:\n");

scanf(H%f,%f,%f,,&a,&b,&c);

a=(a<b)?a:b;

a=(a<c)?a:c;

printf("Min=%f\nH,a);

)

例3輸入一個年份,判斷它是否是閏年。

main()

(

intyear,leap;

printf("Pleaseenteryear:\n");

scanf(u%d",&year);

if(year%400==0)

leap=l;

else

溫馨提示

  • 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

提交評論