版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
任務(wù)一重點難點分析:了解程序和程序設(shè)計語言,c語言的發(fā)展和特點,初步掌握c語言的構(gòu)成和格式特點。
C程序的構(gòu)成(1)C程序由函數(shù)構(gòu)成,函數(shù)是C程序的基本單位。每個C程序由一個或多個函數(shù)組成,其中每一個C程序都必須有,且只能有一個main函數(shù)。函數(shù)是C程序的基本單位。
(2)一個函數(shù)由函數(shù)首部和函數(shù)體兩部分構(gòu)成函數(shù)首部涉及函數(shù)類型、函數(shù)名、函數(shù)的參數(shù)說明等。例如:intmax(intx,inty)函數(shù)體是函數(shù)首部下面用一對{}括起來的部分。一般涉及變量定義部分和語句執(zhí)行部分。變量定義部分定義函數(shù)內(nèi)部所用變量,語句執(zhí)行部分規(guī)定函數(shù)所要執(zhí)行的動作。(3)不管main函數(shù)在整個程序中的位置如何,C語言程序總是從main函數(shù)開始執(zhí)行的,主函數(shù)執(zhí)行完畢,整個程序結(jié)束運營。(4)書寫格式自由,一行可以寫多個語句,一個語句也可以寫在多行上,但每條語句或數(shù)據(jù)定義的最后必須有一個分號“;”,作為語句的結(jié)束標(biāo)志。(5)可用“/*……*/”對C程序中的任何部分作注釋。(6)預(yù)解決命令通常應(yīng)放在源文獻(xiàn)或源程序的最前面。(7)VisualC++6.0是集編輯、編譯鏈接和執(zhí)行于一體的軟件。(8)C語言源文獻(xiàn)的擴(kuò)展名是.c。任務(wù)二本章重點:掌握變量的定義,掌握各種運算符的特點及表達(dá)式的對的引用以及各種數(shù)據(jù)類型之間的互相轉(zhuǎn)換。本章難點:各種數(shù)據(jù)類型的存儲形式、互相轉(zhuǎn)換及各種表達(dá)式的對的引用1數(shù)據(jù)類型
C語言中提供了豐富的數(shù)據(jù)類型,其中整型、實型和字符型是基本數(shù)據(jù)類型,通過基本數(shù)據(jù)類型可再構(gòu)造其他更復(fù)雜的數(shù)據(jù)類型。1.1標(biāo)記符
標(biāo)記符:用來標(biāo)記變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文獻(xiàn)名的有效字符序列。
C語言規(guī)定標(biāo)記符只能由字母、數(shù)字、下劃線三種字符組成,并且第一個字符必須是字母或下劃線,同時C語言嚴(yán)格區(qū)分大小寫。標(biāo)記符分三類:關(guān)鍵字、預(yù)定義符和用戶標(biāo)記符1.2變量注意:變量名、變量值、變量存儲空間(變量內(nèi)存單元)三者的區(qū)別與關(guān)系1.變量的定義
變量必須先定義再使用。
【格式】:數(shù)據(jù)類型
變量名列表;2.變量的賦值
即將某一數(shù)據(jù)存入到變量的內(nèi)存單元中。數(shù)據(jù)稱為變量值。1.3常量
常量分為:直接常量和符號常量1.直接常量
直接在程序中使用的常量,根據(jù)字面意義可進(jìn)行區(qū)分。2.符號常量
【定義格式】#define
符號常量標(biāo)示符
常量值
例:#define
PI
3.14
注意:符號常量與變量不同,它的值在其作用域內(nèi)不能改變,也不能再被賦值。
使用符號常量的好處是:含義清楚;能做到“一改全改”。2.整型數(shù)據(jù)2.1整型常量
C語言中,整型常量用來表達(dá)數(shù)學(xué)中的整數(shù),可以用十進(jìn)制、八進(jìn)制或十六進(jìn)制的形式表達(dá),但沒有二進(jìn)制表達(dá)形式。2.2整型變量1.分類歸納起來共6類(注意分派的字節(jié)數(shù)),即:
有符號基本整型
[singned]int
有符號短整型
[singned]short[int]
有符號長整型
[singned]long[int]
無符號基本整型
[unsigned]int
無符號短整型
[unsigned]short[int]
無符號長整型
[unsigned]long[int]2.整型數(shù)據(jù)的存放形式
C語言規(guī)定一個有符號整數(shù)在內(nèi)存中是以補碼形式存放的。3.整型數(shù)據(jù)的溢出
在應(yīng)用中根據(jù)實際情況來選擇數(shù)據(jù)類型,否則不能對的表達(dá)。3實型數(shù)據(jù)3.1實型常量
C語言中,實型常量用來表達(dá)帶有小數(shù)點的實數(shù),有兩種表達(dá)形式:(1)
十進(jìn)制小數(shù)形式:如,4.6、-1.23等(2)
指數(shù)形式:由尾數(shù)、字母e或E、指數(shù)三部分組成;如:3.25E23.2實型變量1.分類:單精度(float)、雙精度(double)、長雙精度(longdouble)2.實型數(shù)據(jù)的舍入誤差
使用時注意不同類型的有效位問題,避免出現(xiàn)舍入誤差4字符型數(shù)據(jù)4.1字符型常量
C語言規(guī)定用單引號定界的單個字符,及單引號定界的轉(zhuǎn)義字符是字符常量。
注意:轉(zhuǎn)義字符仍然代表一個字符。4.2字符型變量
一個字符型變量在內(nèi)存占用一個字節(jié)的空間,存放的是該字符的ASCII碼。4.3字符型數(shù)據(jù)與整型數(shù)據(jù)的混合運算
因字符型數(shù)據(jù)內(nèi)存存放的是該字符的ASCII碼表現(xiàn)形式與整型數(shù)據(jù)相似,所以C規(guī)定兩者可以混合運算。4.4字符串常量
C語言中用雙引號括起來的多個字符。
C語言規(guī)定:存放字符串時,為其分派的存儲空間比其實際字符個數(shù)多1,用于存放串結(jié)束標(biāo)志字符‘\0’。所以:‘a(chǎn)’在內(nèi)存中占1個字節(jié);”a”在內(nèi)存中占2個字節(jié)。5運算符和表達(dá)式
掌握:各種運算符的功能、對運算對象的規(guī)定、優(yōu)先級別和結(jié)合性5.1基本算術(shù)運算和表達(dá)式1.基本算術(shù)運算符
涉及:+(加)、-(減)、*(乘)、/(除)、%(求余)+(正號)、-(負(fù)號)
注意:(1)
/:參與運算的兩個運算對象假如都是整數(shù),則結(jié)果取整,例:5/2的值是2
假如參與運算的運算對象中有實型數(shù)據(jù),則結(jié)果為實型,例5.0/2的值是2.5
(2)
%:規(guī)定參與運算的兩個運算對象必須是整型2.算術(shù)表達(dá)式:運算對象通過運算符連接起來的式子成為表達(dá)式,表達(dá)式值的含義。3.運算符的優(yōu)先級:(詳見教材附錄)
由高到底依次是:(+、-)正負(fù)號運算同級、%、(/、*)同級、(+、-)同級5.2自增、自減運算符
1.++、--是單目運算,只能對變量進(jìn)行自增1或自減1的運算
2.注意++、--作為前綴(先變后用)或后綴(先用后變)的區(qū)別
3.其結(jié)合性是右結(jié)合性5.3強制類型轉(zhuǎn)換
【格式】(類型名)(表達(dá)式)注意表達(dá)式左右括號的作用
【功能】將表達(dá)式的值強制轉(zhuǎn)換成前面括號中規(guī)定的類型
例:(float)(5/2)的值是2.0
(float)5/2的值是2.5任務(wù)三本章重點:掌握C語言常用的輸入/輸出函數(shù)以及順序結(jié)構(gòu)程序設(shè)計的一般方法。1.順序結(jié)構(gòu)程序概述
順序結(jié)構(gòu)程序是指程序中的語句完全按照它們的排列順序執(zhí)行。一般由四個部分組成:定義變量部分;已知變量賦值或輸入部分;未知變量求值部分;輸出結(jié)果部分。2.順序結(jié)構(gòu)程序的編寫方法,與求解物理題很相似。變量相稱于物理量,有幾個物理量就定義幾個變量。并明確哪些變量是已知的,哪些變量是未知的。給出已知變量的值。若已知變量有明確的值,則用賦值語句給出;否則用輸入語句獲得。根據(jù)已知變量與未知變量的關(guān)系,用賦值語句求得未知變量的值。輸出求得的未知變量的值。3.C語句的分類賦值語句賦值語句是在賦值表達(dá)式加上分號構(gòu)成的表達(dá)式語句。其一般形式為:變量=表達(dá)式;,功能是把表達(dá)式的值賦給變量。賦值語句拓展之后的一般形式為:變量=變量=…=表達(dá)式;。在變量說明中給變量賦初值和賦值語句有些不同,給變量賦初值是變量說明的一部分,在編譯的時候執(zhí)行,賦初值后的變量與其后的其他同類型變量之間仍必須用逗號間隔,而賦值語句則必須用分號結(jié)尾。(2)
復(fù)合語句
把多個語句用“{}”括起來組成一個語句稱復(fù)合語句。在程序中應(yīng)把復(fù)合語句當(dāng)作是單條語句。空語句4.數(shù)據(jù)的輸入輸出C語言自身不提供輸入輸出語句,輸入輸出語句是由某些庫函數(shù)實現(xiàn)。數(shù)據(jù)的輸出單字符輸入函數(shù)putchar一般形式:putchar(字符表達(dá)式);。所在頭文獻(xiàn):stdio.h.功能:向終端輸出一個字符(即可以是可顯示的字符,又可以是控制字符或其他轉(zhuǎn)義字符)。格式輸入函數(shù)printf格式:printf(格式控制,輸出項列表);,輸出項列表可以不需要。所在頭文獻(xiàn):stdio.h.功能:按照用戶指定的格式向系統(tǒng)隱含的輸出設(shè)備輸出若干個任意類型的數(shù)據(jù)。數(shù)據(jù)的輸入單字符輸入函數(shù)getchar一般形式:getchar();。所在頭文獻(xiàn):stdio.h.功能:從系統(tǒng)隱含的輸入設(shè)備輸入一個字符,只能接受一個輸入,假如有多個輸入,只有第一個有效。getchar的返回值為輸入的字符。格式輸入函數(shù)scanf格式:scanf(格式控制,地址項列表);。所在頭文獻(xiàn):stdio.h.功能:按格式控制所指的格式從標(biāo)準(zhǔn)輸入設(shè)備輸入數(shù)據(jù)并賦給指定的變量。任務(wù)四本章重點:掌握關(guān)系表達(dá)式、邏輯表達(dá)式的用法,if語句、switch語句的基本用法和語法格式,各種數(shù)據(jù)類型之間的互相轉(zhuǎn)化,以及選擇結(jié)構(gòu)程序設(shè)計的基本方法。4.1關(guān)系表達(dá)式與邏輯表達(dá)式1、C語言中的關(guān)系運算符
①<(小于)
②<=(小于或等于)
③>(大于)④>=(大于或等于)
⑤==(等于)
⑥!=(不等于)2、關(guān)系表達(dá)式和關(guān)系表達(dá)式的值
由關(guān)系運算符組成的表達(dá)式稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”。在C語言中,以1代表“真”。以0代表“假”。3、C語言中的邏輯運算符
①&&(邏輯“與”)
②||(邏輯“或”)
③!(邏輯“非”)4、邏輯表達(dá)式和邏輯表達(dá)式的值
由邏輯運算符和運算對象組成的表達(dá)式稱為邏輯表達(dá)式。邏輯表達(dá)式的運算結(jié)果只有兩種:1(“真”)或0(“假”)。應(yīng)當(dāng)注意,在判斷一個量是否為“真”時,卻是以非0代表“真”,以0代表“假”。4.2if語句1、含else子句的if語句語句形式:
if(表達(dá)式)
語句1
else
語句2執(zhí)行過程:
先計算if后面圓括號中的表達(dá)式的值,假如表達(dá)式的值為非零,執(zhí)行if子句,然后跳過else子句,去執(zhí)行if語句后的下一個語句;假如表達(dá)式的值為零,跳過if子句,去執(zhí)行else子句,接著去執(zhí)行if語句后的下一個語句。2、不含else子句的if語句語句形式:if(表達(dá)式)
語句執(zhí)行過程:
先計算if后面圓括號中的表達(dá)式的值,假如表達(dá)式的值為非零(“真”),則執(zhí)行其后的if子句,然后執(zhí)行if語句后的下一個語句;假如表達(dá)式的值為零(“假”),則跳過if子句,直接執(zhí)行if語句后的下一個語句。
3、嵌套的if語句
if子句和else子句中可以是任意合法的C語句,當(dāng)然也可以是if語句,通常稱此為嵌套的if語句。內(nèi)嵌的if語句既可以嵌套在if子句中,也可以嵌套在else子句中。
在書寫嵌套的if語句時,為了提高程序的可讀性盡量按層縮進(jìn)的書寫格式來寫自己的程序。
值得注意的是在執(zhí)行嵌套的if語句的過程中,要特別注意if和else的匹配問題,else要與其上離它最近的未匹配的if來匹配。4.3混合運算與強制類型轉(zhuǎn)換
整型、實型、字符型數(shù)據(jù)間可以混合運算,在進(jìn)行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運算。
不同類型的數(shù)據(jù)進(jìn)行運算時,可以運用強制類型轉(zhuǎn)換運算符將一個表達(dá)式轉(zhuǎn)換成所需類型。其一般形式為:
(類型名)(表達(dá)式)4.4switch語句
switch語句的一般形式:
switch(表達(dá)式)
{case常量表達(dá)式1:語句1
case常量表達(dá)式2:語句2
┇
case常量表達(dá)式n:語句n
default:語句n+1}執(zhí)行過程:
當(dāng)執(zhí)行switch語句時,一方面計算緊跟其后的括號中的表達(dá)式的值,然后在switch語句體內(nèi)尋找與該值吻合的case標(biāo)號,假如有與該值相等的標(biāo)號,則執(zhí)行該標(biāo)號后開始的各語句,涉及在其后的所有case和default中的語句,直到switch語句體結(jié)束。假如沒有與該值相等的標(biāo)號,并且存在default標(biāo)號,則從default標(biāo)號后的語句開始執(zhí)行,直到switch語句體結(jié)束。假如沒有與該值相等的標(biāo)號,且不存在default標(biāo)號,則跳過switch語句體,什么也不做。4.5拓展:條件表達(dá)式1、條件表達(dá)式
形式:
表達(dá)式1?表達(dá)式2:表達(dá)式3
由條件表達(dá)式組成的賦值語句事實上就是一個if-else語句的簡寫。因此,若在if-else語句中,當(dāng)表達(dá)式為“真”或“假”時,都只執(zhí)行一個賦值語句,且給同一個變量賦值時,均可以用簡樸的條件表達(dá)式來解決。任務(wù)五本章重點:
進(jìn)一步掌握各種循環(huán)語句的要點和使用方法。
進(jìn)一步掌握break和continue語句在循環(huán)語句中的作用。
可以靈活地運用各種循環(huán)語句進(jìn)行綜合程序設(shè)計基本知識點循環(huán)語句是指在滿足指定的條件時,反復(fù)執(zhí)行某個語句。反復(fù)執(zhí)行的語句既可以是單個語句,也可以是復(fù)合語句。循環(huán)語句有while、do-while和for等幾種類型1.
while循環(huán)
語句一般格式while(表達(dá)式)循環(huán)體語句注意:先判斷循環(huán)條件再執(zhí)行循環(huán),假如循環(huán)條件不滿足,循環(huán)體也許一次都不執(zhí)行。2.
dowhile循環(huán)
語句一般格式do
循環(huán)體語句while(表達(dá)式);注意:先執(zhí)行循環(huán)體后判斷循環(huán)條件,假如循環(huán)條件不滿足,循環(huán)體至少執(zhí)行一次。3.
for循環(huán)語句一般格式
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句注意:
(1)三個表達(dá)式執(zhí)行得先后順序,三個表達(dá)式的書寫格式,中間用;間隔。
(2)循環(huán)體有多句,用復(fù)合語句描述。4.
break語句與continue語句注意:⑴break終止本層循環(huán),跳出循環(huán)體。
⑵continue跳過本次循環(huán)體下面的語句,進(jìn)入下一次循環(huán)。5.
三種循環(huán)語句的比較
(1)for和while語句先判斷循環(huán)條件后執(zhí)行循環(huán)體,do-while語句先執(zhí)行循環(huán)體后再判斷循環(huán)條件。
(2)while和do-while語句的條件表達(dá)式只有一個,for語句有3個。
(3)while、do-while、for可以互相替換使用。
(4)while語句多用于不需要賦初值的或者循環(huán)次數(shù)不擬定的情況。for語句多用于要賦初值或者循環(huán)次數(shù)固定的情況。do-while語句多用于至少要執(zhí)行一次的循環(huán)控制。
(5)循環(huán)語句可以嵌套,循環(huán)可以并列,但不能交叉。
本章學(xué)習(xí)難點1.
注意循環(huán)中變量的初始化2.
注意書寫錯誤導(dǎo)致的死循環(huán)任務(wù)六本章重點、難點:C語言不允許對數(shù)組的大小做動態(tài)定義,即數(shù)組的大小不依賴于程序運營過程中變量的值。數(shù)組元素的下標(biāo):C語言中數(shù)組元素下標(biāo)的下限是固定的,總是為0;程序在執(zhí)行過程中并不自動檢查數(shù)組元素的下標(biāo)是否越界。數(shù)組在內(nèi)存中的存放形式當(dāng)程序中定義了數(shù)組之后,系統(tǒng)將為數(shù)組在內(nèi)存中分派一段連續(xù)的存儲空間來存儲數(shù)組元素。對于一維數(shù)組來說,數(shù)組元素以下標(biāo)從小到大的順序依次存放于內(nèi)存中。對于二維數(shù)組來說,邏輯上可以把它們當(dāng)作是一個矩陣結(jié)構(gòu),數(shù)組元素在內(nèi)存中的排列是按照行優(yōu)先原則。數(shù)組名記錄了數(shù)組在內(nèi)存中的首地址,其值不能改變。除字符數(shù)組外,不能直接使用數(shù)組名對數(shù)組進(jìn)行整體的輸入或輸出。數(shù)組:由若干類型相同的數(shù)據(jù)按一定順序存儲所形成的有序集合。用某個名字標(biāo)記這個集合,這個名字稱為數(shù)組名。構(gòu)成數(shù)組的每個數(shù)據(jù)項稱為數(shù)組的元素,同一數(shù)組中的元素必須具有相同的數(shù)據(jù)類型。
6.1
一維數(shù)組的定義和引用6.1.1一維數(shù)組的定義定義一維數(shù)組的一般形式:數(shù)據(jù)類型說明符數(shù)組名[常量表達(dá)式];6.1.2一維數(shù)組元素的引用數(shù)組元素是組成數(shù)組的基本單元。數(shù)組元素也是一種變量,其標(biāo)記方法為數(shù)組名后跟一個下標(biāo)。下標(biāo)表達(dá)了元素在數(shù)組中的順序號。數(shù)組元素的一般形式為:數(shù)組名[下標(biāo)]6.1.3一維數(shù)組的初始化初始化的一般形式為:
類型說明符數(shù)組名[常量表達(dá)式]={值,值……值};其中在{}中的各數(shù)據(jù)值即為各元素的初值,各值之間用逗號間隔。C語言對數(shù)組的初始化有以下幾點規(guī)定:可以只給部分元素初始化。當(dāng){}中值的個數(shù)少于元素個數(shù)時,只給前面部分元素賦值。例如:
inta[10]={0,1,2,3,4};表達(dá)只給a[0]~a[4]5個元素賦值,而后5個元素自動賦0值。只能給元素逐個賦值,不能給數(shù)組整體賦值。例如給十個元素所有賦1值,只能寫為:
inta[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:
inta[10]=1;如給所有元素賦值,則在數(shù)組說明中,可以不給出數(shù)組長度。例如:
inta[5]={1,2,3,4,5};可寫為:
inta[]={1,2,3,4,5};6.2二維數(shù)組6.2.1二維數(shù)組的定義二維數(shù)組定義的一般形式數(shù)據(jù)類型說明符
數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];其中“常量表達(dá)式1”表達(dá)二維數(shù)組的行數(shù),“常量表達(dá)式2”表達(dá)二維數(shù)組的列數(shù)。6.2.2二維數(shù)組元素的引用二維數(shù)組的元素也稱為雙下標(biāo)變量,其表達(dá)的形式為:
數(shù)組名[下標(biāo)][下標(biāo)]其中下標(biāo)應(yīng)為整型常量或整型表達(dá)式。6.2.3二維數(shù)組的初始化
給二維數(shù)組的初始化重要有以下幾種方式。1.分行給二維數(shù)組賦初值例如:inta[2][3]={{1,2,3},{4,5,6}};2.按數(shù)組元素在內(nèi)存中排列的順序?qū)Ω髟刭x初值例如:inta[2][3]={1,2,3,4,5,6};3.給部分元素賦初值例如:inta[2][3]={{1},{4}};4.假如對所有元素都賦初值,則定義數(shù)組時行長度可以省略,但列的長度不能省。
例如:inta[][3]={1,2,3,4,5,6};6.3字符數(shù)組與字符串6.3.1關(guān)于字符串C語言規(guī)定:字符串的末尾必須有'\0'字符,即'\0'字符為字符串結(jié)束標(biāo)志。'\0'是一個轉(zhuǎn)義字符,它的ASCII碼值為0。一個字符數(shù)組中可以存放若干個字符。字符數(shù)組除了可以存放字符型數(shù)據(jù)外還可以存放字符串。6.3.2字符數(shù)組的定義一般形式:char數(shù)組名[數(shù)組長度]6.3.3字符數(shù)組的初始化1.用字符常量賦初值例如:charc[10]={'I','','a','m','','h','a','p','p','y'};則c[0]='I',…,c[9]='y'。c數(shù)組中存放的是10個字符型數(shù)據(jù)(涉及空格字符)。需要注意:當(dāng)所賦初值的個數(shù)超過數(shù)組的長度時系統(tǒng)報錯;當(dāng)所賦初值的個數(shù)小于數(shù)組的長度時,剩余的元素系統(tǒng)自動賦予'\0',此時,可以將該數(shù)組看做是一個存放字符串的數(shù)組;對靜態(tài)字符數(shù)組未被賦值的元素系統(tǒng)自動將其賦值為'\0'。2.用字符串常量賦初值C語言中,字符數(shù)組最常見的用法是用來解決字符串。用字符串常量來初始化字符數(shù)組重要有以下兩種方法:charstr[10]={"astring"};或charstr[10]="astring";需要注意:當(dāng)用字符串常量來初始化字符數(shù)組時,數(shù)組的長度至少要比字符串中的字符個數(shù)多1,所多余的一個元素用來存放字符串的結(jié)束標(biāo)志'\0'。例如要存放字符串”Hello”,則需要將字符數(shù)組的長度至少設(shè)為6。當(dāng)然也可以使用二維數(shù)組來存放字符串,例如:chara[3][10]={"china","Japan","USA"};表白a數(shù)組有三行,每行存放一個字符串。注意:此時的花括號不能省略。3.初始化時長度的省略在給數(shù)組初始化時,也可以省略數(shù)組的長度,系統(tǒng)自動根據(jù)字符個數(shù)計算出數(shù)組的長度。例如:chars[]="InputThePassword";此時由于s數(shù)組中存放的是一個字符串,而字符串中隱具有結(jié)束標(biāo)記'\0',所以系統(tǒng)自動確認(rèn)s數(shù)組長度為18。再例如:charch[]={'s','t','r','i','n','g'};此時ch數(shù)組長度為6。6.3.4字符數(shù)組的輸入輸出1.字符數(shù)組的輸出對字符數(shù)組,其輸出控制字符有兩種"%c"和"%s"。%c逐個字符輸出字符;%s一次輸出整個字符串。2.字符數(shù)組的輸入
字符數(shù)組的輸入,假如使用scanf函數(shù),其輸入格式控制字符可以有兩種形式,即:"%c"和"%s"。%c逐個字符輸入;%s一次輸入整個字符串。6.3.5字符串解決函數(shù)
C系統(tǒng)提供的字符串解決函數(shù)一般放string.h頭文獻(xiàn)中,所以若程序中調(diào)用字符串解決函數(shù)時,應(yīng)在程序的開始應(yīng)當(dāng)寫#include"string.h"預(yù)解決命令。1.字符串輸出函數(shù)puts()函數(shù)原型:puts(str)功能:輸出一個字符串,輸出時將'\0'置換成'\n',因此,輸出字符串后自動換行。2.字符串輸入函數(shù)gets()函數(shù)原型:gets(str)功能:從鍵盤接受一個字符串直到回車鍵為止,將接受的字符串存入str數(shù)組中。3.字符串連接函數(shù)strcat()函數(shù)原型:strcat(str1,str2)功能:連接兩個字符串,把str2中的字符串連接到str1字符串的后面,結(jié)果放在str1數(shù)組中。注意:字符數(shù)組str1必須足夠大,以便能容納連接后的新字符串。4.字符串復(fù)制函數(shù)strcpy()函數(shù)原型:strcpy(str1,str2)功能:將str2中的字符串復(fù)制到str1數(shù)組中。注意:字符數(shù)組str1必須足夠大,以便能容納符串str2的內(nèi)容。5.字符串比較函數(shù)strcmp()函數(shù)原型:strcmp(str1,str2)功能:將str1和str2中的兩個字符串自左向右按照各字符的ASCII碼值逐對進(jìn)行比較,直到出現(xiàn)不同的字符或碰到'\0'為止。6.求字符串長度函數(shù)strlen()調(diào)用格式:strlen(str)功能:測試字符串長度。函數(shù)值返回值是str中不涉及'\0'的字符個數(shù)。說明:str可以是存放字符串的字符數(shù)組名或字符串常量。任務(wù)七本章重點:用戶自定義函數(shù)的定義、調(diào)用、聲明及返回;函數(shù)調(diào)用時的參數(shù)傳遞;函數(shù)的遞歸調(diào)用;變量作用域與存儲類別。本章難點:函數(shù)遞歸調(diào)用、變量存儲類別。7.1庫函數(shù)
庫函數(shù)是由C語言編譯系統(tǒng)預(yù)先定義好的函數(shù),用戶可直接調(diào)用。
使用庫函數(shù)的注意事項:1.
熟知庫函數(shù)的功能2.
合理設(shè)立庫函數(shù)的參數(shù)3.
注意返回值的使用4.
程序開頭應(yīng)用#include包含與該庫函數(shù)相關(guān)的頭文獻(xiàn)(參見教材附錄)7.2用戶函數(shù)的定義與調(diào)用
1.函數(shù)定義的一般形式
【格式】
類型標(biāo)記符
函數(shù)名(形式參數(shù)表)/*形式參數(shù)可以沒有,稱為無參函數(shù)*/
{
函數(shù)聲明部分;
函數(shù)語句部分;
}
一個函數(shù)即相應(yīng)一定功能,假如程序中需要執(zhí)行函數(shù)所完畢的功能則需對函數(shù)進(jìn)行調(diào)用,
且可進(jìn)行多次調(diào)用。若一個函數(shù)A調(diào)用函數(shù)B,則稱函數(shù)A為主調(diào)函數(shù),函數(shù)B為被調(diào)函數(shù)。
2.函數(shù)的調(diào)用
(1)【格式】函數(shù)名(實參列表)
(2)調(diào)用方式:獨立函數(shù)語句:函數(shù)調(diào)用單獨作為一個語句使用。函數(shù)表達(dá)式:函數(shù)調(diào)用出現(xiàn)在一個表達(dá)式中,規(guī)定函數(shù)必須返回一個擬定值。函數(shù)參數(shù):函數(shù)調(diào)用作為另一個函數(shù)的實參,規(guī)定函數(shù)必須返回一個擬定值。7.3函數(shù)的參數(shù)和返回值
1.函數(shù)參數(shù)
實參:是調(diào)用被調(diào)函數(shù)時所使用的參數(shù)。
形參:是定義被調(diào)函數(shù)時所使用的參數(shù)。
2.實參與形參間的關(guān)系
(1)實參可以是常量、變量或表達(dá)式;形參必須是變量。
(2)實參與形參的類型、個數(shù)應(yīng)一致,且一一相應(yīng)。
(3)函數(shù)調(diào)用時,將實參值相應(yīng)傳遞給形參,而形參有任何變化不會反傳實參。即值的單向傳遞。
3.函數(shù)的返回值函數(shù)的返回值是函數(shù)調(diào)用的結(jié)果,通過return語句帶回主調(diào)函數(shù)。函數(shù)類型決定函數(shù)返回值的類型,假如沒有返回值則函數(shù)類型應(yīng)定義為空類型(viod)。函數(shù)返回時總是返回到主調(diào)函數(shù)的調(diào)用處。7.4函數(shù)原型
C語言規(guī)定在主調(diào)函數(shù)中要對被調(diào)函數(shù)進(jìn)行聲明,即函數(shù)原型。
【格式】函數(shù)類型
函數(shù)名(參數(shù)類型1
參數(shù)名1,參數(shù)類型2
參數(shù)名2,……);
或
函數(shù)類型
函數(shù)名(參數(shù)類型1,參數(shù)類型2,……);
但以下三種情況允許在主調(diào)函數(shù)中缺省對被調(diào)函數(shù)的聲明:(1)
被調(diào)函數(shù)位置在主調(diào)函數(shù)的前面;(2)
被調(diào)函數(shù)的函數(shù)類型為int或char;(3)
函數(shù)聲明在所有函數(shù)之前;7.5函數(shù)的遞歸調(diào)用
一個函數(shù)直接或間接地調(diào)用它自身,稱此函數(shù)為遞歸函數(shù),遞歸函數(shù)的調(diào)用稱為遞歸調(diào)用。遞歸函數(shù)在設(shè)立時應(yīng)有一個明確的結(jié)束遞歸的條件。7.6變量的作用域和生存期
7.6.1.變量的作用域
1.局部變量:函數(shù)內(nèi)部定義的變量,稱為局部變量。僅在函數(shù)范圍內(nèi)有效。
2.全局變量:函數(shù)外部定義的變量,稱為全局變量。從定義處開始,到程序結(jié)束有效。
注意:假如在函數(shù)中局部變量與全局變量重名則屏蔽全局變量,讓局部變量起作用。
7.6.2變量的存儲類別
C語言程序中的變量,按照其存儲方式的不同決定了其不同的生存期。1.自動局部變量與靜態(tài)局部變量的區(qū)別:(1)分派存儲空間不同:自動局變分派在動態(tài)存儲區(qū)中,函數(shù)調(diào)用結(jié)束釋放空間;靜態(tài)局變分派在靜態(tài)存儲區(qū)中,函數(shù)調(diào)用結(jié)束空間不釋放。(2)
函數(shù)中自動局變初始化,則在每次調(diào)用函數(shù)時都重新分派空間且初始化;而靜態(tài)局變初始化僅在程序編譯時初始化一次,下次調(diào)用函數(shù)時保存上次調(diào)用結(jié)束時的值。2.全局變量的存儲類別
(1)用extern聲明全局變量
擴(kuò)展全局變量的作用域。
(2)用static聲明全局變量限定全局變量的作用域。任務(wù)八重點和難點分析:本章介紹了號稱“C語言精華”的重要概念——指針及其使用技術(shù)。指針是C程序中概念最復(fù)雜、使用最靈活而初學(xué)者最容易犯錯的而解決難點的關(guān)鍵在于學(xué)生切實理解各種形式指針的概念及其區(qū)別。1.變量的指針和指向變量的指針變量就是變量的地址和用來存放變量地址的地址變量。1)指針變量的定義
形式:類型標(biāo)記符*標(biāo)記符如:int*pointer;2)指針變量的引用兩個有關(guān)的運算符:
&取地址運算符&a就代表變量a的地址
*指針運算符*a就代表變量a的值2.?dāng)?shù)組的指針和指向數(shù)組的指針變量數(shù)組的指針指數(shù)組的起始地址,數(shù)組元素的指針指數(shù)組元素的地址。1)指向數(shù)組元素的指針變量的定義與賦值
定義和指向變量的指針變量定義相同,c規(guī)定數(shù)組名代表數(shù)組的首地址,即第一個數(shù)組元素地址。2)通過指針引用數(shù)組元素我們通常引用數(shù)組元素的形式是a[i],假如用指針可以這樣引用,*(a+i),或定義一個指針變量p,將數(shù)組a的首地址賦給p,p=a;然后用*(p+i)引用。3)數(shù)組名作函數(shù)參數(shù)形參數(shù)組和實參數(shù)組之間并不是值傳遞,而是共用同一段地址,所以在函數(shù)調(diào)用過程中假如形參的值發(fā)生變化,則實參的值也跟著變化。3.字符串的指針和指向字符串的指針變量1)字符串的表達(dá)形式
c中字符串有兩種表達(dá)形式:一種是數(shù)組:charstring[]="Ilovec!";
一種是字符指針:
char*str="Ilovec!";2)字符串指針作函數(shù)參數(shù)
事實上字符串指針就是數(shù)組的首地址。3)字符指針變量與字符數(shù)組的區(qū)別
①字符數(shù)組由若干元素組成,每個元素存放一個字符,而字符指針變量只存放字符串的首地址,不是整個字符串
②對數(shù)組初始化要用static,對指針變量不用。
③對字符數(shù)組賦值,只能對各個元素賦值,不能象下面這樣:
charstr[14];
str="Ilovec!";
對指針變量可以,
char*str;
str="Ilovec!";
④數(shù)組在定義和編譯時分派內(nèi)存單元,而指針變量定義后最佳將其初始化,否則指針變量的值會指向一個不擬定的內(nèi)存段,將會破壞程序。
⑤指針變量的值是可以改變的,而字符數(shù)組名所代表的字符串首地址卻是不能改變的。4.函數(shù)的指針和指向函數(shù)的指針變量
一個函數(shù)在編譯時被分派一個入口地址,這個入口地址就稱為函數(shù)的指針。函數(shù)名代表函數(shù)的入口地址,這一點和數(shù)組同樣。我們可以用一個指針變量來存放這個入口地址,然后通過該指針變量調(diào)用函數(shù)。5.返回指針值的函數(shù)
一個函數(shù)可以帶回一個整型值、字符值、實型值等,函數(shù)還可以帶回一個指針型的數(shù)據(jù),即地址。這種函數(shù)的定義形式如下:類型標(biāo)記符*函數(shù)名(參數(shù)表)如:int*a(x,y)返回一個指向整型的指針6.指針數(shù)組指針數(shù)組無疑就是數(shù)組元素為指針,定義形式為:類型標(biāo)記*數(shù)組名[數(shù)組長度]如:int*p[4],指針數(shù)組多用于存放若干個字符串的首地址。7定義結(jié)構(gòu)體類型與結(jié)構(gòu)體變量
7.1結(jié)構(gòu)體類型的定義
了解結(jié)構(gòu)體與數(shù)組的區(qū)別,同一數(shù)組中各元素的類型是一致的,而同一結(jié)構(gòu)體
成
員的類型可以不同,且需要根據(jù)實際情況定義結(jié)構(gòu)體類型,是一種構(gòu)造類型。
結(jié)構(gòu)體類型定義格式:
sturct
結(jié)構(gòu)體名
{
數(shù)據(jù)類型
成員名1;
數(shù)據(jù)類型
成員名2;
……
數(shù)據(jù)類型
成員名n;
};
結(jié)構(gòu)體類型是一種構(gòu)造類型,系統(tǒng)并不為其分派存儲單元。
7.2結(jié)構(gòu)體類型變量的定義
定義了結(jié)構(gòu)體類型后可以再定義具有該類型的變量,此時系統(tǒng)才為結(jié)構(gòu)體變量分派存儲單
元,分派的存儲單元數(shù)是各成員所占空間之和。定義結(jié)構(gòu)體變量一般有三種形式:(1)先定義結(jié)構(gòu)體類型,再定義該類型的變量
struct
結(jié)構(gòu)體名
{成員表列
};
struct
結(jié)構(gòu)體名
變量名表列;
(2)定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量。
struct
結(jié)構(gòu)體名
{
成員表列
}變量名表列;
(3)直接定義結(jié)構(gòu)體變量。
struct
{
成員表列
}變量名表列;7.2結(jié)構(gòu)體變量的引用和初始化
7.2.1
引用形式:結(jié)構(gòu)體變量名.成員名
注意:除同類型結(jié)構(gòu)體變量間可整體賦值外,其余情況需逐個引用結(jié)構(gòu)體變量的各
個
成員;結(jié)構(gòu)體類型可嵌套定義,則只能引用最低檔的成員。
7.2.2
定義變量時賦初值,用大括號將各成員值括起來,各成員值之間用逗號隔開。7.3結(jié)構(gòu)體指針
指向結(jié)構(gòu)體變量的指針
定義一個結(jié)構(gòu)體變量stu和一個同類型的指針變量p,且p=&stu,則可以通過p
來
訪問結(jié)構(gòu)體中的各個成員。
一般形式:(*結(jié)構(gòu)體指針變量).成員名
或
結(jié)構(gòu)體指針變量->成員
任務(wù)九本章的重點:C文獻(xiàn)的概念,文獻(xiàn)類型指針,文獻(xiàn)的打開和關(guān)閉,文獻(xiàn)的讀寫和定位技術(shù)。難點是:C文獻(xiàn)的概念,常用讀寫函數(shù)。
1.文獻(xiàn)的相關(guān)概念
所謂“文獻(xiàn)”是指一組相關(guān)數(shù)據(jù)的有序集合。這個數(shù)據(jù)集有一個名稱,叫做文獻(xiàn)名。文獻(xiàn)名由兩部份組成即主名和擴(kuò)展名。文獻(xiàn)通常是駐留在外部介質(zhì)(如磁盤等)上的,在使用時才調(diào)入內(nèi)存中來。從不同的角度可對文獻(xiàn)作不同的分類。從用戶的角度看,文獻(xiàn)可分為普通文獻(xiàn)和設(shè)備文獻(xiàn)兩種。2.文獻(xiàn)指針文獻(xiàn)的重要操作有兩種即讀文獻(xiàn)(從文獻(xiàn)中讀取數(shù)據(jù))和寫文獻(xiàn)(往文獻(xiàn)中存儲數(shù)據(jù))。在C語言中對文獻(xiàn)進(jìn)行各種操作通過文獻(xiàn)指針來實現(xiàn)。定義說明文獻(xiàn)指針的一般形式為:
FILE*指針變量標(biāo)記符;3.文獻(xiàn)的打開與關(guān)閉文獻(xiàn)在進(jìn)行讀寫操作之前要先打開,使用完畢要關(guān)閉。在C語言中,文獻(xiàn)操作都是由庫函數(shù)來完畢的。在本章內(nèi)將介紹重要的文獻(xiàn)操作函數(shù)。①
文獻(xiàn)的打開(fopen函數(shù))
fopen函數(shù)用來打開一個文獻(xiàn),其調(diào)用的一般形式為:FILE*fopen(char*filename,char*mode);
說明:filename是被打開文獻(xiàn)的文獻(xiàn)名,應(yīng)包含文獻(xiàn)的途徑;②文獻(xiàn)關(guān)閉函數(shù)(fclose函數(shù))
文獻(xiàn)一旦使用完畢,應(yīng)用關(guān)閉文獻(xiàn)函數(shù)把文獻(xiàn)關(guān)閉,以避免文獻(xiàn)的數(shù)據(jù)丟失等錯誤。
fclose函數(shù)調(diào)用的一般形式是:
fclose(FILE*fp);4.文獻(xiàn)的讀寫對文獻(xiàn)的讀和寫是最常用的文獻(xiàn)操作。在C語言中提供了多種文獻(xiàn)讀寫的函數(shù),下面將具體介紹。使用這些函數(shù)都規(guī)定包含頭文獻(xiàn)stdio.h。字符讀寫函數(shù)fgetc和fputc字符讀寫函數(shù)是以字符(字節(jié))為單位的讀寫函數(shù)。每次可從文獻(xiàn)讀出或向文獻(xiàn)寫入一個字符。①
讀字符函數(shù)fgetc
fgetc函數(shù)的功能是從指定的文獻(xiàn)中讀一個字符,函數(shù)調(diào)用的形式為:
charch=fgetc(FILE*fp);
例如:
ch=fgetc(fp);②寫字符函數(shù)fputc
fputc函數(shù)的功能是把一個字符寫入指定的文獻(xiàn)中,函數(shù)調(diào)用的形式為:
fputc(charch,F(xiàn)ILE*fp);
例如:
fputc(ch,fp);5.字符串讀寫函數(shù)fgets和fputs
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣元市重點中學(xué)2025屆高考沖刺模擬數(shù)學(xué)試題含解析
- 2025屆安徽定遠(yuǎn)縣爐橋中學(xué)高三第五次模擬考試數(shù)學(xué)試卷含解析
- 《防雷電主題班會》課件
- 化學(xué)計量在實驗中的應(yīng)用課件
- 現(xiàn)代學(xué)徒制課題:中國特色學(xué)徒制的政策保障研究(附:研究思路模板、可修改技術(shù)路線圖)
- 浙江省慈溪市六校2025屆高三下學(xué)期第五次調(diào)研考試語文試題含解析
- 福建省福建師大附中2025屆高三適應(yīng)性調(diào)研考試數(shù)學(xué)試題含解析
- 2025屆貴州省黔西南市高三第四次模擬考試數(shù)學(xué)試卷含解析
- 2025屆云南省曲靖市羅平縣一中高三最后一模語文試題含解析
- 海南省萬寧市第三中學(xué)2025屆高考適應(yīng)性考試英語試卷含解析
- 第四軍醫(yī)大學(xué)口腔醫(yī)院進(jìn)修生申請表
- Be-what-u-wanna-be-歌詞
- 燒堿在不同溫度下的密度不同溫度下鹽水的比重表
- 初中英語試卷講評課PPT課件
- 摩托羅拉saber軍刀寫頻簡易教程.
- 梁預(yù)制安裝施工方案
- 卷內(nèi)目錄(標(biāo)準(zhǔn)模版)
- 花城三年級音樂樂理知識總結(jié)(共5頁)
- 通風(fēng)空調(diào)工程系統(tǒng)調(diào)試驗收記錄(送、排風(fēng)系統(tǒng))
- 紙箱跌落實驗報告(共2頁)
- 哈工大 軸系部件設(shè)計5.4.2
評論
0/150
提交評論