版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、,第 3 章,順序結構程序設計,3.1 順序結構程序的基本操作 3.2 格式輸出函數(shù) 3.3 格式輸入函數(shù) 3.4 字符輸出函數(shù) 3.5 字符輸入函數(shù) 3.6 習題,3.1 順序結構程序設計的基本操作,如何在程序中給變量賦值 如何進行數(shù)據(jù)的輸入輸出?,數(shù)據(jù)的輸入與輸出應包括以下幾項: 用于輸入或輸出的設備。 輸入或輸出數(shù)據(jù)的格式。 輸入或輸出的具體內(nèi)容。,在C語言中,提供了用于輸入與輸出的函數(shù),在這些函數(shù)中,鍵盤 是標準輸入設備,顯示器是標準輸出設備。,教學進程,3.2,格式輸出函數(shù), printf (“格式控制”,輸出表) ;,教學進程,C,格式控制部分要用一對雙撇號括起來,它用于說明輸出項
2、目所采 用的格式。輸出表中的各項目指出了所要輸出的內(nèi)容。在格式控制中, 用于說明輸出數(shù)據(jù)格式的格式說明符總是以開頭,后面緊跟的是具 體的格式。 用于輸出的常用格式說明符有以下幾種。,十進制形式,教學進程,d 或 md 用于基本整型 ld 或 mld 用于長整型 u 或 mu 用于無符號基本整型 lu 或 mlu 用于無符號長整型,m表示輸出的整型數(shù)據(jù)所占總寬度(即列數(shù)),當實際數(shù)據(jù)的位數(shù)不 到m位時,數(shù)據(jù)前面將用空格補滿。如果在格式說明符中沒有用m來說明 數(shù)據(jù)所占的寬度,則以輸出數(shù)據(jù)的實際位數(shù)為準。如果在格式說明符中說 明了寬度m,但實際輸出的數(shù)據(jù)位數(shù)大于m,則也以輸出數(shù)據(jù)的實際位數(shù) 為準進行
3、輸出。,整型格式說明符,3.2.1,3.2.2,實型格式說明符,十進制數(shù)形式,教學進程,指數(shù)形式,e 或 m.ne,f 或 m.nf,在輸出實型數(shù)據(jù)時,格式說明符中的m表示整個數(shù)據(jù)所占的 寬度,n表示小數(shù)點后面所占的位數(shù)。 如果在小數(shù)點后取n位后,所規(guī)定的數(shù)據(jù)寬度m不夠輸出數(shù)據(jù) 前面的整數(shù)部分(包括小數(shù)點),則按實際的位數(shù)進行輸出。 需要指出的是,在C語言中,用于輸出單精度實型數(shù)據(jù)與雙精 度實型數(shù)據(jù)格式說明符是一樣的。,3.2.3, 輸出表中可以有多個輸出項目,但各輸出項目之間要用“,” 分隔。各輸出項目可以是常量、變量以及表達式。, 格式說明符為c 或 mc 其中m表示輸出的寬度,即在這種情
4、況下, 在輸出字符的前面將要補m-1個空格。,字符型格式說明符, 格式輸出函數(shù)中的“格式控制”是一個字符串,其中每一個 后面的字符是格式說明符,用于說明相應輸出數(shù)據(jù)的輸出格式, 而每一個格式說明符的結束符分別為d(整型)、f(實型)、 c(字符型)、s(字符串,將在9.3.3節(jié)中介紹)。而格式控制中 除格式說明符外的其他字符將按原樣輸出。,教學進程,下面對各種基本類型數(shù)據(jù)的格式輸出作幾點說明:,【例3-1】 P54,【例3-1】 設有以下程序: #include stdio.h main() int a,b; float x,y,s; a=34; b= -56; x=2.5; y=4.5; s
5、=x*x+y*y; printf(a=d,b=dn,a,b); printf(x=6.2f,y=6.2f,s=6.2fn,x,y,s); 這個程序經(jīng)編譯連接后,運行輸出的結果為( 表示空格) a=34,b=-56 x= 2.50,y= 4.50,s= 26.50,教學進程,字符型格式說明符,字符型格式說明符, 格式輸出函數(shù)的執(zhí)行過程如下:,教學進程,首先,在計算機內(nèi)存中開辟一個輸出緩沖區(qū),用于存放輸出項 目表中各項目數(shù)據(jù)。 然后,依次計算項目表中各項目(常量或變量或表達式)的值,并 按各項目數(shù)據(jù)類型應占的字節(jié)數(shù)依次將它們存入輸出緩沖區(qū)中。 最后,根據(jù)“格式控制”字符串中的各格式說明符依次從輸出
6、緩沖區(qū) 中取出若干字節(jié)的數(shù)據(jù)(如果是非格式說明符,則將按原字符輸出), 轉換成對應的十進制數(shù)據(jù)進行輸出。其中從輸出緩沖區(qū)中取多少個字節(jié) 的數(shù)據(jù)是按照對應格式說明符說明的數(shù)據(jù)類型。, 在“格式控制”的格式說明符中,如果帶有寬度說明,則在左邊沒 有數(shù)字的位置上用空格填滿(即輸出的數(shù)字是右對齊)。但如果在寬度 說明前加一 個負號(-),則輸出為左對齊,即在右邊補空格。,【例3-2】 設有如下C程序: #include stdio.h main() long int xx,yy,zz; xx=1;yy=-255;zz=1; printf(xx=ld,yy=ld,zz=ldn,xx,yy,zz); pr
7、intf(xx=d,yy=d,zz=dn,(int)xx,(int)yy,(int)zz); printf(xx=d,yy=d,zz=dn,xx,(int)yy,(int)zz); 該程序運行的結果如下: xx= 1,yy=-255,zz= 1 xx= 1,yy=-255,zz= 1 xx= 1,yy= 0,zz=-255,教學進程,【例3-3】 設有如下C程序: #include stdio.h main() double x=34.567; printf(x=fn,x); printf(x=dn,x); printf(x=dn,(int)x); 這個程序的實際運行結果為 x=34.5670
8、00 x=27263 x=34,顯然,這個程序中的 第二個格式輸出語句輸出 的結果是錯誤的,這是因 為在第二個格式輸出語句 中,格式說明符d是基本 整型格式說明符,而輸出 項目是雙精度型的數(shù)據(jù), 它們是不匹配的。,教學進程,格式輸入函數(shù),3.3,教學進程, scanf(格式控制,內(nèi)存地址表);,其中scanf()是C編譯系統(tǒng)提供的格式輸入函數(shù)。格式控制部分要用 一對雙撇號括起來,它用于說明輸入數(shù)據(jù)時應使用的格式。內(nèi)存地址 表中的各項目指出各輸入數(shù)據(jù)所存放的內(nèi)存地址。 與格式輸出一樣,在格式控制中,用于說明輸入數(shù)據(jù)格式的格式 說明符總是以開頭,后面緊跟的是具體的格式。用于數(shù)據(jù)輸入的常 用格式說明
9、符有以下幾種。,C,整型格式說明符,教學進程,十進制形式,d 或 md 用于一般整型 ld 或 mld 用于長整型 u 或 mu 用于無符號基本整型 lu 或 mlu 用于無符號長整型,由此可以看出,用于輸入與輸出整型數(shù)據(jù)的格式說明符是完全一樣的。 m表示輸入數(shù)據(jù)時的寬度(即列數(shù))。 與輸出情形一樣,對于八進制形式與十六進制形式的輸入格式,主要 用于輸入無符號整型的數(shù)據(jù)。,3.3.1,實型格式說明符,3.3.2,教學進程,單精度實型,雙精度實型,lf,f 或 e,由此可以看出,與輸出不同,在用于輸入時, 無論是單精度實型還是雙精度實型, 都不能用m.n來指定輸出的寬度和小數(shù)點后的位數(shù)。, 用于
10、輸入的字符型格式說明符為c 或 mc,字符型格式說明符,3.3.3,教學進程,下面對格式輸入作幾點說明: 在格式輸入中,內(nèi)存地址表中的各項目必須是變量地址,而不能 是變量名,且彼此間用“,”分隔。為此,C語言專門提供了一個取 地址運算符&。例如,&a表示變量a在內(nèi)存中的首地址。,字符型格式說明符,教學進程, 當用于輸入整型數(shù)據(jù)的格式說明符中沒有寬度說明時,則在具體輸入 數(shù)據(jù)時分為以下兩種情況: 如果各格式說明符之間沒有其他字符,則在輸入數(shù)據(jù)時,兩個數(shù)據(jù) 之間用空格、或Tab、或回車來分隔。 如果各格式說明符之間包含其他字符,則在輸入數(shù)據(jù)時,應輸入與 這些字符相同的字符作為間隔。,例如,設有如下
11、說明 int a, b ; float c, d ; 現(xiàn)要利用格式輸入函數(shù)輸入a=12,b=78,c=12.5,d=7.6。 采用不同的格式說明,其輸入數(shù)據(jù)的形式也是不同的。,字符型格式說明符,教學進程,字符型格式說明符,教學進程, 當整型或字符型格式說明符中有寬度說明時,按寬度說明截取數(shù)據(jù)。,一個字符型變量只能存放一個字符,教學進程, 在用于輸入的實型格式說明符中不能用m.n來指定輸出的寬度和小數(shù) 點后的位數(shù)(這是與輸出的不同之處)。 例如,下列用法是錯誤的: scanf(7.2f,&a);, 為了便于程序執(zhí)行過程中從鍵盤輸入數(shù)據(jù),在一個C程序開始執(zhí)行時, 系統(tǒng)就在計算機內(nèi)存中開辟了一個輸入
12、緩沖區(qū),用于暫存從鍵盤輸入 的數(shù)據(jù)。開始時該輸入緩沖區(qū)是空的。當執(zhí)行到一個輸入函數(shù)時,就 檢查輸入緩沖區(qū)中是否有數(shù)據(jù):,字符型格式說明符,如果輸入緩沖區(qū)中沒有數(shù)據(jù)(即輸入緩沖區(qū)位空),則等待用 戶從鍵盤輸入數(shù)據(jù)并依次存放到輸入緩沖區(qū)中。當輸入一個 或符后,將依次按照“格式控制”中還未用過的格式說明符從 輸入緩沖區(qū)中取出數(shù)據(jù)轉換成計算機中的表示形式(二進制),最 后存放到內(nèi)存地址表中指出的對應地址中。,字符型格式說明符,教學進程,在上述兩種中的任一種情況下,從輸入緩沖區(qū)中取數(shù)據(jù),如果遇到 或字符,則將輸入緩沖區(qū)清空。此時如果“格式控制”中的 格式說明符還未用完,則繼續(xù)等待用戶從鍵盤輸入數(shù)據(jù)并依次
13、存放到輸 入緩沖區(qū)中,直到輸入一個或符后,再依次按照“格式控 制“中還未用過的格式說明符從輸入緩沖區(qū)中取出數(shù)據(jù)轉換成計算機中 的表示形式(二進制),最后存放到內(nèi)存地址表中指出的對應地址中。 這個過程直到“格式控制”中的格式說明符用完為止。此時如果輸入緩沖 區(qū)中的數(shù)據(jù)還未取完,則將留給下一個輸入函數(shù)使用。,字符型格式說明符,教學進程, 與格式輸出一樣,格式輸入的格式控制中的各格式說明符與內(nèi)存地 址表中的變量地址在個數(shù)、次序、類型方面必須一一對應。,從以上輸入函數(shù)的執(zhí)行過程可以看出,從鍵盤輸入數(shù)據(jù)是以 或作為結束的。當輸入的數(shù)據(jù)一行不夠時,可以在下一行繼續(xù)輸 入;當一行上的數(shù)據(jù)用不完時,可以留給下
14、一個輸入函數(shù)使用。 需要注意的是,由于或是作為鍵盤輸入數(shù)據(jù)的結束符, 因此,在輸入函數(shù)的格式控制中,最后不能加換行符n。,【例3-5】 P61,【例3-5】 設有C程序如下: #include stdio.h main() double x; printf(input x:); scanf(f,&x); printf(x=fn,x); 這個程序的運行結果為 (其中有下劃線的部分為鍵盤輸入) input x:123.456 x=0.000000,顯然,輸出語句輸出的x值是 錯誤的。這是因為,x定義為雙精 度型的實型變量(占8B),但它使 用的是單精度實型的輸入格式說明 符。當輸入一個實型數(shù)123
15、.456后, 將按照單精度輸入格式說明符將它 轉換成計算機中的表示形式(只占 4B),最后存放到為雙精度實型變 量x所分配的存儲空間的低4B中, 而為雙精度實型變量x所分配的存 儲空間的高4B中的各位均是0,這 就造成雙精度實型變量x的(階碼N-2) 的11位偏移碼均位0,這是C語言中 無法表示的一個絕對值很小的數(shù) (稱為下溢),默認為實型數(shù)0.0。,教學進程,教學進程,字符輸出函數(shù),3.4,這個函數(shù)的功能是,在顯示屏幕的當前光標位置處輸出項目c所表 示的一個字符。其中c可以是字符型常量、字符型變量、整型變量或整 型表達式。 字符輸出函數(shù)的執(zhí)行過程與格式輸出函數(shù)的執(zhí)行過程完全相同。, 字符輸出
16、函數(shù)的形式為 putchar(c),【例3-6】 設有如下C程序: #include stdio.h main() int x=68; char y=B; putchar(A); putchar(y); putchar(67); putchar(x); putchar(34+25); 該程序的輸出結果為 ABCD;,【例3-7】 設有C程序如下: #include stdio.h main() int x=68; char y=B; putchar(A); putchar(n); putchar(y); putchar(n); putchar(67); putchar(n); putchar(x); putchar(n); putchar(34+25); putchar(n); 在這個程序中,在輸出每一個字符后, 緊接著輸出一個換行,最后輸出結果為,A B C D,教學進程,字符輸
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職(新能源汽車運用技術)應用技術階段測試題及答案
- 2025年大學石油化工技術(石油化工技術)試題及答案
- 2025年大學語文(閱讀基礎)試題及答案
- 2025年大學醫(yī)學檢驗技術(生化檢驗技術)試題及答案
- 2025年中職旅游管理(研學旅游)試題及答案
- 2025年中職第二學年(職業(yè)素養(yǎng))職業(yè)禮儀綜合測試試題及答案
- 2025年大學生物學(生態(tài)學原理)試題及答案
- 2025年注冊會計師(CPA)考試 會計科目深度解析沖刺實戰(zhàn)試卷及答案
- 政協(xié)安全生產(chǎn)視察講解
- 工科專業(yè)就業(yè)優(yōu)勢分析
- 交通安全企業(yè)培訓課件
- 2025年廣東省中考物理試卷及答案
- 皮革項目商業(yè)計劃書
- 主管護師護理學考試歷年真題試卷及答案
- 華文慕課《刑法學》總論課后作業(yè)答案
- 公路護欄波型梁施工方案
- 2025版煤礦安全規(guī)程新增變化條款考試題庫
- 基于SOLO分類理論剖析初中生數(shù)學開放題解決水平:現(xiàn)狀差異與提升策略
- 2025至2030全球及中國用戶研究軟件行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 砌筑施工安全教育培訓課件
- GB/T 7122-2025高強度膠粘劑剝離強度的測定浮輥法
評論
0/150
提交評論