南京郵電大學(xué)C語言課件第3章.ppt
《南京郵電大學(xué)C語言課件第3章.ppt》由會員分享,可在線閱讀,更多相關(guān)《南京郵電大學(xué)C語言課件第3章.ppt(25頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第3章 順序結(jié)構(gòu)程序設(shè)計 3 1順序結(jié)構(gòu)程序的基本操作3 2格式輸出函數(shù)3 3格式輸入函數(shù)3 4字符輸出函數(shù)3 5字符輸入函數(shù)3 6習(xí)題 3 1順序結(jié)構(gòu)程序設(shè)計的基本操作 如何在程序中給變量賦值如何進(jìn)行數(shù)據(jù)的輸入輸出 數(shù)據(jù)的輸入與輸出應(yīng)包括以下幾項 用于輸入或輸出的設(shè)備 輸入或輸出數(shù)據(jù)的格式 輸入或輸出的具體內(nèi)容 在C語言中 提供了用于輸入與輸出的函數(shù) 在這些函數(shù)中 鍵盤是標(biāo)準(zhǔn)輸入設(shè)備 顯示器是標(biāo)準(zhǔn)輸出設(shè)備 教學(xué)進(jìn)程 3 2 格式輸出函數(shù) printf 格式控制 輸出表 教學(xué)進(jìn)程 C 格式控制部分要用一對雙撇號括起來 它用于說明輸出項目所采用的格式 輸出表中的各項目指出了所要輸出的內(nèi)容 在格式控制中 用于說明輸出數(shù)據(jù)格式的格式說明符總是以 開頭 后面緊跟的是具體的格式 用于輸出的常用格式說明符有以下幾種 十進(jìn)制形式 教學(xué)進(jìn)程 d或 md用于基本整型 ld或 mld用于長整型 u或 mu用于無符號基本整型 lu或 mlu用于無符號長整型 m表示輸出的整型數(shù)據(jù)所占總寬度 即列數(shù) 當(dāng)實際數(shù)據(jù)的位數(shù)不到m位時 數(shù)據(jù)前面將用空格補(bǔ)滿 如果在格式說明符中沒有用m來說明數(shù)據(jù)所占的寬度 則以輸出數(shù)據(jù)的實際位數(shù)為準(zhǔn) 如果在格式說明符中說明了寬度m 但實際輸出的數(shù)據(jù)位數(shù)大于m 則也以輸出數(shù)據(jù)的實際位數(shù)為準(zhǔn)進(jìn)行輸出 整型格式說明符 3 2 1 3 2 2 實型格式說明符 十進(jìn)制數(shù)形式 教學(xué)進(jìn)程 指數(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ù)進(jìn)行輸出 需要指出的是 在C語言中 用于輸出單精度實型數(shù)據(jù)與雙精度實型數(shù)據(jù)格式說明符是一樣的 3 2 3 輸出表中可以有多個輸出項目 但各輸出項目之間要用 分隔 各輸出項目可以是常量 變量以及表達(dá)式 格式說明符為 c或 mc其中m表示輸出的寬度 即在這種情況下 在輸出字符的前面將要補(bǔ)m 1個空格 字符型格式說明符 格式輸出函數(shù)中的 格式控制 是一個字符串 其中每一個 后面的字符是格式說明符 用于說明相應(yīng)輸出數(shù)據(jù)的輸出格式 而每一個格式說明符的結(jié)束符分別為d 整型 f 實型 c 字符型 s 字符串 將在9 3 3節(jié)中介紹 而格式控制中除格式說明符外的其他字符將按原樣輸出 教學(xué)進(jìn)程 下面對各種基本類型數(shù)據(jù)的格式輸出作幾點說明 例3 1 P54 例3 1 設(shè)有以下程序 include stdio h main inta b floatx y s a 34 b 56 x 2 5 y 4 5 s x x y y printf a d b d n a b printf x 6 2f y 6 2f s 6 2f n x y s 這個程序經(jīng)編譯連接后 運(yùn)行輸出的結(jié)果為 表示空格 a 34 b 56x 2 50 y 4 50 s 26 50 教學(xué)進(jìn)程 字符型格式說明符 字符型格式說明符 格式輸出函數(shù)的執(zhí)行過程如下 教學(xué)進(jìn)程 首先 在計算機(jī)內(nèi)存中開辟一個輸出緩沖區(qū) 用于存放輸出項目表中各項目數(shù)據(jù) 然后 依次計算項目表中各項目 常量或變量或表達(dá)式 的值 并按各項目數(shù)據(jù)類型應(yīng)占的字節(jié)數(shù)依次將它們存入輸出緩沖區(qū)中 最后 根據(jù) 格式控制 字符串中的各格式說明符依次從輸出緩沖區(qū)中取出若干字節(jié)的數(shù)據(jù) 如果是非格式說明符 則將按原字符輸出 轉(zhuǎn)換成對應(yīng)的十進(jìn)制數(shù)據(jù)進(jìn)行輸出 其中從輸出緩沖區(qū)中取多少個字節(jié)的數(shù)據(jù)是按照對應(yīng)格式說明符說明的數(shù)據(jù)類型 在 格式控制 的格式說明符中 如果帶有寬度說明 則在左邊沒有數(shù)字的位置上用空格填滿 即輸出的數(shù)字是右對齊 但如果在寬度說明前加一個負(fù)號 則輸出為左對齊 即在右邊補(bǔ)空格 例3 2 設(shè)有如下C程序 include stdio h main longintxx yy zz xx 1 yy 255 zz 1 printf xx ld yy ld zz ld n xx yy zz printf xx d yy d zz d n int xx int yy int zz printf xx d yy d zz d n xx int yy int zz 該程序運(yùn)行的結(jié)果如下 xx 1 yy 255 zz 1xx 1 yy 255 zz 1xx 1 yy 0 zz 255 教學(xué)進(jìn)程 例3 3 設(shè)有如下C程序 include stdio h main doublex 34 567 printf x f n x printf x d n x printf x d n int x 這個程序的實際運(yùn)行結(jié)果為x 34 567000 x 27263x 34 顯然 這個程序中的第二個格式輸出語句輸出的結(jié)果是錯誤的 這是因為在第二個格式輸出語句中 格式說明符 d是基本整型格式說明符 而輸出項目是雙精度型的數(shù)據(jù) 它們是不匹配的 教學(xué)進(jìn)程 格式輸入函數(shù) 3 3 教學(xué)進(jìn)程 scanf 格式控制 內(nèi)存地址表 其中scanf 是C編譯系統(tǒng)提供的格式輸入函數(shù) 格式控制部分要用一對雙撇號括起來 它用于說明輸入數(shù)據(jù)時應(yīng)使用的格式 內(nèi)存地址表中的各項目指出各輸入數(shù)據(jù)所存放的內(nèi)存地址 與格式輸出一樣 在格式控制中 用于說明輸入數(shù)據(jù)格式的格式說明符總是以 開頭 后面緊跟的是具體的格式 用于數(shù)據(jù)輸入的常用格式說明符有以下幾種 C 整型格式說明符 教學(xué)進(jìn)程 十進(jìn)制形式 d或 md用于一般整型 ld或 mld用于長整型 u或 mu用于無符號基本整型 lu或 mlu用于無符號長整型 由此可以看出 用于輸入與輸出整型數(shù)據(jù)的格式說明符是完全一樣的 m表示輸入數(shù)據(jù)時的寬度 即列數(shù) 與輸出情形一樣 對于八進(jìn)制形式與十六進(jìn)制形式的輸入格式 主要用于輸入無符號整型的數(shù)據(jù) 3 3 1 實型格式說明符 3 3 2 教學(xué)進(jìn)程 單精度實型 雙精度實型 lf f或 e 由此可以看出 與輸出不同 在用于輸入時 無論是單精度實型還是雙精度實型 都不能用m n來指定輸出的寬度和小數(shù)點后的位數(shù) 用于輸入的字符型格式說明符為 c或 mc 字符型格式說明符 3 3 3 教學(xué)進(jìn)程 下面對格式輸入作幾點說明 在格式輸入中 內(nèi)存地址表中的各項目必須是變量地址 而不能是變量名 且彼此間用 分隔 為此 C語言專門提供了一個取地址運(yùn)算符 例如 a表示變量a在內(nèi)存中的首地址 字符型格式說明符 教學(xué)進(jìn)程 當(dāng)用于輸入整型數(shù)據(jù)的格式說明符中沒有寬度說明時 則在具體輸入數(shù)據(jù)時分為以下兩種情況 如果各格式說明符之間沒有其他字符 則在輸入數(shù)據(jù)時 兩個數(shù)據(jù)之間用 空格 或 Tab 或 回車 來分隔 如果各格式說明符之間包含其他字符 則在輸入數(shù)據(jù)時 應(yīng)輸入與這些字符相同的字符作為間隔 例如 設(shè)有如下說明inta b floatc d 現(xiàn)要利用格式輸入函數(shù)輸入a 12 b 78 c 12 5 d 7 6 采用不同的格式說明 其輸入數(shù)據(jù)的形式也是不同的 字符型格式說明符 教學(xué)進(jìn)程 字符型格式說明符 教學(xué)進(jìn)程 當(dāng)整型或字符型格式說明符中有寬度說明時 按寬度說明截取數(shù)據(jù) 一個字符型變量只能存放一個字符 教學(xué)進(jìn)程 在用于輸入的實型格式說明符中不能用m n來指定輸出的寬度和小數(shù)點后的位數(shù) 這是與輸出的不同之處 例如 下列用法是錯誤的 scanf 7 2f a 為了便于程序執(zhí)行過程中從鍵盤輸入數(shù)據(jù) 在一個C程序開始執(zhí)行時 系統(tǒng)就在計算機(jī)內(nèi)存中開辟了一個輸入緩沖區(qū) 用于暫存從鍵盤輸入的數(shù)據(jù) 開始時該輸入緩沖區(qū)是空的 當(dāng)執(zhí)行到一個輸入函數(shù)時 就檢查輸入緩沖區(qū)中是否有數(shù)據(jù) 字符型格式說明符 如果輸入緩沖區(qū)中沒有數(shù)據(jù) 即輸入緩沖區(qū)位空 則等待用戶從鍵盤輸入數(shù)據(jù)并依次存放到輸入緩沖區(qū)中 當(dāng)輸入一個或符后 將依次按照 格式控制 中還未用過的格式說明符從輸入緩沖區(qū)中取出數(shù)據(jù)轉(zhuǎn)換成計算機(jī)中的表示形式 二進(jìn)制 最后存放到內(nèi)存地址表中指出的對應(yīng)地址中 字符型格式說明符 教學(xué)進(jìn)程 在上述兩種中的任一種情況下 從輸入緩沖區(qū)中取數(shù)據(jù) 如果遇到或字符 則將輸入緩沖區(qū)清空 此時如果 格式控制 中的格式說明符還未用完 則繼續(xù)等待用戶從鍵盤輸入數(shù)據(jù)并依次存放到輸入緩沖區(qū)中 直到輸入一個或符后 再依次按照 格式控制 中還未用過的格式說明符從輸入緩沖區(qū)中取出數(shù)據(jù)轉(zhuǎn)換成計算機(jī)中的表示形式 二進(jìn)制 最后存放到內(nèi)存地址表中指出的對應(yīng)地址中 這個過程直到 格式控制 中的格式說明符用完為止 此時如果輸入緩沖區(qū)中的數(shù)據(jù)還未取完 則將留給下一個輸入函數(shù)使用 字符型格式說明符 教學(xué)進(jìn)程 與格式輸出一樣 格式輸入的格式控制中的各格式說明符與內(nèi)存地址表中的變量地址在個數(shù) 次序 類型方面必須一一對應(yīng) 從以上輸入函數(shù)的執(zhí)行過程可以看出 從鍵盤輸入數(shù)據(jù)是以或作為結(jié)束的 當(dāng)輸入的數(shù)據(jù)一行不夠時 可以在下一行繼續(xù)輸入 當(dāng)一行上的數(shù)據(jù)用不完時 可以留給下一個輸入函數(shù)使用 需要注意的是 由于或是作為鍵盤輸入數(shù)據(jù)的結(jié)束符 因此 在輸入函數(shù)的 格式控制 中 最后不能加換行符 n 例3 5 P61 例3 5 設(shè)有C程序如下 include stdio h main doublex printf inputx scanf f x printf x f n x 這個程序的運(yùn)行結(jié)果為 其中有下劃線的部分為鍵盤輸入 inputx 123 456x 0 000000 顯然 輸出語句輸出的x值是錯誤的 這是因為 x定義為雙精度型的實型變量 占8B 但它使用的是單精度實型的輸入格式說明符 當(dāng)輸入一個實型數(shù)123 456后 將按照單精度輸入格式說明符將它轉(zhuǎn)換成計算機(jī)中的表示形式 只占4B 最后存放到為雙精度實型變量x所分配的存儲空間的低4B中 而為雙精度實型變量x所分配的存儲空間的高4B中的各位均是0 這就造成雙精度實型變量x的 階碼N 2 的11位偏移碼均位0 這是C語言中無法表示的一個絕對值很小的數(shù) 稱為下溢 默認(rèn)為實型數(shù)0 0 教學(xué)進(jìn)程 教學(xué)進(jìn)程 字符輸出函數(shù) 3 4 這個函數(shù)的功能是 在顯示屏幕的當(dāng)前光標(biāo)位置處輸出項目c所表示的一個字符 其中c可以是字符型常量 字符型變量 整型變量或整型表達(dá)式 字符輸出函數(shù)的執(zhí)行過程與格式輸出函數(shù)的執(zhí)行過程完全相同 字符輸出函數(shù)的形式為putchar c 例3 6 設(shè)有如下C程序 include stdio h main intx 68 chary B putchar A putchar y putchar 67 putchar x putchar 34 25 該程序的輸出結(jié)果為ABCD 例3 7 設(shè)有C程序如下 include stdio h main intx 68 chary B putchar A putchar n putchar y putchar n putchar 67 putchar n putchar x putchar n putchar 34 25 putchar n 在這個程序中 在輸出每一個字符后 緊接著輸出一個換行 最后輸出結(jié)果為 ABCD 教學(xué)進(jìn)程 字符輸入函數(shù) 3 5 在C語言中 字符輸入函數(shù)的形式為getchar 教學(xué)進(jìn)程 這個函數(shù)的功能是接收從鍵盤輸入的一個字符 例如 下面的程序執(zhí)行過程中 將等待從鍵盤輸入一個字符賦給字符型變量x include stdio h main charx x getchar 需要說明的是 在執(zhí)行字符輸入函數(shù)時 由鍵盤輸入的字符 依次存放在輸入緩沖區(qū)中 同時也在屏幕上顯示 并且以結(jié)束 但一個字符輸入函數(shù)只順序接收一個字符 輸入緩沖區(qū)中剩下的字符數(shù)據(jù)將留給下面的字符輸入函數(shù)或格式輸入函數(shù)使用- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 南京 郵電大學(xué) 語言 課件
鏈接地址:http://ioszen.com/p-8395693.html