《C語(yǔ)言課件第4章-鍵盤輸入與屏幕輸出.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言課件第4章-鍵盤輸入與屏幕輸出.ppt(38頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第4章 鍵盤輸入 和屏幕輸出,哈爾濱工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 蘇小紅,本章學(xué)習(xí)內(nèi)容, 字符常量與轉(zhuǎn)義字符 字符輸出函數(shù)putchar() 字符輸入函數(shù)getchar() 數(shù)據(jù)的格式化輸出函數(shù)printf() 數(shù)據(jù)的格式化輸入函數(shù)scanf(),字符常量,字符常量是用單引號(hào)括起來的一個(gè)字符 a是字符常量,而a則是一個(gè)標(biāo)識(shí)符 3表示一個(gè)字符常量,而3則表示一個(gè)整數(shù) 轉(zhuǎn)義字符(Escape Character) 一些特殊字符(無(wú)法從鍵盤輸入或者另有他用)用轉(zhuǎn)義字符表示,字符型變量的取值范圍取決于計(jì)算機(jī)系統(tǒng)所使用的字符集 ASCII(美國(guó)標(biāo)準(zhǔn)信息交換碼)字符集 規(guī)定了每個(gè)字符所對(duì)應(yīng)的編碼 一個(gè)字
2、符以其對(duì)應(yīng)的ASCII碼的二進(jìn)制形式存儲(chǔ)在內(nèi)存中 一個(gè)字節(jié),保存一個(gè)字符(英文字母、數(shù)字、符號(hào)) 字符常數(shù)就是一個(gè)普通整數(shù),也可參與各種數(shù)學(xué)運(yùn)算 每個(gè)字符具有一個(gè)0255之間的數(shù)值,可從ASCII表查出 注意:5和整數(shù)5的區(qū)別 5的ASCII碼值是53,字符常量,4.1單個(gè)字符的輸入輸出,通過調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)來實(shí)現(xiàn) #include 字符輸出函數(shù) putchar(ch) 輸出一個(gè)字符ch 字符輸入函數(shù) getchar() 無(wú)參數(shù) 函數(shù)值為從輸入設(shè)備接收的字符,【例4.1】大小寫英文字母轉(zhuǎn)換,Press a key and then press Enter: B b,,,4.2數(shù)據(jù)的格式化屏幕輸
3、出,格式 printf(格式控制字符串, 輸出項(xiàng)表列); printf(a=%d b=%f, a, b); 可以輸出若干任意類型的數(shù)據(jù),函數(shù)名,可選輸 出表列,普通字符,,,,%c character以字符形式輸出單個(gè)字符 %s string 輸出一個(gè)字符串 %d decimal 以帶符號(hào)十進(jìn)制整數(shù)輸出 %f float 以小數(shù)形式輸出浮點(diǎn)數(shù)(6位小數(shù)) %e exponent 以標(biāo)準(zhǔn)指數(shù)形式輸出(6位小數(shù)) %g 選用%f,%e中輸出寬度較小的一種格式 %o octal 以八進(jìn)制無(wú)符號(hào)整數(shù)輸出(無(wú)前導(dǎo)0) %x hex 以十六進(jìn)制無(wú)符號(hào)整數(shù)輸出(無(wú)前導(dǎo)0 x) %u unsigned
4、 以十進(jìn)制無(wú)符號(hào)整數(shù)輸出,printf()格式字符,【例4.2】大小寫英文字母轉(zhuǎn)換,Press a key and then press Enter: B b, 98,m 表示數(shù)據(jù)占用的最小寬度 數(shù)據(jù)寬度大于m,按實(shí)際寬度輸出 數(shù)據(jù)寬度小于m時(shí),補(bǔ)空格 n 對(duì)實(shí)數(shù)表示輸出n位小數(shù) 對(duì)字符串表示最多輸出的字符個(gè)數(shù) l 長(zhǎng)整型整數(shù),加在d、o、x、u前 L long double型數(shù),加在f、e、g前 - 改變輸出內(nèi)容的對(duì)齊方式 默認(rèn)為右對(duì)齊,printf()的格式修飾符,printf()的格式修飾符,Format for float: %f General format: % . f,E
5、xample: printf(Value is:%10.4f, 32.6784728);,Value is: 32.6785,printf()的格式修飾符,Example: printf(Value is:%10f, 32.6784728);,Value is: 32.678473,Example: printf(Value is:%.3f, 32.6784728);,Value is:32.678,printf()的格式修飾符,,,Input r: 5.3 printf WITHOUT width or precision specifications: circumference = 33
6、.300854, area = 88.247263 printf WITH width and precision specifications: circumference = 33.30, area = 88.25,【例4.3】計(jì)算圓的周長(zhǎng)和面積,4.3數(shù)據(jù)的格式化鍵盤輸入,格式 scanf(格式控制字符串, 地址表列); scanf(%d,%f, ,c 以字符形式輸入單個(gè)字符 s 輸入字符串,以非空字符開始,遇第一個(gè) 空白字符結(jié)束 d 以帶符號(hào)十進(jìn)制形式輸入整型數(shù)據(jù) f 以小數(shù)形式輸入浮點(diǎn)數(shù) e 以標(biāo)準(zhǔn)指數(shù)形式輸入 o 以八進(jìn)制無(wú)符號(hào)形式輸入(無(wú)前導(dǎo)0) x 以十六進(jìn)制無(wú)符號(hào)形式輸入(無(wú)
7、前導(dǎo)0 x),scanf()的格式字符,m 表示數(shù)據(jù)占用的寬度 l 加在d、o、x、u前:輸入長(zhǎng)整型 加在f、e 前:輸入雙精度型 L 加在f、e 前:輸入long double型 h 加在d、o、x 前:輸入短整型 * 本輸入項(xiàng)在讀入后不賦給相應(yīng)的變量,scanf ()的格式修飾符,#include main() int a, b; printf(Please input a and b:); scanf(%2d%*2d%2d, ,Please input a and b:,a=12, b=56, a+b = 68,123456,,跳過一個(gè)輸入項(xiàng),輸入數(shù)據(jù)的格式控制,#include ma
8、in() int a, b; scanf(%d %d, ,問題1:當(dāng)要求程序輸出結(jié)果為 a = 12, b = 34 時(shí),用戶應(yīng)該如何輸入數(shù)據(jù)?,12 34,輸入數(shù)據(jù)的格式控制例4.4,#include main() int a, b; scanf(%d %d, ,問題2:當(dāng)限定用戶輸入數(shù)據(jù)以逗號(hào)為分隔符,即輸入數(shù)據(jù)格式為: 12,34 時(shí),應(yīng)修改程序中的哪條語(yǔ)句?怎樣修改?,,,輸入數(shù)據(jù)的格式控制例4.4,#include main() int a, b; scanf(%d %d, ,問題3:語(yǔ)句scanf(%d %d, 時(shí),用戶應(yīng)該如何輸入數(shù)據(jù)?,a = 12, b = 34,輸
9、入數(shù)據(jù)的格式控制例4.4,#include main() int a, b; scanf(%d %d, ,問題4:限定用戶輸入數(shù)據(jù)為以下格式 1234 同時(shí)要求程序輸出結(jié)果為a = 12, b = 34,%2d%2d,輸入數(shù)據(jù)的格式控制例4.4,#include main() int a, b; scanf(%d %d, ,問題5:限定用戶輸入數(shù)據(jù)為以下格式 12 34 同時(shí)要求程序輸出結(jié)果為a = 12 ,b = 34,%d ,b = %d,輸入數(shù)據(jù)的格式控制例4.4,#include main() int a, b; scanf(%d %d, ,問題6:設(shè)計(jì)程序使得用戶可以以任意字符(回
10、車、空格、制表符、逗號(hào)、其他)作為分隔符進(jìn)行數(shù)據(jù)的輸入,輸入數(shù)據(jù)的格式控制例4.4,#include main() int a, b; scanf(%d %d, ,問題7:輸入123456時(shí)程序的輸出結(jié)果是什么?,輸入數(shù)據(jù)的格式控制例4.4,a = 12, b = 56,#include main() int a, b; scanf(%d %d, ,問題8:如果用戶輸入了非法字符,例如輸入了12 3a,那么程序運(yùn)行結(jié)果如何?,輸入數(shù)據(jù)的格式控制例4.4,12 3a a = 12, b = 3,#include main() int a, b; scanf(%d %d, ,問題9:如果用戶輸
11、入的是123a,那么結(jié)果又會(huì)如何呢?,輸入數(shù)據(jù)的格式控制例4.4,123a a = 123, b = -858993460,#include main() int a, b; scanf(%d %d, ,問題10:如果程序第5行語(yǔ)句修改為...,那么結(jié)果又會(huì)如何呢?,輸入數(shù)據(jù)的格式控制例4.4,#include main() int data1, data2, sum; char op; printf(Please enter the expression data1 + data2n); scanf(%d%c%d, ,Please enter the expression data1
12、+ data2,第1次測(cè)試,12 + 3,12 4199288 = 4199300,C格式符的問題及解決例4.5,#include main() int data1, data2, sum; char op; printf(Please enter the expression data1 + data2n); scanf(%d%c%d, ,Please enter the expression data1 + data2,第2次測(cè)試,12 3,12 3 = 15,C格式符的問題及解決例4.5,#include main() int data1, data2, sum; char op;
13、printf(Please enter the expression data1 + data2n); scanf(%d%c%d, ,Please enter the expression data1 + data2,第3次測(cè)試,12+3,12+3 = 15,C格式符的問題及解決例4.5,#include main() int a; char b; float c; printf(Please input an integer:); scanf(%d, ,Please input an integer:,希望得到的運(yùn)行結(jié)果,12,Please input an character
14、:,a,Please input a float number:,3.5,integer:12,character :a,float number:3.500000,C格式符的問題及解決例4.6,#include main() int a; char b; float c; printf(Please input an integer:); scanf(%d, ,Please input an integer:,結(jié)果好像很奇怪呀!,12,Please input an character :,a,Please input a float number:,3.5,integer:12
15、,,float number:3.500000,C格式符的問題及解決例4.6,#include main() int a; char b; float c; printf(Please input an integer:); scanf(%d, ,Please input an integer:,程序修改后得到的運(yùn)行結(jié)果,12,Please input an character :,a,Please input a float number:,3.5,integer:12,character :a,float number:3.500000,C格式符的問題及解決例4.6,,,,,,
16、,,,,,#include main() int a; char b; float c; printf(Please input an integer:); scanf(%d, ,C格式符的問題及解決例4.6,,#include main() int data1, data2, sum; char op; printf(Please enter the expression data1 + data2n); scanf(%d %c%d, ,12+3,12 + 3,12 + 3,再回頭來看例4.5 如何以任意分隔符輸入加法算式?,格式輸入函數(shù)常見錯(cuò)誤,scanf(%d,%fn, 幾點(diǎn)忠告 不要拘泥于細(xì)節(jié) 不要死記硬背 在使用中慢慢掌握,注意!,,Questions and answers,,