版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
《C語言程序設計》
教案
課程代碼:______0309代
總課時數(shù):_________H4
適用專業(yè):計算機應用技術、計算機網(wǎng)絡
系(部)名稱:軟件工程系
教研室名稱:軟怫狀/
修訂時間:2012年2月
授課日期:第1周周一5—8周三1一2第2周周一5—8周三1一2
授課類型:演示、講解、練習、輔導課時:12
教學內(nèi)容:1、C語言的歷史和特色
2、C程序結構
3、C程序的開發(fā)過程
教學目標:1、了解C語言的產(chǎn)生過程
2、掌握C程序結構
3、掌握C程序開發(fā)過程
4、掌握用TurbocC運行一個C程序
教學重點:1、掌握C程序的基本結構構成
2、學會用TurboC運行一個C程序
教學難點:掌握C程序的開發(fā)過程
教學過程:內(nèi)容講授——》學生實踐一?作業(yè)布置一》新課內(nèi)容預告
教學手段:多媒體教學軟件+個別輔導
作業(yè):
第1章C語言概述
c語言是國際上廣泛流行的一門高級程序設計語言,具有語言簡潔、使用方便靈活、
移植性好、能直接對系統(tǒng)硬件和外圍接口進行控制等特點。本章將簡要地介紹它的產(chǎn)生
過程和特點、c程序結構及c程序的上機步驟,以便對c語言有一個概括的認識。
1.1c語言的歷史和特色
一、歷史
1.1960年出現(xiàn)了ALGOL60。
2.1963年和1967年,在ALGOL60的基礎上推出了CPL和BCPL語言更接近于硬
件。
3.1970年美國貝爾實驗室對BCPL語言做了進一步簡化,設計了B語言,并用B
語言編寫了第一個UNIX操作系統(tǒng)。
4.在1972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出C
語言。
二、特色
1.簡潔緊湊,使用方便靈活
C語言一共只有32個關鍵字、9種控制語句,程序書寫自由,壓縮了一切不必要的
成分,語言簡練。
2.運算符豐富
C語言有34種運算符和15個等級的運算優(yōu)先順序,使表達式類型多樣化,可以實
現(xiàn)在其它語言中難以實現(xiàn)的運算。
3.數(shù)據(jù)類型豐富
C語言的數(shù)據(jù)類型有整型、實型、字符型、數(shù)組類型、指針類型、結構體類型、聯(lián)
合體類型及枚舉類型等,能用來實現(xiàn)各種復雜的數(shù)據(jù)結構的運算。
4.模塊化結構
C語言用函數(shù)作為程序的模塊單位,便于實現(xiàn)程序的模塊化,而且便于模塊間相互
調用及傳遞數(shù)據(jù)。
5.語法限制少和程序設計自由度大
C語言允許程序編寫者有較大的自由度,放寬了以往高級語言嚴格的語法檢查,較
好地處理了“限制”與“靈活”這一對矛盾。
6.比較接近硬件
C語言允許直接訪問物理地址,能進行位操作,能實現(xiàn)匯編語言的大部分功能,可
以直接對硬件進行操作。
7.生成目標代碼質量高、程序執(zhí)行效率高
一般只比匯編程序生成的目標代碼效率低10%-20%?
8.可移植性好
基本上不做修改就能用于各種型號的計算機和各種操作系統(tǒng)。
1.2C程序結構
下面列出幾個簡單的C程序來說明C程序的結構特征。
例1.1輸出一行信息。
main()
(
printf("ThisisfirstCprogramme!\n");
)
該程序的作用是輸出一行信息:ThisisfirstCprogramme!main表示“主函數(shù)";
函數(shù)體用大括號{}括起來。本例題中主函數(shù)僅包含一個語句,該語句由printf()輸出
函數(shù)構成。括號內(nèi)雙引號中的字符串按原樣輸出;’\n'是換行符,即在輸出〃Thisis
firstCprogramme!”后回車換行;語句后面有一個分號,表示該語句結束,這個分號
必不可少。
例L2計算兩個數(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。程序中,
/*……*/表示注釋部分,對編譯和運行不起作用。第3行是變量說明,使用的a、b和
sum為整型(int)變量。第4行是兩個賦值語句,使a的值為123,b為321。第5行使
sum的值為a+b,第6行的%d是輸入輸出的“格式說明”,表示“十進制整數(shù)類型“,printf
函數(shù)中括號內(nèi)最右端的sum是要輸出的變量,當然它的值為444。
例1.3比較兩個數(shù)的大小。
main()/*主函數(shù),功能輸入兩個整數(shù),判斷后輸出較大的數(shù)*/
inta,b,c;/*定義3個整型變量*/
scanfC%d,%d,z,&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ù)帶回調用處*/
)
該程序的作用是從鍵盤輸入兩個整數(shù),然后在屏幕上輸出它們中較大值的數(shù)。
程序的第5行是調用max()函數(shù),在調用過程中將實際參數(shù)a和b的值,分別傳遞
給max()函數(shù)中的形式參數(shù)x和y,然后得到一個返回值(z的值),并把這個值賦給變
量c。
運行情況如下:
2,8/
max=8
從以上幾個例題,可以看到C程序的結構特征。
I.c程序是由函數(shù)構成的。
一個C程序至少有一個main()函數(shù),也可以包含一個main()函數(shù)和若干個其它
函數(shù)。
2.一個函數(shù)有兩部分構成。
函數(shù)說明部分,即函數(shù)的第一行,包括函數(shù)類型、函數(shù)名、形參類型、形參名。
函數(shù)體,由一對大括號{}括起來的語句集合。函數(shù)體一般包括有聲明部分和執(zhí)行部
分,聲明部分用于定義所用到的變量,執(zhí)行部分由若干語句組成。
3.一個C程序總是從main()函數(shù)開始執(zhí)行,而不管main()在源程序中的位置,
執(zhí)行完主函數(shù)中的所有語句后,程序就結束。
4.每個語句和變量定義的最后必須要有一個分號,分號是C語句的必要組成部分。
5.C語言本身沒有提供輸入和輸出語句,輸入輸出操作是通過庫函數(shù)scanf()、
printf()等函數(shù)來實現(xiàn)的。
6.C語言用/*……*/對程序進行注釋,/和*之間不允許留有空格,/*和*/應當一一
對應匹配,注釋部分允許出現(xiàn)在程序中的任何位置上。程序中加一些注釋,可以增加程
序的可讀性。
1.3C程序的開發(fā)過程
用C語句編寫的程序稱為“源程序”。
1.C程序開發(fā)的4個基本步驟
一般C程序開發(fā)要經(jīng)歷4個基本步驟:編輯一一編譯一一連接一一運行
(1)編輯
使用字處理軟件或編輯工具將源程序以文本文件形式保存到磁盤,源程序文件名由
用戶自己選定,但擴展名必須為
(2)編譯
編譯的功能就是調用“編譯程序”,將已編輯好的源程序翻譯成二進制的目標代碼。
如果源程序沒有語法錯誤將產(chǎn)生一個與源程序同名,以〃.obj”為擴展名的目標程序。
(3)連接
編譯后產(chǎn)生的目標程序往往形成多個模塊,還要和庫函數(shù)進行連接才能運行,連接
過程是使用系統(tǒng)提供的“連接程序”運行的。連接后,產(chǎn)生以“.exe”為擴展名的可執(zhí)行
程序。
(4)運行
可執(zhí)行程序生成后,就可以在操作系統(tǒng)的支持下運行,若執(zhí)行結果達到預期的目的,
則開發(fā)工作到此完成,否則,要進一步地經(jīng)過以上過程以取得最終的正確結果。
2.使用TurboC開發(fā)程序的方法
現(xiàn)在,多數(shù)的C程序開發(fā)使用一個集成TurboC開發(fā)工具來完成。下面簡單介紹使
用TurboC開發(fā)程序的方法。
(1)TurboC的目錄及文件
TurboC應裝入磁盤的某一目錄下,例如,放在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):其中包括graphlics.lib>math,lib、mathl.lib等庫
函數(shù)文件。
BGI子目錄(c:\tc|bgi):其中包括tc運行時所需的信息。
通過執(zhí)行tc.exe命令就可以進入TurboC環(huán)境,如果用戶的當前目錄是TurboC所
在的子目錄tc,則只需從鍵盤輸入“tc”命令即可。
C:\tc>tc/
(2)TurboC集成環(huán)境作簡單介紹,它包括以下幾個方面的內(nèi)容:
主菜單窗口
編輯窗口
信息窗口
功能鍵提示行
3.用TurboC運行第一個C程序
下面介紹使用TurboC編輯和運行一個簡單的C程序的操作步驟:
(1)編輯或修改源程序。
在編輯窗口鍵入一下源程序:
main()
{
printf("ThisismyfirstCprogram");
然后執(zhí)行"F后e/save”命令;或按“F2”鍵存盤。
(2)編譯與連接源程序。
執(zhí)行“compile/makeexefile”命令或直接按下F9鍵,即可一次完成編譯與連接。
(3)運行程序。
按“F10”鍵返回主菜單,用光標移動鍵將亮條移到“Run”菜單選項回車或按下
“Ctrl+F9”鍵,即可運行剛生成的可執(zhí)行文件。此時TurboC工作窗口消失,屏幕上
顯示程序運行結果:
ThisismyfirstCprogram
若發(fā)現(xiàn)運行結果不對,可再按“F10”鍵回工作窗口,重復上述步驟。
(4)運行程序后查看程序的運行結果。
(5)退出TurboC,按“Alt+X”鍵,系統(tǒng)即退出Turbo環(huán)境。
本章小結
本章對C語言進行了總體介紹,對學生的要求是掌握基本概念,學習的過程要緊密
結合本章的知識要點:
1.程序的構成,main()函數(shù)和其他函數(shù)。
2.頭文件、數(shù)據(jù)說明、函數(shù)的開始和結束標志。
3.源程序的書寫格式。
4.C語言的風格。
授課日期:第3周周三1一2第4周周一5一8周三1一2
第5周周一5一8周三1一2
授課類型:演示、講解、練習、輔導課時:14
教學內(nèi)容:1、常量和變量
2、整型數(shù)據(jù)
3、實型數(shù)據(jù)
4、字符型數(shù)據(jù)
5、變量的初始化
6、運算符和表達式
教學目標:1、掌握常量與變量的書寫和定義
2、掌握三種基本數(shù)據(jù)類型
3、掌握運算符和表達式的使用
4、掌握順序結構程序設計的方法
教學重點:1、三種基本數(shù)據(jù)類型的定義和使用
2、各種運算符的使用
教學難點:1、運算符的使用
2、使用順序結構編程
教學過程:內(nèi)容講授一?學生實踐一?作業(yè)布置一》新課內(nèi)容預告
教學手段:多媒體教學軟件+個別輔導
作業(yè):1、編程序,用getchar函數(shù)讀入兩個字符給cl、c2,然后分別用
putchar函數(shù)和printf函數(shù)輸出這兩個字符。上機運行此程序,
比較putchar和printf函數(shù)輸出字符的特點。
2、試編寫程序,從鍵盤輸入一個大寫字母,要求改用小寫字母
輸出。
第2章順序結構程序設計
順序結構是一組按書寫順序執(zhí)行的語句。本章將主要介紹程序中用到的一些基本要
素(常量、變量、運算符、表達式和輸入輸出語句等),以及基本的數(shù)據(jù)類型(整型、
實型和字符型)。
2.1常量和變量
一、常量
1.常量:在程序運行的過程中,其值不能被改變的量。如2、4、-1.6等。
2.分類:普通常量和符號常量。
3.符號常量:用一個標識符代表一個常量,這樣的標識符稱為符號常量。如用PI
代表3.1415926c
4.注意:符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。如在程序中,
對PI重新賦值:PI=2;這樣是不允許的。
二、變量
1.變量
C語言規(guī)定在程序運行的過程中,其值可以改變的量,稱為變量。
2.標識符:用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名和文件名的
有效字符序列。
3.C語言規(guī)定:標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必
須為字母或下劃線。一般變量名的長度不能超過8個字符。
如下面是合法的標識符,也是合法的變量名:sum,average,day,month,student,
_above,k_l_2_3,basic;下面是不合法的標識符和變量名:M.D.John,$123,#33,
3D64,a>,-abo
在c語言中,要求對所有用到的變量作強制定義,也就是"先定義,后使用”。
2.2整型數(shù)據(jù)
一、整型常量
C語言整型常數(shù)可用以下三種形式表示:
1.十進制整數(shù):數(shù)碼直接開頭的十進制數(shù)。
2.八進制整數(shù):以0開頭的常量是八進制數(shù)。
3.十六進制整數(shù):以Ox開頭的數(shù)是16進制數(shù)。
二、整型變量
1.整型變量的分類
整型變量可分為:基本型、短整型、長整型和無符號型四種,其定義的關鍵字如下:
(1)基本型,以int表示。范圍為-32768?32767,即-215?(215-1)。
(2)短整型,以shortint或short表示。范圍與基本型相同。
(3)長整型,以longint或long表示。若一個整型常量后面加上一個字母1或L,
則認為是longint型常量。范圍為-2147483648?214783647即-231?(231-1)
(4)無符號型,在實際應用中變量的值常常是正的,如年齡、工資、成績等,因
此可以將變量定義為"無符號"類型。
無符號型又分為:
①無符號整型,以unsignedint或unsigned表示。范圍:0?65535,即0~
(216-l)o
②無符號短整型,以unsignedshort表示。范圍:0?65535即0?(216-1)0
③無符號長整型,以unsignedlong表示。范圍:0~4294967295即0~(232-1)0
2.整型變量的定義
變量的定義格式為:數(shù)據(jù)類型變量表列;
其中若定義多個同類型的變量,則用逗號分開。
例:inta,b;(指定變量a,b為整型)
unsignedshortc,d;(指定變量c,d為無符號短整型)
longe,f;(指定變量e,f為長整型)
3.整型數(shù)據(jù)的輸入
整型變量鍵盤輸入,是通過scanf函數(shù)實現(xiàn)的,scanf函數(shù)是數(shù)據(jù)輸入函數(shù),格式
為:
scanf(格式控制,地址表列);
例如:scanf("%d%d”,&a,&b);
(1)格式控制是用雙引號括起來的字符串,由"%"和格式字符組成,作用是將
輸入數(shù)據(jù)轉換為指定的格式輸入。
(2)格式字符,對于不同的數(shù)據(jù)用不同的格式字符。d格式符是用來輸入十進制整
數(shù)的。因為本節(jié)問題中變量a,b是整型變量,所以輸入時,用了d格式符。
(3)&a,&b中的"&"是"地址運算符",&a是指a在內(nèi)存中的地址。上面scanf
函數(shù)的作用是:將a、b的值放到a,b在內(nèi)存的地址單元中去。所以,在該問題中,若
輸入:35/
則輸出結果為a+b=8
4.整型數(shù)據(jù)的輸出
整型數(shù)據(jù)的輸出用printf函數(shù)來實現(xiàn)。如printf("a+b=%d",c);
printf函數(shù)的格式為:
printf(格式控制,輸出表列);
(1)格式控制和輸入函數(shù)scanf的格式控制基本一致。
(2)輸出表列是需要輸出的數(shù)據(jù)或表達式。
(3)在輸出整型數(shù)據(jù)時,格式字符如下:
①%d,按整型數(shù)據(jù)的實際長度輸出。
②%md,m為輸出字段的寬度,如果輸出數(shù)據(jù)的位數(shù)小于m則左端補以空格,若大
于m,則按實際位數(shù)輸出。例如:
printf("%4d,%4d",a,b);
若a=123,d=12345,則輸出結果為:V123,12345(注:V表示空格字符,下同)
③%ld,輸出長整型數(shù)據(jù)。如:
longa=135790;
printf("%81d",a);
輸出結果為:VV135790
一個int型數(shù)據(jù)可以用%d或%Id格式輸出。
④%u,輸出unsigned型數(shù)據(jù),即無符號類型,如unsignedu;那么u在輸出的時
候,應該用u格式控制符,那么輸出時應使用語句:
printf("%u",u);
例2.1從鍵盤輸入任意一個整數(shù),輸出這個數(shù)的平方的值。
main()
{inta;
longs;
scanf(,z%d",&a);
s=a*a;
printfs=%ld\n",s);}
2.3實型數(shù)據(jù)
一、實型常量
實數(shù)在C語言中,又稱浮點數(shù)。實數(shù)有兩種表示形式:
1.十進制數(shù)形式。由數(shù)字和小數(shù)點組成(注意必須有小數(shù)點)。
2.指數(shù)形式。但注意字母e(或E)之前必須有數(shù)字,且e后面指數(shù)必須為整數(shù),
如e3、2.Ie3.5、.e3、e都不是合法的指數(shù)形式。
二、實型變量
在本節(jié)問題中,已知兩個數(shù)是實數(shù),那么兩數(shù)之和與積也必定為實數(shù),所以需要設
四個實型變量,分別為a,b,sum,mul。定義語句為:
floata,b,sum,mul;
C實型變量分為:
1.單精度型(float型)
一個float型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),在TURBOC中,單精度實數(shù)的范
圍約為一1038?1038之間并提供7位有效位;小于10-38的數(shù)被處理成零值。
2.雙精度型(double型)
一個double型數(shù)據(jù)在內(nèi)存中占8個字節(jié),雙精度實數(shù)的數(shù)值范圍約為一10308?
10308o并提供15?16位有效位,具體精確多少位與機器有關;小于10-308的數(shù)被處
理成零值。
三、實型數(shù)據(jù)的輸入和輸出
1.實型數(shù)據(jù)的輸入
實型數(shù)據(jù)的輸入也用scanf函數(shù)實現(xiàn)的,格式符使用的是f字符,以小數(shù)的形式輸
入數(shù)據(jù),也可以使用e字符,以指數(shù)的形式輸入數(shù)據(jù)。
如本節(jié)問題中的scanf("%f%f/z,&a,&b);
2.實型數(shù)據(jù)的輸出
實型數(shù)據(jù)的輸出用printf函數(shù)實現(xiàn),格式符使用f字符,以小數(shù)的形式輸出數(shù)據(jù)。
輸出時應注意:
(1)%f:不指定字段寬度,整數(shù)部分會全部輸出,并輸出6位小數(shù)。
(2)/m.n:指定輸出數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,則左
端補空格。
(3)%-m.n:指定輸出數(shù)據(jù)共占m歹U,其中有n位小數(shù)。如果數(shù)值長度小于m,則
右端補空格。
(4)若是雙精度型變量輸出時應用%If格式控制,如doublef;輸出時應使用語
句:printf("機f",f);
2.4字符型數(shù)據(jù)
一、字符常量
1.字符常量
C語言的字符常量是用一對單引號括起來的單個字符。如:‘a(chǎn)'、’b'、’x'、’D'、'?
‘、飛’等都是字符常量。
2.轉義字符
除了這樣的字符常量外,C語言還允許用一種特殊形式的字符常量,就是以一個‘\
'開頭的字符序歹U.例如,前面已經(jīng)用至U,在printf函數(shù)中的‘\n',它表示一個"換行"
符。
例2.2字符常量的輸出。
printf("abc\n\tde");
)
運行結果:abc
de
二、字符變量
在本節(jié)問題中,設了兩個字符型變量cl和c2。定義形式如下:
charcl,c2;
它表示cl和c2為字符型變量,各可以放一個字符??梢杂孟旅嬲Z句對cl,c2賦
值:
cl='a';;c2='b';
因此在內(nèi)存中一個字符變量只占一個字節(jié)。
三、字符數(shù)據(jù)的存儲形式
字符在內(nèi)存中存儲的不是字符本身,而是它的ASCII碼,例如字符'a'的ASCH碼
為97,'b'的ASCH碼為98。那么字符的存儲形式與整數(shù)的存儲形式是類似的。C語言
使字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。
例2.3main()
charal,a2;
al=97;a2=98;
printf("%c%c\n",al,a2);
printf("%d%d\nz/,al,a2);
)
程序運行時輸出如下:
ab
9798
字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的,但應該注意字符數(shù)據(jù)只占一個字節(jié),它只能存放
0-255范圍內(nèi)的整數(shù)。
例2.4大小寫字母的轉換
main()
{
charal,a2;
al='a';a2='b';
al=al-32;a2=a2—32;
printf("%c%c\nz,,al,a2);
)
運行結果為:
AB
程序的作用是將兩個小寫字母a和b轉換成大寫字母A和B。'a'的ASCII碼為97,
而'A'為65,'b'為98,'B'為66。從ASCH碼表中可以看到每一個小寫字母比它相應的
大寫字母的ASCH碼大32o
四、字符型數(shù)據(jù)的輸入和輸出
1.getchar函數(shù)和putchar函數(shù)
例2.5#include"stdio.h"
main()
charc;
c=getchar();
putchar(c);
)
在運行時,如果從鍵盤輸入字符'a'
a/(輸入'a'后,按回車鍵)
a(輸出變量c的值'a')
注意:getchar()只能接收一個字符。putchar()也只能向終端輸出一個字符。
在使用getchar函數(shù)和putchar函數(shù)時,程序的首部需使用預編譯命令"#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"格式控制,
用來輸入輸出單個字符。
注意,在用"枇"格式輸入字符時,空格將以有效字符輸入:
scanf("%c%c%c",&cl,&c2,&c3);
若輸入aVbVcZ
則將字符'a'送給cl,字符空格'V'送給c2,因為空格也是一個有效字符,字符'b'
送給c3。物只需要讀入一個字符,用了空格做間隔,所以會出現(xiàn)這樣的問題。
五、字符串常量
字符串常量是用雙引號括住的字符序列。如:"Howdoyoudo"CHINA","
a"等都是字符串常量。
可以輸出一個字符串,如printf("Howdoyoudo.);
注意:不要將字符常量與字符串常量混淆?!痑'是字符常量,"a"是字符串常量,
二者不同。
c規(guī)定:在每個字符串的結尾加一個“字符串結束標志”以便系統(tǒng)據(jù)此判斷字符串
是否結束。以‘\0'作為字符串結束標志。'\0'是ASCII碼為0的字符,從ASCH碼表中
可以看到ASCII碼為0的字符是“空操作字符”不引起任何操作。
2.5變量的初始化
變量的初始化,就是在定義變量的同時給變量賦予初值??梢圆捎谜f明變量的類型,
然后再賦值的方法,也可以對變量類型說明的同時,給變量賦初值。
1.先定義后賦值
inta,b,c;
a=2;
b=5;
c=10;
2.定義和賦值同時進行
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;
初始化不是在編譯階段完成的,而是在程序運行時執(zhí)行本函數(shù)時賦以初值的。相當
于一個賦值語句。例如:
inta=10;相當于:inta;a=10;
又如:
inta,b,c=20;相當于:inta,b,c;c=20;
2.6運算符和表達式
一、算術運算符和表達式
例2.7已知正方形的長和寬,求正方形的周長。
[分析]正方形的周長公式為:1=2*(a+b),已知正方形的長和寬可以計算周長。
main()
inta,b,1;
a=3;
b=4;
1=2*(a+b);
printf(z/l=%d\n,z,1);
)
1.基本的算術運算符
+(加法運算符,或正值運算符)
-(減法運算符,或負值運算符)
*(乘法運算符)
/(除法運算符)
%(模運算符,或求余運算符)
注意:(1)兩個整數(shù)相除結果為整數(shù)。但是如果相除的兩個數(shù)中,至少有一個為實
數(shù),則結果為帶小數(shù)的商。
(2)%模運算符,要求操作數(shù)均為整型數(shù)據(jù),如7%4的值為3。
2.算術表達式
用算術運算符和括號將操作數(shù)連接起來的,符合C語法規(guī)則的式子,稱C算術表達
式。
在表達式求值時,按運算符的優(yōu)先級別高低次序執(zhí)行。
例如:10+'a'+1.5—8765.12*'b'
在進行運算時,不同類型的數(shù)據(jù)要先轉換成同一類型,然后進行運算。
3.強制類型轉換
可以用強制類型轉換運算符將一個表達式轉換成所需類型。例如:
(double)a(將a轉換成double類型)
(int)(x+y)(將x+y的值轉換成整型)
(float)(5%3)(將5%3的值轉換成float型)
一般形式為:
(類型名)(表達式)
注意:(1)類型名應用括號括起來。如(int)(x+y)
(2)已知floatx;對于(int)x,x仍然是float類型,而整個表達式(int)x
為整型。
二、賦值運算符和賦值表達式
1.賦值符號
賦值符號"="就是賦值運算符,將一個數(shù)據(jù)賦給一個變量。如"a=3"。
2.類型轉換
如果賦值運算符兩側的類型不一致,要進行類型轉換。
(1)將實型數(shù)據(jù)賦給整型變量時,舍棄實數(shù)的小數(shù)部分。如i為整型變量,執(zhí)行”
i=3.56"的結果是使i的值為3。
(2)將整型數(shù)據(jù)賦給實型變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。
3.復合的賦值運算符
常用的賦值運算符有以下幾種:
+=,—=,*=,/=,%=
例如:
a+=3等價于a=a+3
x*=y+8等價于x=x*(y+8)
x%=3等價于x=x%3
4.賦值表達式
由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式"。例
如:
a=b=c=5(賦值表達式值為5,a、b、c值均為5)
a=5+(c=6)(表達式值為11,a值為11,c的值為6)
a=(b=4)+(c=6)(表達式值為10,a值為10,b等于4,c等于6)
三、逗號運算符和逗號表達式
逗號運算符將兩個表達式連接起來。如:
3+5,6+8
稱為逗號表達式。逗號表達式的格式為:
表達式1,表達式2
逗號表達式的求解過程是:先求解表達式1,再求解表達式2,整個逗號表達式的
值是表達式2的值。例如逗號表達式a=3*5,a*4,先求解a=3*5,得a的值為15,
然后求解a*4,得60。整個逗號表達式的值為60。
課堂練習綜合實例例1輸入三角形的三條邊長,求三角形面積。(為了簡單起見,
設輸入的三邊長a,b,c能構成三角形)
#include"math,h"
main()
floata,b,c,s,area;
scanf("%f,%f,%f,z,&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n,z,area);
)
運行情況如下:
3,4,6
a=3.00,b=4.00,c=6.00,s=6.50
area=5.33
例2從鍵盤輸入一個大寫字母,要求改用小寫字母輸出。
Sinclude"stdio.h,z
main()
charcl,c2;
cl=getchar();
printf("%c,%d\nw,cl,cl);
c2=cl+32;
printf("%c,%d\n",c2,c2);
)
運行情況如下:
A/
A,65
a,97
本章小結
本章在講解順序結構程序設計方法的同時,介紹了三種數(shù)據(jù)類型。
1.整型數(shù)據(jù)。主要了解整型數(shù)據(jù)的定義方法,根據(jù)使用整數(shù)的范圍選用定義整數(shù)
變量的類型。掌握整型數(shù)據(jù)的輸入輸出方法,主要使用d格式控制符。
2.實型數(shù)據(jù)。主要掌握實型變量的不同定義方法,單精度數(shù)和雙精度數(shù)的表示范
圍,實型數(shù)據(jù)的輸入輸出方法,主要使用f格式控制符。
3.字符型數(shù)據(jù)。是由一對單引號括起來的單個字符,要注意,字符與字符串的區(qū)
別。
還講解了各種運算符和表達式,主要掌握算術運算符,在混合運算中,要按照運算
符的優(yōu)先級,結合方向運算。
作業(yè):
1.編程序,用getchar函數(shù)讀入兩個字符給cl、c2,然后分別用putchar函數(shù)和
printf函數(shù)輸出這兩個字符。上機運行此程序,比較putchar和printf函數(shù)輸出字符
的特點。
2.試編寫程序,從鍵盤輸入一個大寫字母,要求改用小寫字母輸出。
授課日期:第7周周一5一8周三1一2第8周周一5一8周三1一2
第9周周一5一8周三1一2
授課類型:演示、講解、練習、輔導課時:18
教學內(nèi)容:1、關系運算符和關系表達式
2、邏輯運算符和邏輯表達式
3、if語句
4、switch語句
教學目標:1、掌握關系運算表達式
2、掌握邏輯運算表達式
3、熟練掌握if語句的使用
4、掌握switch語句
教學重點:1、關系運算符和關系表達式
2、邏輯運算符和邏輯表達式
3、if語句的使用
教學難點:1、掌握switch語句的使用
2、if語句的嵌套使用
教學過程:內(nèi)容講授一?學生實踐一?作業(yè)布置~~?新課內(nèi)容預告
教學手段:多媒體教學軟件+個別輔導
作業(yè):給學生寫評語,若學生成績在60?69分,則打印“及格”,70?
89分打印“良好”,90?100分打印“優(yōu)秀”,60分以下打印“不
及格”,請分別用if-else語句和switch語句編程。
第3章選擇結構程序設計
選擇結構,或稱分支結構,是指對所給定的條件進行判斷,然后決定選擇執(zhí)行不同
的操作。本章主要介紹如何用c語言實現(xiàn)選擇結構。c語言的選擇語句有兩類,一類是
if語句,另一類是switch語句,本章將分別進行介紹。在介紹選擇結構程序設計的同
時,還要介紹關系運算符和關系表達式,邏輯運算符和邏輯表達式等內(nèi)容。
3.1關系運算符和關系表達式
一、關系運算符及其優(yōu)先次序
1.關系運算符
C語言提供6種關系運算符:
①<(小于)
②<=(小于或等于)
③>(大于)
④>=(大于或等于)
⑤==(等于)
⑥!=(不等于)
優(yōu)先級相同(高)
優(yōu)先級相同(低)
2.關于優(yōu)先次序:
(1)前4種關系運算符的優(yōu)先級別相同,后兩種也相
同。前4種高于后2種。例如,’>‘優(yōu)先于'==\而'>'與'〈'優(yōu)先級相同。
(2)關系運算符與算術運算符、賦值運算符的優(yōu)先級關系如下:
算術運算符(高)一關系運算符(中)-賦值運算符(低)
例如:a>b+c等效于a>(b+c)
a==b<c等效于a==(b<c)
a=b>=c等效于a=(b>=c)
(3)關系運算符的結合方向是“自左向右”。
注意:“等于”關系的運算符“==”和“不等于”關系的運算符“!=”與數(shù)學中
的表示方法不同。例如,欲判斷x是否等于0,若寫成:x=0則表示把0賦值給變量x,
正確的寫法為:x==0o
二、關系表達式
1.關系表達式
用關系運算符將兩個表達式(算術表達式、關系表達式、邏輯表達式、賦值表達式、
字符表達式等)連接起來的式子,稱關系表達式。
例:x>y,a+b〈18,'a'〈'b'都為合法的關系表達式。
2.關系表達式的值
關系表達式的值是一個邏輯值,即“真”或“假工
在C語言中:常用1表示“真”,用0表示“假”。
例如,a=5,b=2,則:
關系表達式a>b的值為“真”,表達式的值為E
關系表達式a==b的值為“假”,表達式的值為0。
可以將關系表達式的運算結果(0或1)賦給一個整型變量或字符型變量,如a=4,b=l,
下面的賦值語句是將1賦給變量c:
c=a>bc的值為1
例3.1試求X=5>3>1的值。
[分析]X=5>3>1相當于x=(5>3)>1=1>1=0
[說明]根據(jù)關系運算符的優(yōu)先級別高于賦值運算符。
3.2邏輯運算符和邏輯表達式
一、邏輯運算符及其優(yōu)先次序
1.邏輯運算符
C語言提供了3種邏輯運算符:
①!邏輯非
②&&邏輯與
③II邏輯或
其中“&&”和“|”為“雙目(元)運算符”,要求有兩個操作數(shù)(即運算量),如
(a<b)&&(x<=y),(a<b)|(x〈=y)?!?!”是“一目(元)運算符”,只需一個操作數(shù),如!a
或!(a〈b)o
2.關于邏輯運算符的優(yōu)先次序:
(1)邏輯運算符的優(yōu)先次序如下:
!(非)-&&(與)一I(或),即“!”為三者中最高的。
(2)邏輯運算符中的“&&”和“I”低于關系運算符,“!”高于算術運算符。
例如:
(a>=b)&&(x>y)可寫成:a>=b&&x>y
(a==b)|(x==y)可寫成:a==b|x==y
(3)邏輯運算的結合方向是“自左向右二
二、邏輯表達式
1.邏輯表達式
用邏輯運算符將關系表達式或邏輯量連接起來的式子就是邏輯表達式。
例如:a&&b*c,(a+b)|(c<0)均為邏輯表達式。
2.邏輯表達式的值
C語言編譯系統(tǒng)在給出邏輯運算時,以數(shù)值1代表“真”,以0代表“假”,但在判
斷一個量是否為“真”時,以非0代表“真”,即將一個非0的數(shù)值認為是“真”,以0
代表“假”。
注意:(1)參與邏輯運算的量不但可以是0和1,或者是0和非0的整數(shù),也可以
是任何類型的數(shù)據(jù),如字符型、實型或指針型。
(2)如果在一個表達式中不同位置上出現(xiàn)數(shù)值,應區(qū)分哪些是作為數(shù)值運算或關
系運算的對象,哪些作為邏輯運算的對象。
(3)在邏輯表達式的求解中,并不是所有邏輯運算符都需要執(zhí)行,有時只需執(zhí)行
一部分運算符就可以得到邏輯表達式的最后結果。例如:
①x&&y&&z
只有x為真時,才需要判斷y的值。只要x為假,就立即得出整個表達式為假。
②xIy|z
只要x為真(非0),就不必判斷y和x;當x為假,才判斷y;x和y都為假才判
斷z。
3.3if語句
if語句是選擇結構的一種形式,又稱為條件分支語句。它是通過對給定條件的判斷,
來決定所要執(zhí)行的操作。C語言中提供了3種形式的if語句:if語句、if-else語句和
if-else-if語句。
一、問題的提出
[問題]比較兩個數(shù)的大小,將兩個數(shù)中較大者賦給m。
[分析]要比較兩個數(shù)的大小就要用到關系表達式,定義兩個變量a,b,如果a>b
則將a的值賦給m,若a<b則將b的值賦給口,這里我們將用到if語句來實現(xiàn)該項功能。
main()
inta,b,s;
a=5;b=10;
if(a>b)m=a;
elsem=b;
printf("m=%d\n”,m);
程序運行結果:
m=10
[說明]在該問題中我們借用了if語句,通過條件來判斷應該執(zhí)行哪條語句,充分
體現(xiàn)出選擇結構程序設計的思想。
二、if語句的三種形式
1.if語句
if語句是條件分支語句最基本的形式。
格式:if(表達式)語句
功能:首先計算表達式的值,若表達式的值為“真”(非0),則執(zhí)行語句,若表達
式的值為“假”(0),不執(zhí)行語句。其流程圖3.1(a)所示。
例如:
if(x>y)printfx);
2.if-else語句
if-else語句是條件分支語句的標準使用形式。
格式:if(表達式)語句1
else語句2
功能:首先計算表達式的值,若表達式的值為“真”(非0),則執(zhí)行語句1,若表
達式的值為"假”(0),則執(zhí)行語句2。
例如:
if(x>y)printf(“肌T,x);
elseprintf("/d",y);
3.if-else-if語句
前面兩種if語句一般都用于兩個分支的選擇結構。對于多個分支選擇時,可采用
if-else-if語句。
格式:
if(表達式1)語句1
elseif(表達式2)語句2
elseif(表達式3)語句3
I
I
I
elseif(表達式n-1)語句n-1
else語句n
功能:首先計算表達式1的值,若為“真”(非0),執(zhí)行語句1,否則進行下一步
判斷;若表達式2為真,執(zhí)行語句2,否則進行下一步判斷……最后所有表達式都為假
時,執(zhí)行語句n。
例如:
if(score>89)grade='A';
elseif(score>79)grade='B';
elseif(score>69)grade='C';
elseif(score>59)grade—D';
elsegrade='E';
關于if語句的說明:
(1)if后面圓括號中的表達式一般是關系表達式或邏輯表達式,用于描述選擇結
構的條件,但也可以是任意的數(shù)值類型表達式(包括整型、實型、字符型、指針型數(shù)據(jù)
表達式)。
例如:if(2)printf("OK!");
是合法的,因為表達式的值為2,非0,按“真”處理,執(zhí)行結果輸出“0K!”
(2)第二種、第三種格式的if語句中,在每個else前面有一個分號,整個語句
結束處也有一個分號。這是由于分號是C語句中不可缺少的部分,這個分號是if語句
中的內(nèi)嵌語句所需要的。
(3)在if和else后面可以只含有一個內(nèi)嵌的操作語句,也可以含有多個操作語
句,此時應用大括號“{}”將幾個語句括起來,構成一個復合語句,注意:復合語句
的“{”和“}"之后不能加分號。
例3.2輸入兩個實數(shù),按代數(shù)值由小到大輸出這兩個數(shù)。
main()
(
floata,b,c;
scanf(〃%f,%fz,,&a,&b);
if(a>b)
(
t=a;a=b;b=t;
)
printfC%5.2f,%5.2f〃,a,b);
)
程序運行結果:
2.2,-5.7/
-5.70,2.20
二、if語句的嵌套
在if語句中有包含一個或多個if語句稱為if語句的嵌套。要處理多重分支選擇
結構問題,除了用if-else-if語句外,還可以利用if語句的嵌套來實現(xiàn)。
說明:(1)if和else的配對規(guī)則為:else總是與它上面的最近的未配對的if配
對。
(2)if與else的個數(shù)最好相同,從內(nèi)層到外層一一對應,以避免出錯。
(3)在嵌套內(nèi)的if語句既可以是if語句形式,也可以是if-else語句形式,但
最好使內(nèi)嵌if語句也包含else部分。如果if與else的個數(shù)不同,可以用花括號來確
定配對關系。例如:
if()
{if()語句1}
else語句2
這時“{}”限定了內(nèi)嵌if語句的使用范圍,因此else與第一個if配對。
例3.3有一函數(shù):
「-1(x<0)
0(x=0)
、1(x>0)
編一程序,輸入一個x值,輸出y值。
main()
{
intx,y;
scanf("&I”,&x);
if(x<0)y=-l;
elseif(x==0)y=0;
elsey=l;
printf("x=%d,y=%d\n”,x,y);
)
三、條件運算符
條件運算符由兩個符號“?”和“:”組成,要求有3個操作對象,稱三目(元)
運算符,它是C語言中唯一的三目運算符。條件表達式的格式為:
表達式1?表達式2:表達式3
min=(a<b)?a:b;
說明:(1)通常情況下,表達式1是關系表達式或邏輯表達式,用于描述條件表達
式中的條件,表達式2和表達式3可以是常量、變量或表達式。
例如:(x==y)?'T':'F'
(a>b)?printf(/z%dz/,a):printf(級d”,b)
等均為合法的條件表達式。
(2)條件表達式的執(zhí)行順序:先求解表達式1,若為非0(真)則求解表達式2,
此時表達式2的值就作為整個條件表達式的值。若表達式1的值為0(假),則求解表達
式3,表達式3的值就是整個條件表達式的值。
min=(a<b)?a:b;
執(zhí)行結果就是將a和b二者中較小的賦給min。
(3)條件表達式的優(yōu)先級別僅高于賦值運算符,而低于前面介紹過的所有運算符。
因此,
min=(a<b)?a:b;
可直接寫成:
min=a<b?a:b;
如果有a>b?a:b+l等效于a>b?a:(b+1),而不等效于(a>b?a:b)+l
(4)條件運算符的結合方向為“自右至左”。例如:x>O?l:x〈O?T:O等效于
x>O?l:(x<O?-l:O)
(5)表達式1、表達式2和表達式3的類型可以不同,此時條件表達式的值的類
型為它們中較高的類型。
例3.4輸入一個字符,判別它是否大寫字母,如果是,將它轉換成小寫字母;如
果不是,不轉換。然后輸出最后得到的字符。
main()
(
charch;
printf("Pleaseenteracharcter:\n");
scanf("祝",&ch);
ch=(ch>='A'&&ch<='
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024建筑工程居間協(xié)議書范本
- 2024年魚塘綜合利用合同3篇
- 2024年版機動車標準買賣合同模板版
- 《代謝綜合征的護理》課件
- 2025版新材料研發(fā)人員勞動合同范文本(二零二五年度)3篇
- 2024水電工程環(huán)境保護與環(huán)保政策咨詢合同3篇
- 2024年度人工智能擔保借款合同模板3篇
- 2025版貨物買賣合同標的詳細描述3篇
- 2024房屋投資入股協(xié)議范本
- 2024年高端設備制造與技術升級合同
- 廣東省深圳市南山區(qū)2023-2024學年六年級上學期期末科學試卷
- 2023北京東城區(qū)初二上期末考歷史試卷及答案
- 空氣、物表地面消毒登記記錄
- 急性腦梗死診治指南
- 檢察院分級保護項目技術方案
- 土木工程建筑中混凝土裂縫的施工處理技術畢業(yè)論文
- 水電站工程地質勘察報告
- 電站屏柜改造安裝二次工程施工組織設計
- DB42∕T 1795-2021 微動勘探技術規(guī)程
- 大潤發(fā)的企業(yè)文化
- 兒童劇劇本─三只小豬
評論
0/150
提交評論