版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、內(nèi)容提要:內(nèi)容提要: C語句概述語句概述 程序的三種基本結(jié)構(gòu)程序的三種基本結(jié)構(gòu) 賦值語句賦值語句 數(shù)據(jù)輸入輸出的概念及在語言中的實現(xiàn)數(shù)據(jù)輸入輸出的概念及在語言中的實現(xiàn) 字符數(shù)據(jù)的輸入輸出字符數(shù)據(jù)的輸入輸出 格式輸入與輸出格式輸入與輸出 順序結(jié)構(gòu)程序設(shè)計舉例順序結(jié)構(gòu)程序設(shè)計舉例 習(xí)題習(xí)題 第第4章章 最簡單的最簡單的c程序設(shè)計程序設(shè)計順序程序設(shè)計順序程序設(shè)計 4.1 C語句概述語句概述 1. C語言的語句用來向計算機(jī)系統(tǒng)發(fā)出操作指令。語言的語句用來向計算機(jī)系統(tǒng)發(fā)出操作指令。 一個語句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。一個語句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。 2. C程序結(jié)構(gòu)程序結(jié)構(gòu) 用圖用圖4.1表示。表
2、示。 一個一個c程序可以由若干個源程序文件組成,一個源文件可以由若干個函數(shù)和程序可以由若干個源程序文件組成,一個源文件可以由若干個函數(shù)和 預(yù)處理命令以及全局變量聲明部分組成,一個函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語句預(yù)處理命令以及全局變量聲明部分組成,一個函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語句 組成。組成。 NOTE: 1) 聲明部分的內(nèi)容不應(yīng)稱為語句。聲明部分的內(nèi)容不應(yīng)稱為語句。 如:如:int a;不是一個不是一個c語句,它不產(chǎn)生機(jī)器操作,而只是對變量的定義。語句,它不產(chǎn)生機(jī)器操作,而只是對變量的定義。 2)一個函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句組成。一個函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句
3、組成。 圖圖4.1 3.C語句的種類:語句的種類: 1) 控制語句控制語句 -完成一定的控制功能。完成一定的控制功能。 C只有只有9種控制語句:種控制語句: if()else(條件語句條件語句) for() (循環(huán)語句循環(huán)語句) hile() (循環(huán)語句循環(huán)語句) dohile() (循環(huán)語句循環(huán)語句) continue (結(jié)束本次循環(huán)語句結(jié)束本次循環(huán)語句) break (中止執(zhí)行中止執(zhí)行switch或循環(huán)語句或循環(huán)語句) sitch (多分支選擇語句多分支選擇語句) goto (轉(zhuǎn)向語句轉(zhuǎn)向語句) return (從函數(shù)返回語句從函數(shù)返回語句) 2) 函數(shù)調(diào)用語句函數(shù)調(diào)用語句 構(gòu)構(gòu) 成:成:
4、 由一次函數(shù)調(diào)用加一個分號構(gòu)成一個語句。由一次函數(shù)調(diào)用加一個分號構(gòu)成一個語句。 例例 如:如: printf(this is a c stateent); 3) 表達(dá)式語句表達(dá)式語句 構(gòu)構(gòu) 成:由一個表達(dá)式構(gòu)成一個語句。成:由一個表達(dá)式構(gòu)成一個語句。 例例 如:如: 由賦值表達(dá)式構(gòu)成一個賦值語句。由賦值表達(dá)式構(gòu)成一個賦值語句。 a=3 是一個賦值表達(dá)式,是一個賦值表達(dá)式, 而而 a=3;是一個賦值語句。;是一個賦值語句。 NOTE: (1) 分號是語句中不可缺少的一部分。分號是語句中不可缺少的一部分。 例如:例如: i=i+1(是表達(dá)式,不是語句是表達(dá)式,不是語句) i=i+1;(是語句是語句
5、) (2)任何表達(dá)式都可以加上分號而成為語句。任何表達(dá)式都可以加上分號而成為語句。 i+;是一語句,作用是使;是一語句,作用是使i值加值加1。 x+y;也是一個語句,作用是完成;也是一個語句,作用是完成x+y的操作,它是合法的,的操作,它是合法的, 但是并不把但是并不把x+y的和賦給另一變量,所以它并無實際意義。的和賦給另一變量,所以它并無實際意義。 4) 空語句??照Z句。 例例 如:;如:; 即只有一個分號的語句,它什么也不做。即只有一個分號的語句,它什么也不做。 用用 途:途: (1)用來做被轉(zhuǎn)向點用來做被轉(zhuǎn)向點; (2)循環(huán)語句中的循環(huán)體循環(huán)語句中的循環(huán)體(循環(huán)體是空語句,表示循環(huán)體什么
6、也循環(huán)體是空語句,表示循環(huán)體什么也 不做不做)。 5)復(fù)合語句復(fù)合語句/分程序分程序 構(gòu)構(gòu) 成:用成:用 把一些語句括起來成為復(fù)合語句把一些語句括起來成為復(fù)合語句/分程序。分程序。 例例 如:如: z=x+y; t=z/100; printf(%f,t); NOTE: (1) 復(fù)合語句中最后一個語句中最后的分號不能忽略不寫復(fù)合語句中最后一個語句中最后的分號不能忽略不寫(這是和這是和pascal不同的不同的)。 (2) C語言允許一行寫幾個語句,也允許一個語句拆開寫在幾行上,書寫格式語言允許一行寫幾個語句,也允許一個語句拆開寫在幾行上,書寫格式 無固定要求。無固定要求。 4.2 賦值語句賦值語句
7、 定定 義:義: 賦值語句是由賦值表達(dá)式加上一個分號構(gòu)成。賦值語句是由賦值表達(dá)式加上一個分號構(gòu)成。 NOTE: 1) C語言中的賦值號語言中的賦值號“=”是一個運(yùn)算符,在其他大多數(shù)語言中賦是一個運(yùn)算符,在其他大多數(shù)語言中賦 值號不是運(yùn)算符。值號不是運(yùn)算符。 2) 其他多數(shù)高級語言沒有其他多數(shù)高級語言沒有“賦值表達(dá)式賦值表達(dá)式”一概念。一概念。 3)賦值表達(dá)式可以包括在其他表達(dá)式之中賦值表達(dá)式可以包括在其他表達(dá)式之中. 例如:例如: if(a=b)0) t=a; 分分 析:析: 按語法規(guī)定按語法規(guī)定if后面的后面的()內(nèi)是一個條件,例如可以是:內(nèi)是一個條件,例如可以是:“if(x0)”?,F(xiàn)在?,F(xiàn)
8、在 在在x的位置上換上一個賦值表達(dá)式的位置上換上一個賦值表達(dá)式“a=b”,其作用是:先進(jìn)行賦值運(yùn)算,其作用是:先進(jìn)行賦值運(yùn)算(將將b的的 值賦給值賦給a),然后判斷,然后判斷a是否大于是否大于0,如大于,如大于0,執(zhí)行,執(zhí)行t=a。 在在if語句中的語句中的“a=b”不是賦值語句而是賦值表達(dá)式,這樣寫是合法的。不是賦值語句而是賦值表達(dá)式,這樣寫是合法的。 如果寫成如果寫成if(a=b;)0)t=a;就錯了。在;就錯了。在if的條件中不能包含賦值語句。的條件中不能包含賦值語句。 由此看到,由此看到,c把賦值語句和賦值表達(dá)式區(qū)別開來,增加了表達(dá)式的種類,使把賦值語句和賦值表達(dá)式區(qū)別開來,增加了表達(dá)
9、式的種類,使 表達(dá)式的應(yīng)用幾乎表達(dá)式的應(yīng)用幾乎“無孔不入無孔不入”,能實現(xiàn)其他語言中難以實現(xiàn)的功能,能實現(xiàn)其他語言中難以實現(xiàn)的功能. 4.3 數(shù)據(jù)輸入輸出的概念及在數(shù)據(jù)輸入輸出的概念及在C語言中的實現(xiàn)語言中的實現(xiàn) 輸入輸出是以計算機(jī)主機(jī)為主體而言的輸入輸出是以計算機(jī)主機(jī)為主體而言的。 輸輸 出出: 從計算機(jī)向外部輸出設(shè)備從計算機(jī)向外部輸出設(shè)備(如顯示屏、打印機(jī)、磁盤等如顯示屏、打印機(jī)、磁盤等)輸出數(shù)據(jù)。輸出數(shù)據(jù)。 輸輸 入:入: 從外部向輸入設(shè)備從外部向輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等如鍵盤、磁盤、光盤、掃描儀等)輸入數(shù)據(jù)輸入數(shù)據(jù) 2.C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)
10、來實現(xiàn)的。語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實現(xiàn)的。 在在c標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入輸出函數(shù),例如,標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入輸出函數(shù),例如,printf函數(shù)和函數(shù)和scanf函數(shù)。函數(shù)。 NOTE: 1)不要誤認(rèn)為輸入輸出函數(shù)是不要誤認(rèn)為輸入輸出函數(shù)是C語言提供的語言提供的“輸入輸出語句輸入輸出語句”。 2) C提供的函數(shù)以庫的形式存放在系統(tǒng)中,它們不是提供的函數(shù)以庫的形式存放在系統(tǒng)中,它們不是c語言文本中的組成部語言文本中的組成部 分。分。 其好處:其好處: 使使C語言編譯系統(tǒng)簡單,因為將語句翻譯成二進(jìn)制的指令是在編譯階段完語言編譯系統(tǒng)簡單,因為將語句翻譯成二進(jìn)制的指令
11、是在編譯階段完 成的,沒有輸入輸出語句就可以避免在編譯階段處理與硬件有關(guān)的問題,可以成的,沒有輸入輸出語句就可以避免在編譯階段處理與硬件有關(guān)的問題,可以 使編譯系統(tǒng)簡化,而且通用性強(qiáng),可移植性好,對各種型號的計算機(jī)都適用,使編譯系統(tǒng)簡化,而且通用性強(qiáng),可移植性好,對各種型號的計算機(jī)都適用, 便于在各種計算機(jī)上實現(xiàn)。便于在各種計算機(jī)上實現(xiàn)。 例如:在源程序中有例如:在源程序中有printf函數(shù),在編譯時并不把它翻譯成目標(biāo)指令,而函數(shù),在編譯時并不把它翻譯成目標(biāo)指令,而 是在執(zhí)行階段中調(diào)用已被連接的函數(shù)庫中的是在執(zhí)行階段中調(diào)用已被連接的函數(shù)庫中的printf函數(shù)。函數(shù)。 3.使用使用c語言庫函數(shù)時
12、,要用預(yù)編譯命令語言庫函數(shù)時,要用預(yù)編譯命令“include”將有關(guān)的將有關(guān)的“頭文件頭文件” 包括到包括到 用戶源文件中。用戶源文件中。 頭文件中包含了與用到的函數(shù)有關(guān)的信息。頭文件中包含了與用到的函數(shù)有關(guān)的信息。 例:在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時,文件開頭應(yīng)有以下預(yù)編譯命令:例:在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時,文件開頭應(yīng)有以下預(yù)編譯命令: #include 或或 #include studio.h studioh是是standard input putchar(n);putchar(b);putchar(n);putchar(c); putchar(n); 則輸出結(jié)果為:則輸出結(jié)果為: b o
13、y 2)也可以輸出其他轉(zhuǎn)義字符。也可以輸出其他轉(zhuǎn)義字符。 如:如: putchar(101)(輸出字符輸出字符a) putchar() (輸出單引號字符輸出單引號字符) putchar(015) (輸出回車,不換行,使輸出的當(dāng)前位置移到本行開頭輸出回車,不換行,使輸出的當(dāng)前位置移到本行開頭) 4.5.2 getchar函數(shù)函數(shù)(字符輸入函數(shù)字符輸入函數(shù)) 一般形式:一般形式: getchar( ); 作作 用用: 從終端從終端(或系統(tǒng)隱含指定的輸入設(shè)備或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個字符。輸入一個字符。 函數(shù)的值就是從輸入設(shè)備得到的字符。函數(shù)的值就是從輸入設(shè)備得到的字符。 例例4.2輸入單個
14、字符輸入單個字符 #include main( ) char c; (1) c=getchar( ); (2) putchar(c); 問題問題: (1)、(2)能否采用已學(xué)過的語句來替換?能否采用已學(xué)過的語句來替換?How? NOTE: 1) getchar( )只能接收一個字符。只能接收一個字符。 2)getchar函數(shù)得到的字符可以賦給一個字符變量或整型變量,函數(shù)得到的字符可以賦給一個字符變量或整型變量, 也可以不賦給任何變量,作為表達(dá)式的一部分。也可以不賦給任何變量,作為表達(dá)式的一部分。 例如例如: 例例4.2第第4、5行可以用下面一行代替:行可以用下面一行代替: putchar(ge
15、tchar(); 也可以用也可以用printf函數(shù)輸出:函數(shù)輸出: printf(”%c,getchar(); 3)如果在一個函數(shù)中如果在一個函數(shù)中(今為今為main函數(shù)函數(shù))要調(diào)用要調(diào)用getchar函數(shù),應(yīng)該函數(shù),應(yīng)該 在該函數(shù)的前面在該函數(shù)的前面(或本文件開頭或本文件開頭)加上加上“包含命令包含命令” #include 4.6.1 printf函數(shù)函數(shù)(格式輸出函數(shù)格式輸出函數(shù)) 1. 作作 用:用: 向終端向終端(或系統(tǒng)隱含指定的輸出設(shè)備或系統(tǒng)隱含指定的輸出設(shè)備)輸出若干個任意類型的數(shù)據(jù)輸出若干個任意類型的數(shù)據(jù)(putchar 只能輸出字符,而且只能是一個字符,而只能輸出字符,而且只能
16、是一個字符,而printf可以輸出多個數(shù)據(jù),且為任意可以輸出多個數(shù)據(jù),且為任意 類型類型)。 2. 一般格式:一般格式: printf(格式控制,輸出表列格式控制,輸出表列) 如:如:printf(%d, %cn,i,c) 括弧內(nèi)包括兩部分:括弧內(nèi)包括兩部分: 4.6 格式輸入與輸出格式輸入與輸出 “格式控制格式控制”/ “轉(zhuǎn)換控制字符串轉(zhuǎn)換控制字符串” : 是用雙引號括起來的字符串,包括兩種信息:是用雙引號括起來的字符串,包括兩種信息: 格式說明格式說明: 由由“%”和格式字符組成,如和格式字符組成,如%d,%f等。等。 其作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。其作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指
17、定的格式輸出。 格式說明總是由格式說明總是由“%”字符開始的。字符開始的。 普通字符:普通字符: 即需要原樣輸出的字符。即需要原樣輸出的字符。 例如上面例如上面printf函數(shù)中雙引號內(nèi)的逗號、空格和換行符。函數(shù)中雙引號內(nèi)的逗號、空格和換行符。 2) “輸出表列輸出表列”: 是需要輸出的一些數(shù)據(jù),可以是表達(dá)式。是需要輸出的一些數(shù)據(jù),可以是表達(dá)式。 3. 格式字符格式字符 對不同類型的數(shù)據(jù)用不同的格式字符。對不同類型的數(shù)據(jù)用不同的格式字符。 常用的幾種格式字符:常用的幾種格式字符: 1) d格式符。格式符。 用來輸出十進(jìn)制整數(shù)。用來輸出十進(jìn)制整數(shù)。 具體的用法:具體的用法: %d:按整型數(shù)據(jù)的實
18、際長度輸出。:按整型數(shù)據(jù)的實際長度輸出。 %md: m為指定的輸出字段的寬度。為指定的輸出字段的寬度。 如果數(shù)據(jù)的位數(shù)小于如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于,則按,則左端補(bǔ)以空格,若大于,則按 實際位數(shù)輸出。實際位數(shù)輸出。 如如 printf(%4d,%4d,a,b); 若若a=123,b=12345,則輸出結(jié)果為,則輸出結(jié)果為 123,12345 %ld,輸出長整型數(shù)據(jù)。,輸出長整型數(shù)據(jù)。 如如: long a=135790; printf(%ld,a); 分析:分析: 如果用如果用%d輸出,就會發(fā)生錯誤,因為整型數(shù)據(jù)的范圍為輸出,就會發(fā)生錯誤,因為整型數(shù)據(jù)的范圍為- 327683
19、2767。對。對long型數(shù)據(jù)應(yīng)當(dāng)用型數(shù)據(jù)應(yīng)當(dāng)用%ld格式輸出。格式輸出。 NOTE: * 對長整型數(shù)據(jù)也可以指定字段寬度:對長整型數(shù)據(jù)也可以指定字段寬度: 如:如: 將上面將上面printf函數(shù)中的函數(shù)中的“%ld”改為改為“%8ld”,則輸出為:,則輸出為: 135790 8列列 * 一個一個int型數(shù)據(jù)可以用型數(shù)據(jù)可以用%d或或%ld格式輸出。格式輸出。 2) o格式符格式符: (自學(xué))(自學(xué)) 以八進(jìn)制數(shù)形式輸出整數(shù)。以八進(jìn)制數(shù)形式輸出整數(shù)。 3) x格式符格式符: (自學(xué))(自學(xué)) 以十六進(jìn)制數(shù)形式輸出整數(shù)。以十六進(jìn)制數(shù)形式輸出整數(shù)。 4) u格式符:格式符: 用來輸出用來輸出uns
20、igned型數(shù)據(jù),即無符號數(shù),以十進(jìn)制形式輸出。型數(shù)據(jù),即無符號數(shù),以十進(jìn)制形式輸出。 5) c格式符:格式符: 用來輸出一個字符。用來輸出一個字符。 6) s格式符格式符: 用來輸出一個字符串。有幾種用法:用來輸出一個字符串。有幾種用法: %s, 例如:例如:printf(%s,china) 輸出輸出“china”字符串字符串(不包括雙引號不包括雙引號)。 %ms, 輸出的字符串占列,輸出的字符串占列, 如字符串本身長度大于如字符串本身長度大于m,將字符串全部輸出。,將字符串全部輸出。 若串長小于若串長小于m,則左補(bǔ)空格。,則左補(bǔ)空格。 %-ms, 如果串長小于,則在列范圍內(nèi),字符串向左靠,
21、右補(bǔ)空格。如果串長小于,則在列范圍內(nèi),字符串向左靠,右補(bǔ)空格。 %mns, 輸出占列,但只取字符串中左端輸出占列,但只取字符串中左端n個字符。個字符。 這這n個字符輸出在列的右側(cè),左補(bǔ)空格。個字符輸出在列的右側(cè),左補(bǔ)空格。 %-mns, 其中、其中、n含義同上,含義同上,n個字符輸出在列范圍的左側(cè),右補(bǔ)空格。個字符輸出在列范圍的左側(cè),右補(bǔ)空格。 如果如果n,則自動取,則自動取n值,即保證值,即保證n個字符正常輸出。個字符正常輸出。 例例4.5字符串的輸出。字符串的輸出。 main() printf(%3s,%7.2s,%.4s,%-5.3sn,china,china, china, china
22、) 輸出如下:輸出如下: china, ch,chin,chi 其中第其中第3個輸出項,格式說明為個輸出項,格式說明為“%.4s”,即只指定了,即只指定了n,沒指定,沒指定, 自動使自動使=n=4,故占,故占4列。列。 7) f格式符格式符: 用來輸出實數(shù)用來輸出實數(shù)(包括單、雙精度包括單、雙精度),以小數(shù)形式輸出。,以小數(shù)形式輸出。 有以下幾種用法:有以下幾種用法: %f, 不指定字段寬度,由系統(tǒng)自動指定,使整數(shù)部分全部如數(shù)輸出,不指定字段寬度,由系統(tǒng)自動指定,使整數(shù)部分全部如數(shù)輸出, 并輸出并輸出6位小數(shù)。位小數(shù)。 例例4.6輸出實數(shù)時的有效位數(shù)。輸出實數(shù)時的有效位數(shù)。 main() fl
23、oat x,y; x=111111111;y=222222222; printf(%f,x+y); 分析:分析: 運(yùn)行結(jié)果為運(yùn)行結(jié)果為 333333328125 顯然,只有前顯然,只有前7位數(shù)字是有效數(shù)字。位數(shù)字是有效數(shù)字。 NOTE: 1) 單精度實數(shù)的有效位數(shù)一般為單精度實數(shù)的有效位數(shù)一般為7位。不要以為凡是打印出來位。不要以為凡是打印出來 的數(shù)字都是準(zhǔn)確的。的數(shù)字都是準(zhǔn)確的。 2)雙精度數(shù)也可用雙精度數(shù)也可用%f格式輸出,它的有效位數(shù)一般為格式輸出,它的有效位數(shù)一般為16位,位, 給出小數(shù)給出小數(shù)6位。位。 例例4.7 輸出雙精度數(shù)時的有效位數(shù)。輸出雙精度數(shù)時的有效位數(shù)。 main()
24、double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(%f,x+y); 輸出結(jié)果為輸出結(jié)果為 3333333333333.333010 可以看到最后可以看到最后3位小數(shù)位小數(shù)(超過超過16位位)是無意義的。是無意義的。 %nf 指定輸出的數(shù)據(jù)共占列,其中有指定輸出的數(shù)據(jù)共占列,其中有n位小數(shù)。如果數(shù)值長度小于,則左端補(bǔ)位小數(shù)。如果數(shù)值長度小于,則左端補(bǔ) 空格。空格。 %-nf與與%nf基本相同,只是使輸出的數(shù)值向左端靠,右端補(bǔ)空格。基本相同,只是使輸出的數(shù)值向左端靠,右端補(bǔ)空格。 例例4.8輸出實數(shù)時指
25、定小數(shù)位數(shù)。輸出實數(shù)時指定小數(shù)位數(shù)。 main() float f=123.456; printf(%f %10f %10.2f %.2f %-10.2fn,f,f,f,f,f); 輸出結(jié)果如下:輸出結(jié)果如下: 123.456001 123.456001 123.46 123.46 123.46 f的值應(yīng)為的值應(yīng)為123.456,但輸出為,但輸出為123.455994, 這是由于實數(shù)在內(nèi)存中的存儲誤差引這是由于實數(shù)在內(nèi)存中的存儲誤差引 起的。起的。 8) e格式符格式符以指數(shù)形式輸出實數(shù)。以指數(shù)形式輸出實數(shù)。 (了解)(了解) 9) g格式符格式符用來輸出實數(shù)。用來輸出實數(shù)。 (了解)(了解)
26、 NOTE: 在使用在使用printf函數(shù)時,還有幾點要說明:函數(shù)時,還有幾點要說明: (1) 除了除了X,E,G外,其他格式字符必須用小寫字母,如外,其他格式字符必須用小寫字母,如%d不能不能 寫成寫成%D。 (2) 可以在可以在printf函數(shù)中的函數(shù)中的“格式控制格式控制”字符串內(nèi)包含字符串內(nèi)包含 “轉(zhuǎn)義字轉(zhuǎn)義字 符符”,如,如“n”、“t”、“b”、“r”、“f”、“377”等。等。 第一個格式說明為第一個格式說明為“%c”而不包括其后的而不包括其后的f,第二個格式說,第二個格式說 明為明為“%f”,不包括其后的,不包括其后的s,第三個格式說明為,第三個格式說明為%s。其。其 他的字符
27、為原樣輸出的普通字符。他的字符為原樣輸出的普通字符。 (3) 上面介紹的上面介紹的d、o、x、u、c、s、f、e、g等字符,如用在等字符,如用在“%” 后面就作為格式符號。后面就作為格式符號。 一個格式說明以一個格式說明以“%”開頭,以上述開頭,以上述9個格式字符之一為個格式字符之一為 結(jié)束,中間可以插入附加格式字符結(jié)束,中間可以插入附加格式字符(也稱修飾符也稱修飾符)。 例如:例如: (4) 如果想輸出字符如果想輸出字符“%”,則應(yīng)該在,則應(yīng)該在“格式控制格式控制”字符串中用連續(xù)字符串中用連續(xù) 兩個兩個%表示。表示。 如如: printf(%f%,10/3); 輸出:輸出: 0333333%
28、 4.6.2 scanf函數(shù)函數(shù)(格式輸入函數(shù)格式輸入函數(shù)) 1. 一般形式一般形式 scanf(格式控制,地址表列格式控制,地址表列) “格式控制格式控制”的含義同的含義同printf函數(shù);函數(shù); “地址表列地址表列”是由若干個地址組成的表列,可以是變量的地是由若干個地址組成的表列,可以是變量的地 址,或字符串的首地址。址,或字符串的首地址。 例例4.9用用scanf函數(shù)輸入數(shù)據(jù)。函數(shù)輸入數(shù)據(jù)。 ain( ) int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(%d,%d,%dn,a,b,c); 圖圖4.84.8 分析:分析: 運(yùn)行時按以下方式輸入運(yùn)行時按
29、以下方式輸入a、b、c的值:的值: 3 4 5(輸入輸入a、b、c的值的值) 3,4,5 (輸出輸出a、b、c的值的值) &a、&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)去。見圖4.8。變量。變量a、b、c的地址是在的地址是在 編譯連接編譯連接 階段分配的。階段分配的。 “%d%d%d”表示按十進(jìn)制整數(shù)形式輸入數(shù)據(jù)。方法如下:表示按十進(jìn)制整數(shù)形式輸入數(shù)據(jù)。方法如下: 輸入數(shù)據(jù)時,在兩個數(shù)據(jù)之間以一個或多個空格間隔,輸入
30、數(shù)據(jù)時,在兩個數(shù)據(jù)之間以一個或多個空格間隔, 也可以用回車鍵、跳格鍵也可以用回車鍵、跳格鍵tab。 下面輸入均為合法:下面輸入均為合法: 3 4 5 3 4 5 3(按按tab鍵鍵)4 5 NOTE: 用用“%d%d%d”格式輸入數(shù)據(jù)時,不能用逗號作兩個數(shù)格式輸入數(shù)據(jù)時,不能用逗號作兩個數(shù) 據(jù)間的分隔符,如下面輸入不合法:據(jù)間的分隔符,如下面輸入不合法: 3,4,5 2. 格式說明格式說明 以以%開始,以一個格式字符結(jié)束,中間可以插入附加的字符。開始,以一個格式字符結(jié)束,中間可以插入附加的字符。 說明:說明: (1) 對對unsigned型變量所需的數(shù)據(jù),可以用型變量所需的數(shù)據(jù),可以用%u,%
31、d或或%o, %x格式輸入。格式輸入。 (2) 可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。 如,如,scanf(%3d%3d,&a,&b); 輸入:輸入: 123456 系統(tǒng)自動將系統(tǒng)自動將123賦給賦給a,456賦給賦給b。此方法也可用于字符型:。此方法也可用于字符型: scanf(%3c,&ch); 如果從鍵盤連續(xù)輸入如果從鍵盤連續(xù)輸入3個字符個字符abc,由于,由于ch只能容納一個字符,只能容納一個字符, 系統(tǒng)就把第一個字符系統(tǒng)就把第一個字符a賦給賦給ch。 (3) 如果在如果在%后有一個后有一個“*”附加說明符,表示跳過它指
32、定的附加說明符,表示跳過它指定的 列數(shù)。列數(shù)。 例如,例如,scanf(%2d %*3d %2d,&a,&b);如;如 果輸入如下信息:果輸入如下信息: 12 345 67 將將12賦給賦給a,%*3d表示讀入表示讀入3位整數(shù)但不賦給任何變量。然位整數(shù)但不賦給任何變量。然 后再讀入后再讀入2位整數(shù)位整數(shù)67賦給賦給b。 也就是說第也就是說第2個數(shù)據(jù)個數(shù)據(jù)“345”被跳過。在利用現(xiàn)成的一批數(shù)據(jù)被跳過。在利用現(xiàn)成的一批數(shù)據(jù) 時,有時不需要其中某些數(shù)據(jù),可用此法時,有時不需要其中某些數(shù)據(jù),可用此法“跳過跳過”它們。它們。 (4) 輸入數(shù)據(jù)時不能規(guī)定精度。輸入數(shù)據(jù)時不能規(guī)定精度。 例如,例如, sca
33、nf(%72f,&a); 是不合法的,不能企圖用這樣的是不合法的,不能企圖用這樣的scanf函數(shù)并輸入以下數(shù)據(jù)而使函數(shù)并輸入以下數(shù)據(jù)而使a 的值為的值為1234567。1234567 3. 使用使用scanf函數(shù)時應(yīng)注意的問題函數(shù)時應(yīng)注意的問題 scanf函數(shù)中的函數(shù)中的“格式控制格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是后面應(yīng)當(dāng)是變量地址,而不應(yīng)是 變量名變量名。 例如:例如: 如果如果a、b為整型變量,則為整型變量,則 scanf(%d,%d,a,b); 是不對的,應(yīng)將是不對的,應(yīng)將“a,b”改為改為“&a,&b”。這是。這是c語言與其他高語言與其他高 級語言不同之處。級語言不同之處。 (2)
34、 如果在如果在“格式控制格式控制”字符串中除了格式說明以外還有其他字符,字符串中除了格式說明以外還有其他字符, 則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。 例如例如 scanf(%d,%d,&a,&b); 輸入時應(yīng)用如下形式:輸入時應(yīng)用如下形式: 3,4 注意注意3后面是逗號,它與后面是逗號,它與scanf函數(shù)中的函數(shù)中的“格式控制格式控制”中的逗號對應(yīng)。中的逗號對應(yīng)。 如果輸入時不用逗號而用空格或其他字符是不對的:如果輸入時不用逗號而用空格或其他字符是不對的: 3 4(不對不對) 3:4 (不對不對) 如果是如果是 scanf(%d %d,&a,&b
35、); 輸入時兩個數(shù)據(jù)間應(yīng)空輸入時兩個數(shù)據(jù)間應(yīng)空2個或更多的空格字符。如:個或更多的空格字符。如: 10 34或或10 34 如果是如果是 scanf(%d %d %d,&h,&,&s); 輸入應(yīng)該用輸入應(yīng)該用 以下形式:以下形式: 12 23 36 如果是如果是 scanf(a=%d,b=%d,c=%d,&a,&b,&c); 輸入應(yīng)為以下形式:輸入應(yīng)為以下形式: a=12,b=24,c=36 目的:目的: 這種形式為了使用戶輸入數(shù)據(jù)時添加必要的信息以幫助理解,這種形式為了使用戶輸入數(shù)據(jù)時添加必要的信息以幫助理解, 不易發(fā)生輸入數(shù)據(jù)的錯誤。不易發(fā)生輸入數(shù)據(jù)的錯誤。 (3) 在用在用“%c”格式輸
36、入字符時,空格字符和格式輸入字符時,空格字符和“轉(zhuǎn)義字符轉(zhuǎn)義字符”都作都作 為有效字符輸入:為有效字符輸入: scanf(%c%c%c,&c1,&c2,&c3); 如輸入如輸入a b c 字符字符a送給送給c1,字符,字符 送給送給c2,字符,字符b送給送給c3,因為,因為%c 只要求讀入一個字符,后面不需要用空格作為兩個字符的間只要求讀入一個字符,后面不需要用空格作為兩個字符的間 隔,因此隔,因此 作為下一個字符送給作為下一個字符送給c2。 (4) 在輸入數(shù)據(jù)時,遇以下情況時該數(shù)據(jù)認(rèn)為結(jié)束。在輸入數(shù)據(jù)時,遇以下情況時該數(shù)據(jù)認(rèn)為結(jié)束。 遇空格,或按遇空格,或按“回車回車”或或“跳格跳格”(tab)鍵。鍵。 按指定的寬度結(jié)束,如按指定的寬度結(jié)束,如“%3d”,只取,只取3列。列。 遇非法輸入。遇非法輸入。 如如scanf(%d%c%f,&a,&b,&c); 若輸入若輸入 1234 a 123o.26 a b
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新形勢下快捷酒店行業(yè)可持續(xù)發(fā)展戰(zhàn)略制定與實施研究報告
- 新形勢下虛擬現(xiàn)實VR行業(yè)快速做大市場規(guī)模戰(zhàn)略制定與實施研究報告
- 2024年一年級語文上冊教學(xué)總結(jié)
- 2019-2025年中國番紅花行業(yè)市場運(yùn)營現(xiàn)狀及投資規(guī)劃研究建議報告
- 三年級數(shù)學(xué)計算題專項練習(xí)及答案集錦
- 船舶玻璃纖維通信天線桿 10米高透波絕緣監(jiān)控支架 玻璃鋼照明燈桿
- 多肉病蟲知識培訓(xùn)課件
- 二零二五年度商務(wù)中心租賃合作協(xié)議3篇
- 二零二五年度醫(yī)療健康大數(shù)據(jù)分析與咨詢服務(wù)合同2篇
- 水平評價類技能人員職業(yè)資格退出目錄安排(水平類76項)
- 全國生態(tài)環(huán)境監(jiān)測專業(yè)技術(shù)人員大比武理論試題集 第八章 自動監(jiān)測
- 鋼材壓延加工生產(chǎn)技術(shù)
- DL-T5706-2014火力發(fā)電工程施工組織設(shè)計導(dǎo)則
- 重慶市2023-2024學(xué)年七年級上學(xué)期期末考試語文試題(解析版)
- 傳承傳統(tǒng)文化教育教案(3篇模板)
- 安徽省合肥市瑤海區(qū)2023-2024學(xué)年六年級上學(xué)期期末數(shù)學(xué)試卷
- 生態(tài)安全與環(huán)境風(fēng)險評估預(yù)警機(jī)制
- 物理-海南省天一大聯(lián)考2023-2024學(xué)年高三學(xué)業(yè)水平診斷(二)帶答案
- 2023年海南省公務(wù)員錄用考試《行測》真題和答案解析
- 冰晶石生產(chǎn)工藝
- 倉庫風(fēng)險應(yīng)急處置預(yù)案
評論
0/150
提交評論