




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2022-3-27IV-1C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)柯式鎮(zhèn)測(cè)井研究中心講義與備忘2022-3-27IV-22022-3-27IV-34.0 程序結(jié)構(gòu)回顧AB順序結(jié)構(gòu)即按照語(yǔ)句書(shū)寫(xiě)順序執(zhí)行的程序結(jié)構(gòu)。順序結(jié)構(gòu)即按照語(yǔ)句書(shū)寫(xiě)順序執(zhí)行的程序結(jié)構(gòu)。(1 1)順序結(jié)構(gòu))順序結(jié)構(gòu)2022-3-27IV-4k=k2kk1kkk=kkk=k1kA1A2BAk 圖 3-4 多分支選擇結(jié)構(gòu)真(非0)假(0)AB條件圖 3-3 雙分支選擇結(jié)構(gòu)(2 2)選擇結(jié)構(gòu)示意圖)選擇結(jié)構(gòu)示意圖選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),是指有條件地選擇要選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),是指有條件地選擇要執(zhí)行的程序段。執(zhí)行的程序段。2022-3-27IV-
2、5假(0)真(非0)A條件真(0)假(0)A條件當(dāng)條件成立時(shí),反復(fù)執(zhí)行程序段當(dāng)條件成立時(shí),反復(fù)執(zhí)行程序段A A,否則不執(zhí)行。,否則不執(zhí)行。先執(zhí)行程序段先執(zhí)行程序段A A,再判斷條件是,再判斷條件是否為否為“真真”;若為;若為“真真”,再執(zhí),再執(zhí)行行A A,如此反復(fù),直到條件為,如此反復(fù),直到條件為“假假”(0 0)為止。)為止。2022-3-27IV-64.1 C語(yǔ)句概述語(yǔ)句概述 C語(yǔ)言編寫(xiě)的程序由若干條語(yǔ)言編寫(xiě)的程序由若干條C語(yǔ)句組成。語(yǔ)句組成。C語(yǔ)句是專門用語(yǔ)句是專門用來(lái)向計(jì)算系統(tǒng)發(fā)出的操作指令,它用于完成一定的操作任務(wù)。來(lái)向計(jì)算系統(tǒng)發(fā)出的操作指令,它用于完成一定的操作任務(wù)。每條每條C語(yǔ)句
3、經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。歸納如下語(yǔ)句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。歸納如下:(1)程序?qū)?shù)據(jù)的處理是通過(guò)程序?qū)?shù)據(jù)的處理是通過(guò)“語(yǔ)句語(yǔ)句”的執(zhí)行來(lái)實(shí)現(xiàn)的。的執(zhí)行來(lái)實(shí)現(xiàn)的。(2)一條語(yǔ)句完成一項(xiàng)操作(或功能)。一條語(yǔ)句完成一項(xiàng)操作(或功能)。(3)一個(gè)為實(shí)現(xiàn)特定目的的程序應(yīng)包含若干條語(yǔ)句。一個(gè)為實(shí)現(xiàn)特定目的的程序應(yīng)包含若干條語(yǔ)句。程序舉例: void main(void) float a,b,c; a=1.5; scanf(“%f”,&b); c= a+b; printf(“c=%fn”,c); 2022-3-27IV-7 表達(dá)式語(yǔ)句(表達(dá)式;)表達(dá)式語(yǔ)句(表達(dá)式;) 簡(jiǎn)單語(yǔ)句簡(jiǎn)單語(yǔ)句
4、 函數(shù)調(diào)用語(yǔ)句(函數(shù)名(參數(shù)表);函數(shù)調(diào)用語(yǔ)句(函數(shù)名(參數(shù)表);) 空語(yǔ)句(;)空語(yǔ)句(;) C語(yǔ)言語(yǔ)言 數(shù)據(jù)操作數(shù)據(jù)操作 復(fù)合語(yǔ)句(復(fù)合語(yǔ)句( 一條或多條語(yǔ)句一條或多條語(yǔ)句 ) 語(yǔ)句語(yǔ)句 條件語(yǔ)句(條件語(yǔ)句(if語(yǔ)句,語(yǔ)句,switch語(yǔ)句)語(yǔ)句) 結(jié)構(gòu)化語(yǔ)句結(jié)構(gòu)化語(yǔ)句 while語(yǔ)句語(yǔ)句 循環(huán)語(yǔ)句循環(huán)語(yǔ)句 do_while語(yǔ)句語(yǔ)句 for語(yǔ)句語(yǔ)句 流程控制語(yǔ)句流程控制語(yǔ)句 break語(yǔ)句語(yǔ)句 限定轉(zhuǎn)向語(yǔ)句限定轉(zhuǎn)向語(yǔ)句 continue語(yǔ)句語(yǔ)句 非結(jié)構(gòu)化語(yǔ)句非結(jié)構(gòu)化語(yǔ)句 return語(yǔ)句語(yǔ)句 非限定轉(zhuǎn)向語(yǔ)句(非限定轉(zhuǎn)向語(yǔ)句(goto語(yǔ)句)語(yǔ)句)C語(yǔ)句的分類:語(yǔ)句的分類:2022-3-27I
5、V-84.1.1 簡(jiǎn)單語(yǔ)句簡(jiǎn)單語(yǔ)句分號(hào)分號(hào)(;)是語(yǔ)是語(yǔ)句結(jié)束的標(biāo)句結(jié)束的標(biāo)志志2022-3-27IV-9運(yùn)算符表達(dá)式語(yǔ)句運(yùn)算符表達(dá)式語(yǔ)句運(yùn)算符表達(dá)式后跟一個(gè)分號(hào)組成運(yùn)算符表達(dá)式后跟一個(gè)分號(hào)組成例:例:5 5;i+; 語(yǔ)句的功能是語(yǔ)句的功能是,變量變量i的值增的值增1。a=3,b=a+2,c=a+1; /*由三個(gè)賦值語(yǔ)句組成的逗號(hào)表達(dá)式語(yǔ)句。由三個(gè)賦值語(yǔ)句組成的逗號(hào)表達(dá)式語(yǔ)句。*/ (1)a+b; /*算術(shù)表達(dá)式語(yǔ)句,計(jì)算算術(shù)表達(dá)式語(yǔ)句,計(jì)算a與與b之和。之和。*/2022-3-27IV-10賦值語(yǔ)句賦值語(yǔ)句賦值表達(dá)式后跟一個(gè)分號(hào)組成賦值表達(dá)式后跟一個(gè)分號(hào)組成(2)例:例:x=y+z; /x=
6、y+z; /* *計(jì)算計(jì)算y+zy+z的和并賦值給變量的和并賦值給變量x.x.。* */ / x=2; y=3;x=2; y=3;2022-3-27IV-11由函數(shù)調(diào)用表達(dá)式后跟一個(gè)分號(hào)組成由函數(shù)調(diào)用表達(dá)式后跟一個(gè)分號(hào)組成格式:格式:函數(shù)名函數(shù)名 ( (參數(shù)列表參數(shù)列表););分類:分類:標(biāo)準(zhǔn)庫(kù)函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)用戶定義函數(shù)用戶定義函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)調(diào)用原則標(biāo)準(zhǔn)庫(kù)函數(shù)調(diào)用原則: :(1) (1) 要在程序中包含相應(yīng)的頭文件要在程序中包含相應(yīng)的頭文件(2) (2) 調(diào)用的一般形式:函數(shù)名調(diào)用的一般形式:函數(shù)名 ( (參數(shù)列表參數(shù)列表););2022-3-27IV-12標(biāo)準(zhǔn)函數(shù)調(diào)用的目的標(biāo)準(zhǔn)函數(shù)調(diào)用的目的
7、(1 1)如數(shù)學(xué)函數(shù),為了得到函數(shù)的返回值。)如數(shù)學(xué)函數(shù),為了得到函數(shù)的返回值。 這類函數(shù)的調(diào)用一般出現(xiàn)在表達(dá)式中,這類函數(shù)的調(diào)用一般出現(xiàn)在表達(dá)式中,作為表達(dá)式語(yǔ)句的一部分。作為表達(dá)式語(yǔ)句的一部分。(2 2)為了完成某項(xiàng)任務(wù),而不是為了得到返)為了完成某項(xiàng)任務(wù),而不是為了得到返回值?;刂怠U{(diào)用這類函數(shù)時(shí),就直接用函數(shù)調(diào)用語(yǔ)句。調(diào)用這類函數(shù)時(shí),就直接用函數(shù)調(diào)用語(yǔ)句。例:例:scanfscanf(%f(%f,&x);&x);printfprintf(%f(%f,x);x);例如例如:y=a:y=a* *cos(wcos(w* *x)+cx)+c; ;2022-3-27IV-13一對(duì)
8、大括號(hào)一對(duì)大括號(hào) 包圍若干條語(yǔ)句組成。包圍若干條語(yǔ)句組成。格式:格式: 數(shù)據(jù)說(shuō)明部分;數(shù)據(jù)說(shuō)明部分; 執(zhí)行語(yǔ)句部分;執(zhí)行語(yǔ)句部分; 注意:注意:(1) (1) 在復(fù)合語(yǔ)句中的在復(fù)合語(yǔ)句中的“內(nèi)部數(shù)據(jù)描述語(yǔ)句內(nèi)部數(shù)據(jù)描述語(yǔ)句”中定義的變量,是中定義的變量,是局部變量局部變量, , 僅在復(fù)合語(yǔ)句中有效。僅在復(fù)合語(yǔ)句中有效。(2) (2) 復(fù)合語(yǔ)句結(jié)束的復(fù)合語(yǔ)句結(jié)束的“ ” ”之后,不需要分號(hào)。之后,不需要分號(hào)。(3) (3) 復(fù)合語(yǔ)句可以出現(xiàn)在任何數(shù)據(jù)操作語(yǔ)句可以出現(xiàn)的地方。復(fù)合語(yǔ)句可以出現(xiàn)在任何數(shù)據(jù)操作語(yǔ)句可以出現(xiàn)的地方。2022-3-27IV-14空語(yǔ)句就是一個(gè)分號(hào)??照Z(yǔ)句就是一個(gè)分號(hào)。格式:
9、格式:;功能:功能:執(zhí)行該語(yǔ)句不做任何操作執(zhí)行該語(yǔ)句不做任何操作, ,一般用于一般用于延遲時(shí)間。延遲時(shí)間。2022-3-27IV-15控制語(yǔ)句,完成一定的控制功能??刂普Z(yǔ)句,完成一定的控制功能。C有有9種控制語(yǔ)句:種控制語(yǔ)句:if( )else (條件語(yǔ)句條件語(yǔ)句)for( ) (循環(huán)語(yǔ)句循環(huán)語(yǔ)句)while( ) (循環(huán)語(yǔ)句循環(huán)語(yǔ)句)dowhile( ) (循環(huán)語(yǔ)句循環(huán)語(yǔ)句)continue (結(jié)束本次循環(huán)語(yǔ)句結(jié)束本次循環(huán)語(yǔ)句)break (中止執(zhí)行中止執(zhí)行switch或循環(huán)語(yǔ)句或循環(huán)語(yǔ)句)switch (多分支選擇語(yǔ)句多分支選擇語(yǔ)句)goto (轉(zhuǎn)向語(yǔ)句轉(zhuǎn)向語(yǔ)句)return (從函數(shù)返回
10、語(yǔ)句從函數(shù)返回語(yǔ)句)這這9種語(yǔ)句中的括號(hào)種語(yǔ)句中的括號(hào)( )表表示其中是一個(gè)條件,示其中是一個(gè)條件,表表示內(nèi)嵌的語(yǔ)句。示內(nèi)嵌的語(yǔ)句。2022-3-27IV-164.2 賦值運(yùn)算符、賦值表達(dá)式賦值運(yùn)算符、賦值表達(dá)式和賦值語(yǔ)句和賦值語(yǔ)句 一、賦值運(yùn)算符一、賦值運(yùn)算符 賦值符號(hào)賦值符號(hào)“=”就是賦值運(yùn)算符,其作用是將一就是賦值運(yùn)算符,其作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如個(gè)數(shù)據(jù)賦給一個(gè)變量。如“a=3”的作用是執(zhí)行的作用是執(zhí)行一次賦值操作(或稱賦值運(yùn)算)。把常量一次賦值操作(或稱賦值運(yùn)算)。把常量3賦給賦給變量變量a。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。 2022-3
11、-27IV-17二、類型轉(zhuǎn)換二、類型轉(zhuǎn)換 如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。不同類型的整型數(shù)據(jù)間的賦值:按存儲(chǔ)單元中的不同類型的整型數(shù)據(jù)間的賦值:按存儲(chǔ)單元中的存儲(chǔ)形式直接傳送。存儲(chǔ)形式直接傳送。 1 將實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量將實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。如時(shí),舍棄實(shí)數(shù)的小數(shù)部分。如i為整型變量,為整型變量,執(zhí)行執(zhí)行“i=3.56”的結(jié)果是使的結(jié)果是使i的值為的值為3。2022-3-27IV-18類型轉(zhuǎn)換(類型轉(zhuǎn)換(1)
12、2 將整型數(shù)據(jù)賦給單、雙精度實(shí)型變量時(shí),數(shù)值不變,將整型數(shù)據(jù)賦給單、雙精度實(shí)型變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中,如將但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中,如將23賦給賦給f1oat變量變量f,即即f=23,先將,先將23轉(zhuǎn)換成轉(zhuǎn)換成23.00000,再存儲(chǔ)在,再存儲(chǔ)在f中。如將中。如將23賦給賦給double型變量型變量d,即,即d=23,則將,則將23補(bǔ)足有效位數(shù)補(bǔ)足有效位數(shù)字為字為23.00000000000000,然后以雙精度浮點(diǎn)數(shù)形式存,然后以雙精度浮點(diǎn)數(shù)形式存儲(chǔ)到儲(chǔ)到d中。中。3 將一個(gè)將一個(gè)double型數(shù)據(jù)賦給型數(shù)據(jù)賦給float變量時(shí),截取其前面變量時(shí),截取其前面7位位有效數(shù)
13、字,存放在有效數(shù)字,存放在float變量的存儲(chǔ)單元(變量的存儲(chǔ)單元(32位)中。位)中。將一個(gè)將一個(gè)float型數(shù)據(jù)賦給型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有變量時(shí),數(shù)值不變,有效數(shù)字?jǐn)U展為效數(shù)字?jǐn)U展為16位,在內(nèi)存中以位,在內(nèi)存中以64位存儲(chǔ)。位存儲(chǔ)。2022-3-27IV-19類型轉(zhuǎn)換(類型轉(zhuǎn)換(2)4 字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占一個(gè)字節(jié),字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占一個(gè)字節(jié),而整型變量為而整型變量為2個(gè)字節(jié),因此將字符數(shù)據(jù)個(gè)字節(jié),因此將字符數(shù)據(jù)(8位位)放到整型放到整型變量低變量低8位中。有兩種情況:位中。有兩種情況:(1) 如果所用系統(tǒng)將字符處理為無(wú)符號(hào)的量或
14、對(duì)如果所用系統(tǒng)將字符處理為無(wú)符號(hào)的量或?qū)nsigned char型變量賦值,則將字符的型變量賦值,則將字符的8位放到整型變量低位放到整型變量低8位,位,高高8位補(bǔ)零;位補(bǔ)零;(2) 如果所用系統(tǒng)(如如果所用系統(tǒng)(如Turbo C)將字符處理為帶符號(hào)的)將字符處理為帶符號(hào)的量(即量(即signed char),若字符最高位為),若字符最高位為0,則整型變量,則整型變量高高8位補(bǔ)位補(bǔ)0;若字符最高位為;若字符最高位為1,則高,則高8位全補(bǔ)位全補(bǔ)1。這稱為。這稱為“符號(hào)擴(kuò)展符號(hào)擴(kuò)展”,這樣做的目的是使數(shù)值保持不變。,這樣做的目的是使數(shù)值保持不變。5 將將int、short、long型數(shù)據(jù)賦給一個(gè)型
15、數(shù)據(jù)賦給一個(gè)char型變量時(shí),只型變量時(shí),只將其低將其低8位原封不動(dòng)地送到位原封不動(dòng)地送到char型變量(即截?cái)啵P妥兞浚唇財(cái)啵?022-3-27IV-20類型轉(zhuǎn)換(3)6 將帶符號(hào)的整型數(shù)據(jù)將帶符號(hào)的整型數(shù)據(jù)(int型型)賦給賦給long型變量時(shí),要進(jìn)行符號(hào)擴(kuò)展,如果型變量時(shí),要進(jìn)行符號(hào)擴(kuò)展,如果int型數(shù)據(jù)為正值(符號(hào)位為型數(shù)據(jù)為正值(符號(hào)位為0),則),則long int型變量的高型變量的高16位補(bǔ)位補(bǔ)0。如果。如果int型型變量為負(fù)值變量為負(fù)值(符號(hào)位為符號(hào)位為1),則,則long型變量的高型變量的高16位補(bǔ)位補(bǔ)1,將整型數(shù)的,將整型數(shù)的16位送位送到到long型低型低16位中,
16、以保持?jǐn)?shù)值不改變。位中,以保持?jǐn)?shù)值不改變。反之,若將一個(gè)反之,若將一個(gè)long int型數(shù)據(jù)賦給一個(gè)型數(shù)據(jù)賦給一個(gè)int型變量,只將型變量,只將long int型數(shù)據(jù)中低型數(shù)據(jù)中低16位原封不動(dòng)送到整型變量。位原封不動(dòng)送到整型變量。7 將將unsigned int型數(shù)據(jù)賦給型數(shù)據(jù)賦給long int型變量時(shí),不存在符號(hào)擴(kuò)展問(wèn)題,只需型變量時(shí),不存在符號(hào)擴(kuò)展問(wèn)題,只需將高位補(bǔ)將高位補(bǔ)0即可。將一個(gè)即可。將一個(gè)unsigned類型數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同的整型類型數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同的整型變量,將變量,將unsigned 型變量的內(nèi)容原樣送到非型變量的內(nèi)容原樣送到非unsigned型變量中,但
17、如果型變量中,但如果數(shù)據(jù)范圍超過(guò)相應(yīng)整型的范圍,則會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。如:數(shù)據(jù)范圍超過(guò)相應(yīng)整型的范圍,則會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。如:unsigned int a=65535;int b; b=a;將將a送到送到b中,由于中,由于b是是int型,第型,第1位是符號(hào)位,位是符號(hào)位,b的值為的值為-1。2022-3-27IV-21例 有符號(hào)數(shù)據(jù)傳送給無(wú)符號(hào)變量#include void main( ) unsigned a; int b=-1; a=b; printf(“%u”,a); 運(yùn)行結(jié)果為運(yùn)行結(jié)果為655352022-3-27IV-22三、復(fù)合賦值運(yùn)算符三、復(fù)合賦值運(yùn)算符 在賦值符在賦值符“=”之前加上
18、其它運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符。之前加上其它運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符。凡是二元凡是二元(二目二目)運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。C語(yǔ)言規(guī)定可以使用語(yǔ)言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符:種復(fù)合賦值運(yùn)算符:+=,-=,*=,/=,%=(復(fù)合算術(shù)運(yùn)算符復(fù)合算術(shù)運(yùn)算符 )=,&=,=,|=(復(fù)合位運(yùn)算符)。(復(fù)合位運(yùn)算符)。例如例如: a+=3 等價(jià)于等價(jià)于a=a+3:相當(dāng)于使:相當(dāng)于使a進(jìn)行一次自加進(jìn)行一次自加(3)的操作;的操作; x*=y+8 等價(jià)于等價(jià)于x=x*(y+8) x%=3 等價(jià)于等價(jià)于x=x%3C采用這種復(fù)合
19、運(yùn)算符,一是為了簡(jiǎn)化程序,使程序精練;二是為采用這種復(fù)合運(yùn)算符,一是為了簡(jiǎn)化程序,使程序精練;二是為了提高編譯效率。了提高編譯效率。2022-3-27IV-23四、賦值表達(dá)式四、賦值表達(dá)式 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為“賦值賦值表達(dá)式表達(dá)式”,其一般形式為,其一般形式為變量賦值運(yùn)算符表達(dá)式變量賦值運(yùn)算符表達(dá)式如如“a=5”是一個(gè)賦值表達(dá)式。對(duì)賦值表達(dá)式求解的過(guò)程是:將賦值是一個(gè)賦值表達(dá)式。對(duì)賦值表達(dá)式求解的過(guò)程是:將賦值運(yùn)算符右側(cè)的運(yùn)算符右側(cè)的“表達(dá)式表達(dá)式”的值賦給左側(cè)的變量。的值賦給左側(cè)的變量。賦值表達(dá)式的值賦值表
20、達(dá)式的值就是被賦值的變量的值就是被賦值的變量的值。上述一般形式的賦值表達(dá)式中的上述一般形式的賦值表達(dá)式中的“表達(dá)式表達(dá)式”又可以是一個(gè)賦值表達(dá)又可以是一個(gè)賦值表達(dá)式。如:式。如:a=(b=5)括弧內(nèi)的括弧內(nèi)的“b=5”是一個(gè)賦值表達(dá)式,它的值等于是一個(gè)賦值表達(dá)式,它的值等于5,因此,因此“a=(b=5)”相當(dāng)于相當(dāng)于“a=5”,a的值等于的值等于5,整個(gè)賦值表達(dá)式的值也等于,整個(gè)賦值表達(dá)式的值也等于5。賦值運(yùn)算符按照賦值運(yùn)算符按照“自右而左自右而左”的結(jié)合順序。的結(jié)合順序。2022-3-27IV-24四、賦值表達(dá)式四、賦值表達(dá)式(續(xù))(續(xù))賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符賦值表達(dá)式也可以包
21、含復(fù)合的賦值運(yùn)算符。如。如a+=a-=a*a也是一個(gè)賦值表達(dá)式。如果也是一個(gè)賦值表達(dá)式。如果a的初值為的初值為12,此賦值表達(dá),此賦值表達(dá)式的求解為:式的求解為:先進(jìn)行先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于的運(yùn)算,它相當(dāng)于a=a-a*a=12-144=-132。再進(jìn)行再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于的運(yùn)算,相當(dāng)于a=a+(-132)=-132-132=-2642022-3-27IV-25五、賦值語(yǔ)句五、賦值語(yǔ)句 賦值語(yǔ)句賦值語(yǔ)句:賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成賦值語(yǔ)句。:賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成賦值語(yǔ)句。C語(yǔ)言的賦值語(yǔ)句具有其它高級(jí)語(yǔ)言中賦值語(yǔ)句的一切特點(diǎn)和功能。語(yǔ)言的賦值語(yǔ)句具有其它高級(jí)
22、語(yǔ)言中賦值語(yǔ)句的一切特點(diǎn)和功能。但也應(yīng)當(dāng)注意到它們的不同:但也應(yīng)當(dāng)注意到它們的不同:(1)C語(yǔ)言中的賦值號(hào)語(yǔ)言中的賦值號(hào)“=”是一個(gè)運(yùn)算符,其它語(yǔ)言中的賦值號(hào)不是一個(gè)運(yùn)算符,其它語(yǔ)言中的賦值號(hào)不是運(yùn)算符;是運(yùn)算符;(2)關(guān)于賦值表達(dá)式與賦值語(yǔ)句,其它多數(shù)高級(jí)語(yǔ)言沒(méi)有)關(guān)于賦值表達(dá)式與賦值語(yǔ)句,其它多數(shù)高級(jí)語(yǔ)言沒(méi)有“賦值表賦值表達(dá)式達(dá)式”這一概念。賦值表達(dá)式可以被包括在其它表達(dá)式之中,例這一概念。賦值表達(dá)式可以被包括在其它表達(dá)式之中,例如:如: if(a=b)0)t=a; (正確正確) if的條件中不能包含賦值語(yǔ)句:的條件中不能包含賦值語(yǔ)句: if(a=b;)0) t=a; (錯(cuò)誤)(錯(cuò)誤)20
23、22-3-27IV-264.3 數(shù)據(jù)輸入輸出的概念數(shù)據(jù)輸入輸出的概念 及在及在C語(yǔ)言中的實(shí)現(xiàn)語(yǔ)言中的實(shí)現(xiàn) (1)所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的:)所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的: 從計(jì)算機(jī)向外部輸出設(shè)備(如顯示器、打印機(jī)、磁盤(pán)從計(jì)算機(jī)向外部輸出設(shè)備(如顯示器、打印機(jī)、磁盤(pán)等)輸出數(shù)據(jù)稱為等)輸出數(shù)據(jù)稱為“輸出輸出”; 從外部設(shè)備(如鍵盤(pán)、磁盤(pán)、顯示器、掃描儀等)向從外部設(shè)備(如鍵盤(pán)、磁盤(pán)、顯示器、掃描儀等)向計(jì)算機(jī)輸入數(shù)據(jù)稱為計(jì)算機(jī)輸入數(shù)據(jù)稱為“輸入輸入”。(2)C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是由函數(shù)來(lái)實(shí)現(xiàn)的。在是由函數(shù)來(lái)
24、實(shí)現(xiàn)的。在C的標(biāo)準(zhǔn)函數(shù)庫(kù)中提供了一些的標(biāo)準(zhǔn)函數(shù)庫(kù)中提供了一些輸入輸出函數(shù),如輸入輸出函數(shù),如printf函數(shù)函數(shù)和和scanf函數(shù),在使用時(shí),函數(shù),在使用時(shí),不要認(rèn)為它們是不要認(rèn)為它們是C 語(yǔ)言的語(yǔ)言的“輸入輸出語(yǔ)句輸入輸出語(yǔ)句”。printf和和scanf不是不是C語(yǔ)言的關(guān)鍵字,而是兩個(gè)函數(shù);語(yǔ)言的關(guān)鍵字,而是兩個(gè)函數(shù);2022-3-27IV-27數(shù)據(jù)輸入輸出的概念數(shù)據(jù)輸入輸出的概念 及在及在C語(yǔ)言中的實(shí)現(xiàn)(續(xù))語(yǔ)言中的實(shí)現(xiàn)(續(xù))(3)C提供的函數(shù)以庫(kù)的形式存放在系統(tǒng)中,它們不是提供的函數(shù)以庫(kù)的形式存放在系統(tǒng)中,它們不是C語(yǔ)言文本語(yǔ)言文本中的組成部分,因此,各函數(shù)的功能和名字,在不同的計(jì)算機(jī)
25、系中的組成部分,因此,各函數(shù)的功能和名字,在不同的計(jì)算機(jī)系統(tǒng)中可能有所不同。有些通用的函數(shù)統(tǒng)中可能有所不同。有些通用的函數(shù)(如如printf和和scanf等等),各種計(jì),各種計(jì)算機(jī)系統(tǒng)都提供,成為各種計(jì)算機(jī)系統(tǒng)的標(biāo)準(zhǔn)函數(shù);算機(jī)系統(tǒng)都提供,成為各種計(jì)算機(jī)系統(tǒng)的標(biāo)準(zhǔn)函數(shù);(4)在使用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí),要用預(yù)編譯命令)在使用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí),要用預(yù)編譯命令“#include”將將“stdio.h”文件包括到用戶源文件中。即文件包括到用戶源文件中。即 # include 或或 # include “stdio.h”stdio.h是是standard input&output的縮寫(xiě),包含了與標(biāo)準(zhǔn)的縮寫(xiě),
26、包含了與標(biāo)準(zhǔn)I/O庫(kù)有關(guān)的庫(kù)有關(guān)的變量定義和宏定義。在需要使用標(biāo)準(zhǔn)變量定義和宏定義。在需要使用標(biāo)準(zhǔn)I/O庫(kù)中的函數(shù)時(shí),應(yīng)在程庫(kù)中的函數(shù)時(shí),應(yīng)在程序前使用上述預(yù)編譯命令。序前使用上述預(yù)編譯命令。2022-3-27IV-284.4 數(shù)據(jù)輸入輸出數(shù)據(jù)輸入輸出2022-3-27IV-29一、字符數(shù)據(jù)的輸入輸出一、字符數(shù)據(jù)的輸入輸出1 putchar函數(shù)(字符輸出函數(shù))函數(shù)(字符輸出函數(shù))putchar函數(shù)的作用是向終端輸出一個(gè)字符,函數(shù)的作用是向終端輸出一個(gè)字符,例如:例如:putchar(c);輸出字符變量輸出字符變量c的值。的值。c可以是字符型變量或整可以是字符型變量或整型變量。型變量。2022-
27、3-27IV-30例例 輸出單個(gè)字符#include void main( )char a,b,c;a=B; b=O; c=Y;putchar(a);putchar(b);putchar(c);運(yùn)行結(jié)果:BOY也可以輸出其它轉(zhuǎn)義字符,如:putchar(101) (輸出字符A)putchar() (輸出單引號(hào)字符)putchar(015)(使輸出回車,不換行)2022-3-27IV-312 getchar函數(shù)函數(shù)(字符輸入函數(shù))此函數(shù)的作用:從終端此函數(shù)的作用:從終端(或系統(tǒng)隱含指定的輸入設(shè)備或系統(tǒng)隱含指定的輸入設(shè)備)輸入輸入一個(gè)字符。一個(gè)字符。getchar函數(shù)沒(méi)有參數(shù),其一般形式為函數(shù)沒(méi)有
28、參數(shù),其一般形式為 getchar( )函數(shù)的值就是從輸入設(shè)備得到的字符。請(qǐng)注意,函數(shù)的值就是從輸入設(shè)備得到的字符。請(qǐng)注意,getchar( )只能接收一個(gè)字符。只能接收一個(gè)字符。getchar函數(shù)得到的字符可以賦給函數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,也可以不賦給任何變量,一個(gè)字符變量或整型變量,也可以不賦給任何變量,作為表達(dá)式的一部分。作為表達(dá)式的一部分。2022-3-27IV-32例:輸入單個(gè)字符#include void main()char c; c=getchar( ); putchar(c);#include void main() putchar(getchar( )
29、); getchar函數(shù)得到的函數(shù)得到的字符可以賦給一個(gè)字符可以賦給一個(gè)字符變量字符變量getchar函數(shù)得到的函數(shù)得到的字符作為表達(dá)式的字符作為表達(dá)式的一部分一部分2022-3-27IV-33二、格式輸入輸出二、格式輸入輸出 printf函數(shù)函數(shù)格式輸出函數(shù)格式輸出函數(shù) printf函數(shù)的作用是向終端(或系統(tǒng)默認(rèn)的輸出設(shè)備)函數(shù)的作用是向終端(或系統(tǒng)默認(rèn)的輸出設(shè)備)輸出若干個(gè)任意類型的數(shù)據(jù)(輸出若干個(gè)任意類型的數(shù)據(jù)(printf可以輸出多個(gè)數(shù)據(jù),可以輸出多個(gè)數(shù)據(jù),且為任意類型)。且為任意類型)。 scanf函數(shù)函數(shù)格式輸入函數(shù)格式輸入函數(shù) 用來(lái)從外部輸入設(shè)備向計(jì)算機(jī)主機(jī)輸入數(shù)據(jù)的函數(shù);用來(lái)從
30、外部輸入設(shè)備向計(jì)算機(jī)主機(jī)輸入數(shù)據(jù)的函數(shù); getchar函數(shù)只能用來(lái)輸入一個(gè)字符,用函數(shù)只能用來(lái)輸入一個(gè)字符,用scanf函數(shù)可以函數(shù)可以用來(lái)輸入任何類型的多個(gè)數(shù)據(jù)。用來(lái)輸入任何類型的多個(gè)數(shù)據(jù)。2022-3-27IV-34printf函數(shù)函數(shù)格式輸出函數(shù)格式輸出函數(shù)printf函數(shù)的作用是向終端(或系統(tǒng)默函數(shù)的作用是向終端(或系統(tǒng)默認(rèn)的輸出設(shè)備)輸出若干個(gè)任意類型認(rèn)的輸出設(shè)備)輸出若干個(gè)任意類型的數(shù)據(jù)(的數(shù)據(jù)(printf可以輸出多個(gè)數(shù)據(jù),且可以輸出多個(gè)數(shù)據(jù),且為任意類型)。為任意類型)。 2022-3-27IV-35例:圓半徑例:圓半徑radius=1.5,求圓周長(zhǎng)和圓面積,求圓周長(zhǎng)和圓面積
31、 #include “stdio.h”void main( ) float radius, length, area, pi=3.1415926;radius=1.5;length=2*pi*radius;/*求圓周長(zhǎng)求圓周長(zhǎng)*/area=pi*radius*radius; /*求圓面積求圓面積*/printf(“radius=%fn”,radius);/*輸出圓半徑輸出圓半徑*/printf(“l(fā)ength=%7.2f,area=%7.2fn”,length,area); /*輸出圓周長(zhǎng)、面積輸出圓周長(zhǎng)、面積*/ 程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下: radius=1.500000 leng
32、th= 9.42,area= 7.07 2022-3-27IV-36(1) printf函數(shù)的一般形式printf(格式控制,輸出表列)(格式控制,輸出表列)“格式控制格式控制”是用雙引號(hào)括起來(lái)的字符串,也稱“轉(zhuǎn)換控制字符串”,它包括三種信息:(A)格式說(shuō)明,由“%”和格式字符組成,如%d,%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。 格式說(shuō)明總是由格式說(shuō)明總是由“%”字符開(kāi)始!字符開(kāi)始?。˙)普通字符,即需要原樣輸出的字符。(C)轉(zhuǎn)義字符轉(zhuǎn)義字符,如n就是轉(zhuǎn)義字符,輸出時(shí)產(chǎn)生一個(gè)就是轉(zhuǎn)義字符,輸出時(shí)產(chǎn)生一個(gè)“換行換行”操作。操作?!拜敵霰砹休敵霰砹小笔切枰敵龅囊恍?shù)據(jù),可以是表達(dá)式
33、。 printf(“a= %d ,b=%dn”,a,a+3);由于printf是函數(shù),因此,“格式控制”字符串和“輸出表列”實(shí)際上都是函數(shù)的參數(shù)??梢员硎緸?printf(參數(shù)1,參數(shù)2,參數(shù)3,.,參數(shù)n)printf函數(shù)的功能是將參數(shù)2參數(shù)n按參數(shù)1給定的格式輸出。2022-3-27IV-37(2)printf函數(shù)的格式字符函數(shù)的格式字符 d格式符,用來(lái)輸出十進(jìn)制整數(shù)。格式符,用來(lái)輸出十進(jìn)制整數(shù)。(A)%d,按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。,按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。(B)%md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于則左
34、端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。如,則按實(shí)際位數(shù)輸出。如 printf(“%4d,%4d”,a,b)若若a=123,d=12345,則輸出結(jié)果為,則輸出結(jié)果為123,12345(C)%ld,輸出長(zhǎng)整型數(shù)據(jù)。如,輸出長(zhǎng)整型數(shù)據(jù)。如 long a=135790; printf(“%ld”,a);如果用如果用%d輸出,就會(huì)發(fā)生錯(cuò)誤,對(duì)輸出,就會(huì)發(fā)生錯(cuò)誤,對(duì)long型數(shù)據(jù)應(yīng)當(dāng)用型數(shù)據(jù)應(yīng)當(dāng)用%ld格式格式輸出。對(duì)長(zhǎng)整型數(shù)據(jù)也可以指定字段寬度,如將上面輸出。對(duì)長(zhǎng)整型數(shù)據(jù)也可以指定字段寬度,如將上面printf函函數(shù)中的數(shù)中的“%ld”可改為可改為“%81d”。一個(gè)一個(gè)int型數(shù)據(jù)可以用型數(shù)據(jù)可以用
35、%d或或%ld格式輸出。格式輸出。2022-3-27IV-38(2) printf函數(shù)的格式字符(續(xù))函數(shù)的格式字符(續(xù))o格式符,以格式符,以8進(jìn)制數(shù)形式輸出整數(shù)。由于是將內(nèi)存單元中的進(jìn)制數(shù)形式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值按八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號(hào),各位的值按八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號(hào),即將符號(hào)位也一起作為八進(jìn)制數(shù)的一部分輸出。即將符號(hào)位也一起作為八進(jìn)制數(shù)的一部分輸出。x格式符,以格式符,以16進(jìn)制數(shù)形式輸出整數(shù)。進(jìn)制數(shù)形式輸出整數(shù)。u格式符,用來(lái)輸出格式符,用來(lái)輸出unsigned型數(shù)據(jù),即無(wú)符號(hào)數(shù),以十進(jìn)型數(shù)據(jù),即無(wú)符號(hào)數(shù),以十進(jìn)制形式輸出。制形式輸出
36、。一個(gè)有符號(hào)整數(shù)一個(gè)有符號(hào)整數(shù)(int型型)也可以用也可以用%u格式輸出;反之,一個(gè)格式輸出;反之,一個(gè)unsigned型數(shù)據(jù)也可以用型數(shù)據(jù)也可以用%d格式輸出。按相互賦值的規(guī)則格式輸出。按相互賦值的規(guī)則處理。處理。unsigned型數(shù)據(jù)也可用型數(shù)據(jù)也可用%o或或%x格式輸出。格式輸出。2022-3-27IV-39例例4.3 無(wú)符號(hào)數(shù)據(jù)的輸出#include void main( ) unsigned int a=65535; int b=-2; printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“b=%d,%o,%x,%un”,b,b,b,b); 運(yùn)行結(jié)果為:
37、a=-1,177777,ffff,65535b=-2,177776,fffe,655341 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 1 01 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1加加 1按位取反按位取反2022-3-27IV-40(2)printf函數(shù)的格式字符(續(xù))函數(shù)的格式字符(續(xù)) c格式符,用來(lái)輸出一個(gè)字符。如:格式符,用來(lái)輸出一個(gè)字符。如:char c=a;printf(“%c”,c);一個(gè)在一個(gè)在0255范圍內(nèi)的整數(shù),可以用字
38、符形式輸出。在輸范圍內(nèi)的整數(shù),可以用字符形式輸出。在輸出前,將該整數(shù)轉(zhuǎn)換成相應(yīng)的出前,將該整數(shù)轉(zhuǎn)換成相應(yīng)的ASCII字符;反之,一個(gè)字符;反之,一個(gè)字符數(shù)據(jù)可用整數(shù)輸出。字符數(shù)據(jù)可用整數(shù)輸出。2022-3-27IV-41(2)printf函數(shù)的格式字符(續(xù))函數(shù)的格式字符(續(xù)) s格式符,用來(lái)輸出一個(gè)字符串。格式符,用來(lái)輸出一個(gè)字符串。 (A) %s,例如,例如 printf(“%s”, “CHINA”) 輸出輸出“CHINA”字符串(不包括雙引號(hào))。字符串(不包括雙引號(hào))。 (B)%ms,輸出的字符串占,輸出的字符串占m列,若字符串長(zhǎng)度大于列,若字符串長(zhǎng)度大于m,則突破,則突破m的限制,將字
39、符串全部輸出。若串長(zhǎng)小于的限制,將字符串全部輸出。若串長(zhǎng)小于m,則左補(bǔ)空格;,則左補(bǔ)空格; (C)%-ms,若串長(zhǎng)小于,若串長(zhǎng)小于m,則在,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)列范圍內(nèi),字符串向左靠,右補(bǔ)空格。空格。 (D)%m.ns,輸出占,輸出占m列,但只取字符串中左段列,但只取字符串中左段n個(gè)字符。這個(gè)字符。這n個(gè)字個(gè)字符輸出在符輸出在m列的右側(cè),左補(bǔ)空格。列的右側(cè),左補(bǔ)空格。 (E)%-m.ns,其中,其中m、n含義同上,含義同上,n個(gè)字符輸出在個(gè)字符輸出在m列范圍的左側(cè),列范圍的左側(cè),右補(bǔ)空格。如果右補(bǔ)空格。如果nm,則,則m自動(dòng)取自動(dòng)取n值,即保證值,即保證n個(gè)字符正常輸個(gè)字符正常輸
40、出。出。2022-3-27IV-42(2)printf函數(shù)的格式字符(續(xù))函數(shù)的格式字符(續(xù)) f格式符,用來(lái)輸出實(shí)數(shù)(包括單、雙精度格式符,用來(lái)輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出:,以小數(shù)形式輸出:(A)%f,不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分全部如數(shù)輸,不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分全部如數(shù)輸出,并輸出出,并輸出6位小數(shù)位小數(shù)。應(yīng)當(dāng)注意,并非全部數(shù)字都是有效數(shù)字。應(yīng)當(dāng)注意,并非全部數(shù)字都是有效數(shù)字。 單精度實(shí)數(shù)的有效位數(shù)一般為單精度實(shí)數(shù)的有效位數(shù)一般為7位位,雙精度有效數(shù)字為雙精度有效數(shù)字為16位位,給出,給出6位小數(shù)位小數(shù)。(B)%m.nf,指定輸出的數(shù)據(jù)共占
41、,指定輸出的數(shù)據(jù)共占m列,其中有列,其中有n位小數(shù)。如果數(shù)值長(zhǎng)位小數(shù)。如果數(shù)值長(zhǎng)度小于度小于m,則左端補(bǔ)空格。,則左端補(bǔ)空格。(C)%-m.nf 與與%m.nf 基本相同,輸出的數(shù)值向左端靠,右端補(bǔ)空格。基本相同,輸出的數(shù)值向左端靠,右端補(bǔ)空格。2022-3-27IV-43f格式字符舉例格式字符舉例#include void main( ) float x,y; double a,b; x=111111.111; y=222222.222; a=1111111111111.111111111; b=2222222222222.222222222; printf(“x+y=%fn”,x+y);
42、printf(“a+b=%fn”,a+b);運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:x+y=333333.328125a+b=3333333333333.3330102022-3-27IV-44(2)printf函數(shù)的格式字符(續(xù)) e格式符,以指數(shù)形式輸出實(shí)數(shù):格式符,以指數(shù)形式輸出實(shí)數(shù):(A)%e,不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù),不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù),由系統(tǒng)自動(dòng)指定給出由系統(tǒng)自動(dòng)指定給出6位小數(shù),指數(shù)部分占位小數(shù),指數(shù)部分占5位(如位(如e+002),其中),其中“e”占一位,指數(shù)符號(hào)占一位,指數(shù)占占一位,指數(shù)符號(hào)占一位,指數(shù)占3位。數(shù)值按標(biāo)準(zhǔn)化指數(shù)形式輸出(即小數(shù)點(diǎn)前必
43、須有而位。數(shù)值按標(biāo)準(zhǔn)化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有而且只有一位非零數(shù)字)。且只有一位非零數(shù)字)。則用則用%e格式輸出的實(shí)數(shù)占格式輸出的實(shí)數(shù)占13列列寬度!(不同系統(tǒng)的規(guī)定略有不同?。挾龋。ú煌到y(tǒng)的規(guī)定略有不同!) (B)%m.ne和和%-m.ne,m,n和和“-”字符含義與前相同。字符含義與前相同。n指指數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)。數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)。2022-3-27IV-45f格式與e格式輸出舉例#include void main() float fn=123.456; printf(“%f,%10f,%10.2f, %.2f, %-10.2fn”,fn
44、,fn,fn,fn,fn); printf(“%e,%10e,%10.2e,%.2e,%-10.2en”,fn,fn,fn,fn,fn);輸出結(jié)果輸出結(jié)果:123.456001,123.456001, 123.46,123.46,123.46 1.234560e+002,1.234560e+002, 1.23e+002,1.23e+002,1.23e+0022022-3-27IV-46 printf格式字符 格式字符格式字符說(shuō)說(shuō) 明明d以帶符號(hào)的十進(jìn)制形式輸出整數(shù)以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào)正數(shù)不輸出符號(hào))o以以8進(jìn)制無(wú)符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符進(jìn)制無(wú)符號(hào)形式輸出整數(shù)(不輸
45、出前導(dǎo)符0)x, X以以16進(jìn)制無(wú)符號(hào)形式輸出整數(shù)進(jìn)制無(wú)符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符不輸出前導(dǎo)符0 x)u以無(wú)符號(hào)以無(wú)符號(hào)10進(jìn)制形式輸出整數(shù)進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符以字符形式輸出,只輸出一個(gè)字符s輸出字符串輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),隱含輸出以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)位小數(shù)e,E以標(biāo)準(zhǔn)指數(shù)形式輸出單、雙精度數(shù),數(shù)字部分小數(shù)位數(shù)以標(biāo)準(zhǔn)指數(shù)形式輸出單、雙精度數(shù),數(shù)字部分小數(shù)位數(shù)為為6位。用位。用e時(shí)指數(shù)以時(shí)指數(shù)以“e”表示,用表示,用E時(shí)指數(shù)以時(shí)指數(shù)以“E”表示表示。g,G選用選用%f或或%e格式中輸出寬度較短的一種格式,不輸出無(wú)意義格式中
46、輸出寬度較短的一種格式,不輸出無(wú)意義的的0。用。用G時(shí),若以指數(shù)形式表示,則指數(shù)以大寫(xiě)表示。時(shí),若以指數(shù)形式表示,則指數(shù)以大寫(xiě)表示。2022-3-27IV-47關(guān)于關(guān)于printf函數(shù)的其它說(shuō)明函數(shù)的其它說(shuō)明(1)務(wù)必注意數(shù)據(jù)類型與對(duì)應(yīng)格式說(shuō)明的匹配,否則)務(wù)必注意數(shù)據(jù)類型與對(duì)應(yīng)格式說(shuō)明的匹配,否則將會(huì)出現(xiàn)錯(cuò)誤;將會(huì)出現(xiàn)錯(cuò)誤;(2)除)除X、E、G外,其它格式字符必須用小寫(xiě)字母;外,其它格式字符必須用小寫(xiě)字母;(3)d、o、x、u、c、s、f、e、g等字符,如果用在等字符,如果用在“%”后面就作為格式符號(hào);后面就作為格式符號(hào);(4)如果想輸出字符)如果想輸出字符“%”,應(yīng)該在,應(yīng)該在“格式控制
47、格式控制”字字符串中用連續(xù)倆個(gè)符串中用連續(xù)倆個(gè)%表示,如:表示,如:printf(“%f%”,1.0/3)2022-3-27IV-482 scanf函數(shù)函數(shù)格式輸入函數(shù)格式輸入函數(shù)在程序中給計(jì)算機(jī)提供數(shù)據(jù),可以用賦值語(yǔ)句,也可在程序中給計(jì)算機(jī)提供數(shù)據(jù),可以用賦值語(yǔ)句,也可以用輸入函數(shù)??墒褂靡杂幂斎牒瘮?shù)??墒褂胹canf( )函數(shù),通過(guò)鍵盤(pán)輸入函數(shù),通過(guò)鍵盤(pán)輸入多個(gè)數(shù)據(jù)。多個(gè)數(shù)據(jù)。(1)一般形式)一般形式 scanf (格式控制,地址表列格式控制,地址表列)“格式控制格式控制”的含義同的含義同printf()函數(shù)相似;函數(shù)相似;“地址表列地址表列”是由若干個(gè)地址組成的表列,可以是變是由若干個(gè)地
48、址組成的表列,可以是變量的地址,或字符串的首地址。量的地址,或字符串的首地址。普通字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。普通字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。2022-3-27IV-49例:用scanf函數(shù)輸入數(shù)據(jù) #include void main( ) int a,b,c, a1,b1,c1; scanf(“%d,%d,%d”,&a,&b,&c); scanf(“%d%d%d”,&a1,&b1,&c1); printf(“%d,%d,%dn”,a,b,c); printf(“%d,%d,%dn”, a1,b1,c1); &a
49、、&b、&c中的中的“&”是是“地址運(yùn)算地址運(yùn)算符符”,&a指指a在內(nèi)存中的地址。在內(nèi)存中的地址。scanf函函數(shù)的作用是:按照數(shù)的作用是:按照a、b、c在內(nèi)存的地址在內(nèi)存的地址將將a、b、c的值存進(jìn)去。的值存進(jìn)去。2022-3-27IV-50關(guān)于關(guān)于scanf(“%d%d%d”,&a,&b,&c);“%d%d%d”表示要按十進(jìn)制整數(shù)輸入表示要按十進(jìn)制整數(shù)輸入3個(gè)數(shù)據(jù);個(gè)數(shù)據(jù);輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間隔,也可以用隔,也可以用Enter鍵、鍵、Tab鍵;鍵;用用“%d%d%d”
50、格式輸入數(shù)據(jù)時(shí),不能用逗號(hào)作為格式輸入數(shù)據(jù)時(shí),不能用逗號(hào)作為兩個(gè)數(shù)據(jù)間的分隔符。兩個(gè)數(shù)據(jù)間的分隔符。3 4 5合法!合法!345 合法!合法!3,4,5不合法!不合法!2022-3-27IV-512 scanf函數(shù)函數(shù)(續(xù)續(xù))(2)格式說(shuō)明)格式說(shuō)明和和printf函數(shù)中的格式說(shuō)明相似,以函數(shù)中的格式說(shuō)明相似,以%開(kāi)始,以一個(gè)格式開(kāi)始,以一個(gè)格式字符結(jié)束,中間可以插入附加的字符。字符結(jié)束,中間可以插入附加的字符。 對(duì)對(duì)unsigned型變量所需要的數(shù)據(jù)可以用型變量所需要的數(shù)據(jù)可以用%u,%d或或%o、%x格式輸入;格式輸入; 可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動(dòng)按它截取所需可以指定輸入數(shù)據(jù)所占列
51、數(shù),系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù);數(shù)據(jù); scanf(“%3d%3d”,&a, &b); 輸入數(shù)據(jù)時(shí)不能規(guī)定精度:輸入數(shù)據(jù)時(shí)不能規(guī)定精度: scanf(“%7.2f”,&a);是不合法的。是不合法的。 2022-3-27IV-52 scanf格式格式字符字符 格式字符格式字符說(shuō)說(shuō) 明明 d用來(lái)輸入十進(jìn)制整數(shù)用來(lái)輸入十進(jìn)制整數(shù)u用來(lái)輸入無(wú)符號(hào)的十進(jìn)制整數(shù)用來(lái)輸入無(wú)符號(hào)的十進(jìn)制整數(shù)o用來(lái)輸入八進(jìn)制整數(shù)用來(lái)輸入八進(jìn)制整數(shù)x , X用來(lái)輸入十六進(jìn)制整數(shù)用來(lái)輸入十六進(jìn)制整數(shù)c用來(lái)輸入單個(gè)字符用來(lái)輸入單個(gè)字符s用來(lái)輸入字符串,將字符串送到一個(gè)字符數(shù)組中,用來(lái)輸入字符串,將字符串送到一個(gè)
52、字符數(shù)組中,在輸入時(shí)以非空白字符開(kāi)始,以第一個(gè)空白字符結(jié)在輸入時(shí)以非空白字符開(kāi)始,以第一個(gè)空白字符結(jié)束。字符串以串結(jié)束標(biāo)志束。字符串以串結(jié)束標(biāo)志0作為其最后一個(gè)字作為其最后一個(gè)字符符f用來(lái)輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入用來(lái)輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入e ,E,g,G與與f作用相同,作用相同,e與與f、g可以互相替換(大小寫(xiě)作用相同)可以互相替換(大小寫(xiě)作用相同)2022-3-27IV-53(3)使用)使用scanf函數(shù)應(yīng)注意的問(wèn)題函數(shù)應(yīng)注意的問(wèn)題 scanf函數(shù)中的函數(shù)中的“格式控制格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名;后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名; scanf
53、 (“%d, %d”,a,b); (錯(cuò)誤!錯(cuò)誤!) scanf (“%d, %d”,&a,&b); (正確)(正確) 如果在如果在“格式控制格式控制”字符串中除了格式說(shuō)明以外還有其它字符,則字符串中除了格式說(shuō)明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)在輸入數(shù)據(jù)時(shí)務(wù)必原樣輸入:務(wù)必原樣輸入:若若 scanf (“%d, %d”,&a,&b); 輸入時(shí)應(yīng)為:輸入時(shí)應(yīng)為: 3,4若若 scanf (“a=%d:b=%d :c=%d”,&a,&b,&c); 輸入時(shí)應(yīng)為:輸入時(shí)應(yīng)為: a=3:b=4:c=6 在用在用“%c”輸入字符時(shí),空格字符和輸入字符時(shí),空格字符和“轉(zhuǎn)義字符轉(zhuǎn)義字符”作為有效字符輸作為有效字符輸入。入。 在輸入數(shù)據(jù)時(shí),遇以下情況時(shí)該數(shù)據(jù)認(rèn)為結(jié)束:在輸入數(shù)據(jù)時(shí),遇以下情況時(shí)該數(shù)據(jù)認(rèn)為結(jié)束:(A) 遇空格,或按遇空格,或按“回車回車”或或“跳格跳格”(Tab)鍵;鍵;(B) 遇寬度結(jié)束,如遇寬度結(jié)束,如“%3d”,只取,只取3列;列;(C) 遇非法輸入。遇非法輸入。2022-3-27IV-54提高人機(jī)交互性建議:提高人機(jī)交互性建議:為改善人機(jī)交互性,同
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 節(jié)能路燈合同范本
- 煤礦副立井把罐工技能理論考試題庫(kù)150題(含答案)
- 二零二五年度合伙研發(fā)退出合同:成果轉(zhuǎn)化與收益分配
- 電視節(jié)目制作中的技術(shù)創(chuàng)新與應(yīng)用
- 二零二五年度葡萄園承包與農(nóng)產(chǎn)品溯源體系建設(shè)合同
- 2025至2030年中國(guó)羽絨夾克衫數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 二零二五年度教育用地租賃合同范本
- 2025至2030年中國(guó)絞車提升對(duì)位計(jì)數(shù)裝置數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年度智能私人車庫(kù)買賣及配套設(shè)施合同
- 2025至2030年中國(guó)維微樂(lè)膠囊數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 鎮(zhèn)鄉(xiāng)自然資源規(guī)劃所工作職責(zé)
- 年終獎(jiǎng)計(jì)算方案
- 模擬藥房實(shí)訓(xùn)總結(jié)報(bào)告
- 人工智能在智能運(yùn)維中的應(yīng)用
- 《腦科學(xué)基礎(chǔ)知識(shí)》課件
- 成人四肢血壓測(cè)量的中國(guó)專家共識(shí)
- 榮昌壩扶壁式擋土墻施工方案1
- 幼兒園多媒體課件設(shè)計(jì)與制作第2版(高職學(xué)前教育專業(yè))全套教學(xué)課件
- 動(dòng)力電池包pack控制計(jì)劃
- 01SS105給排水常用儀表及特種閥門安裝圖集
- 南寧水療市場(chǎng)調(diào)研分析報(bào)告
評(píng)論
0/150
提交評(píng)論