二級C之數據的輸入輸出.ppt
《二級C之數據的輸入輸出.ppt》由會員分享,可在線閱讀,更多相關《二級C之數據的輸入輸出.ppt(65頁珍藏版)》請在裝配圖網上搜索。
第二章基本數據類型及數據的輸入輸出 2 0預備知識2 1標識符 常量與變量2 2數據類型2 3運算符和表達式練習與實踐 2 0預備知識計算機中數的表示及進制轉換數碼 基與權數碼 表示數的符號基 數碼的個數權 每一位所具有的值數制 十進制 4956 4 10 9 10 5 10 6 10 二進制 1011 1 2 0 2 1 2 1 2 十六進制 81AE 8 16 1 16 10 16 14 16 八進制 4275 4 8 2 8 7 8 5 8 各種進制之間的轉換二進制 八進制 十六進制轉換成十進制方法 按權相加 各種進制之間的轉換 整數 二進制 八進制 十六進制轉換成十進制方法 按權相加 十進制轉換成二進制 八進制 十六進制原理 方法 連續(xù)除以基 從低到高記錄余數 直至商為0 二進制與八進制之間的轉換二進制轉換成八進制 從右向左 每3位一組 不足3位左補0 轉換成八進制八進制轉換成二進制 用3位二進制數代替每一位八進制數 例 1101001 2 001 101 001 2 151 8 例 246 8 010 100 110 2 10100110 2 000 0001 1010 2011 3100 4101 5110 6111 7 二進制與十六進制之間的轉換二進制轉換成十六進制 從右向左 每4位一組 不足4位左補0 轉換成十六進制十六進制轉換成二進制 用4位二進制數代替每一位十六進制數 例 11010101111101 2 0011 0101 0111 1101 2 357D 16 例 4B9E 16 0100 1011 1001 1110 2 100101110011110 2 0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F 字節(jié)和位內存以字節(jié)為單元組成每個字節(jié)有一個地址一個字節(jié)一般由8個二進制位組成每個二進位的值是0或1 數值的表示方法 原碼 反碼和補碼原碼 最高位為符號位 其余各位為數值本身的絕對值反碼 正數 反碼與原碼相同負數 符號位為1 其余位對原碼取反補碼 正數 原碼 反碼 補碼相同負數 最高位為1 其余位為原碼取反 再對整個數加1 9 5 49 7 16 14 12 為什么用補碼表示 25 19 25 19 25 10 00011001 2 19 10 11101101 200011001 11101101 100000110 為什么用補碼表示 19 25 19 25 19 10 00010011 2 25 10 11100111 200010011 11100111 11111010 6 引入補碼之后符號位也進入了運算 不用再單獨處理符號位 負數補碼轉換成十進制數 最高位不動 其余位取反加1 例補碼 11111001取反 10000110加1 10000111 7 2 1常量與變量標識符定義 用來標識變量 常量 函數等的字符序列組成 只能由字母 數字 下劃線組成 且第一個字母必須是字母或下劃線大小寫敏感不能使用關鍵字長度 最長32個字符 不同的c語言編譯器規(guī)定長度不同 命名原則 見名知意不宜混淆如l與I o與0 例 判斷下列標識符號合法性sumSumM D JohndayDate3daysstudent name 33lotus 1 2 3chara b above 12314 2005 4 以下不能定義為用戶標識符是A MainB 0C intD sizeof M D John 3days 33 char 123 a b 32個關鍵字 由系統定義 不能重作其它定義 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile 一般用大寫字母是宏定義預處理命令 不是C語句直接常量 整型常量實型常量字符常量字符串常量 如 definePRICE30 常量定義 程序運行時其值不能改變的量 即常數 分類 符號常量 用標識符代表常量定義格式 define符號常量常量 例符號常量舉例 definePRICE30main intnum total num 10 total num PRICE printf total d total 運行結果 total 300 變量 其值可以改變的量概念 每個變量有一個名字 用標識符表示 每個變量有一個存儲空間 存儲單元 該單元中的狀態(tài)所表示的數為此時變量的值 變量初始化 定義時可以賦初值 合法標識符 變量的使用 必須先定義 后使用 定義可以放在函數體的前部 也可以放在函數的外部或復合語句的開頭 變量定義的一般格式 數據類型變量1 變量2 變量n 如 inta b c floatx y 例 inta 2 b c 4 floatdata 3 67 charch A intx 1 y 1 z 1 intx y z 1 例2floata b c c a b Illegaluseoffloatingpointinfunctionmain 變量定義位置 一般放在函數開頭 例1intstudent stadent 19 Undefinedsymbol statent infunctionmain 每一個變量都有一個類型 表明了為它的存儲屬性 分配空間的大小 表示的數的范圍 所能進行的運算 例2 1main floatlength area radius length為周長 area為面積 radius半徑 printf nEnteraradius scanf f 程序的運行情況為 Enteraradius 2 8 lengthis 17 584000areais 24 617599 2 2數據類型數據類型總表 數據類型決定 1 數據占內存字節(jié)數2 數據取值范圍3 其上可進行的操作 2 2 1整數類型整數類型的標識符是int 整型數據根據其占用的內存字節(jié)數不同 可加限定詞 short 短整型 int long 長整型 short int long可用sizeof 類型標識符 測量unsignedshort 無符號短整型 unsignedint 無符號整型 unsignedlong 無符號長整型 其中short和long的引入是為滿足實際要求的不同長度的整數 而經unsigned限定詞限定的整數總是正的 整型常量 整常數 三種形式 十進制整數 由數字0 9和正負號表示 如123 456 0八進制整數 由數字0開頭 后跟數字0 7表示 如0123 011十六進制整數 由0 x開頭 后跟0 9 a f A F表示 如0 x123 0Xff注意 只有十進制數可以是負數 而八進制 十六進制只能是正數 例12與12L 例30000為int型65536為longint型 問題 0123 100 x123 100Xff 10 整型常量的類型根據其值所在范圍確定其數據類型 一個整數若值在 32768 32767內 則默認為它是int型 一個整數若值在 2147483648 2147483647之間 可使用長整型常量表示 在整常量后加字母l或L 認為它是longint型常量無符號數也可用后綴表示 整型常數的無符號數的后綴為 U 或 u 例如 358u 0 x38Au 235Lu均為無符號數 0XA5Lu表示十六進制無符號長整數A5 其十進制為165 一個非負的整數 只要它的值不超過相應變量的取值范圍 就可以賦給unsigned型變量 例如 可以將6000賦給一個unsignedint型變量 但卻不可以將66000賦給一個unsignedint型變量 將會出現溢出錯誤 整型變量定義方法 inta1 a2 unsignedintb1 b2 一個整型常量只可以賦給能容納下其值的整型變量 如a1 a2的取值范圍為 32768 32767b1 b2的取值范圍為0 65535如果 a1 65535 或者 b1 1 在內存中數值將不是所賦的數值 2 2 2實數類型實數類型分為單精度 float 和雙精度 double 類型 二者的區(qū)別在于所占存儲位的多少 從而決定了其取值范圍 通常以32位 bits 來存儲單精度實數型數據 以64位來存儲雙精度實型數據 實型常量 實數或浮點數 表示形式 小數形式 由數字和小數點組成 小數點的左右至少一邊要有數字 小數形式表示的實型常量必須要有小數點 必須有小數點 如0 123 123 123 0 0 0 123 指數形式 由尾數 e或E和指數部分組成 E的兩邊都至少要有一位數且E的右邊只允許是整數形式 e或E之前必須有數字 指數必須為整數 如12 3e3 123E2 1 23e4 e 5 1 2E 3 5 1 6e 2 5e31 234e04 表示指數8進制 1 234e 4 實型常量的類型默認double型在實型常量后加字母f或F 認為它是float型 實型變量實型變量的說明形式如下 float變量名1 變量名2 變量名n double變量名1 變量名2 變量名n float 占4字節(jié) 提供7位有效數字double 占8字節(jié) 提供15 16位有效數字 例floata a 111111 111 a 111111 1 doubleb b 111111 111 b 111111 111 floata b c doublex y 例2 2 實型變量的有效數字 main doublea a 6 152367864359046178294901 printf n 25 20f a 輸出結果為 6 15236786435904648000在這個例子中 a被賦值了一個有效位數為25位的數字 但由于a是double類型的 所以a只能接收15 16位有效數字 在printf語句中 我們使用了 20 18f這樣的格式符號 這指示printf語句在輸出a時總長度應為25位 小數點位數占20位 輸出的結果顯然顯示了25位數 但只有6 152367864359046共16位有效數字被正確顯示出來 后面的數字是一些無效的數值 這就表明double型的數據只接收15 16位有效數字 2 2 3字符類型整型 實型都是數值型 是大家比較熟悉的 除數值型外 還有一類數據是計算機經常處理的數據 這就是字符型 字符型數據包含的是一個字符集 一般用的是ASCII碼字符集見附錄A p249 字符集中的每一個字符都有一個序號 稱為ASCII碼 ASCII碼大的字符比ASCII碼小的字符值大 字符類型的標識符是char 字符常量定義 用單引號括起來的單個普通字符或轉義字符 字符常量的值 該字符的ASCII碼值 如 101 A 012 n 376 x61 a 60 0 483 例 A 101 x41 65 如 A 65 a 97 0 48 n 10 如 a A n 101 轉義字符 反斜線后面跟一個字符或一個代碼值表示 例轉義字符舉例 ch2 001 c ch2 004 c main printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Turbo C 運行結果 屏幕顯示 ABCIsay Howareyou CProgram Turbo C 例main printf Y b n 運行結果 屏幕顯示 打印機輸出 字符型變量char變量名1 變量名2 變量名n 如 charc1 c2 一個字符型變量的值只能是一個單個字符 在內存中占一個字節(jié) 字符變量存放的是字符的ASCII碼 char與int數據間可進行算術運算 由于字符型變量在內存中是以字符的ASCII碼 一個無符號整數的形式來存放的 所以在一定范圍內 字符型數據和整型數據是可以互相通用的 二者的區(qū)別僅在于 字符型常量占一個字節(jié) 而整型常量占兩個字節(jié) 例a D a 68 x A 5 x 65 5 s G s 33 71 例2 3 將小寫字母轉化為大寫字母 main charc1 c2 c1 x c2 y c1 c1 32 c2 c2 32 printf n c c x1 x2 程序的輸出結果是 X Y這個例子是將小寫字母轉化為大寫字母的程序 我們在對ASCII碼字符表進行觀察后會發(fā)現 大小寫對應的字母 它們之間的ASCII碼正好相差32 利用這個特性和上一個特性 我們可以編寫出非常簡單的大小寫字母轉換程序 字符常量與字符串常量不同 字符串常量定義 用雙引號 括起來的字符序列存儲 每個字符串尾自動加一個 0 作為字符串結束標志 例 charch ch A 沒有字符串變量 用字符數組存放 15 2006 4 以下能正確定義字符串的語句是A charstr 064 B charstr x43 C charstr D charstr 0 基本數據類型 整型 字符型 實型 有 無 說明 數據類型所占字節(jié)數隨機器硬件不同而不同 上表以IBMPC機為例 例 ch2 003 c definePRICE12 5main intnum 3 floattotal charch1 ch2 D total num PRICE ch1 ch2 A a printf total f ch1 c n total ch1 運行結果 total 37 500000 ch1 d 2 3運算符和表達式 學習運算符應注意 運算符功能與運算量關系要求運算量個數要求運算量類型運算符優(yōu)先級別結合方向結果的類型 2 3 1算術運算2 3 2賦值運算2 3 3自增 自減運算2 3 4關系運算與邏輯運算2 3 5條件運算2 3 6逗號運算2 3 7位運算2 3 8類型轉換 34種運算符 算術運算符 關系運算符 邏輯運算符 位運算符 賦值運算符 及其擴展條件運算符 逗號運算符 指針運算符 求字節(jié)數 sizeof強制類型轉換 類型 分量運算符 下標運算符 其它 2 3 1算術運算2 3 1 1算術運算符基本算術運算符 結合方向 從左向右優(yōu)先級 2 3 4 說明 可為單目運算符時 右結合性兩整數相除 結果為整數 要求兩側均為整型數據 例5 2 5 2 0 例5 2 5 2 1 10 5 1 5 5 2 例5 2 2 5 2 0 2 5 例5 2 1 5 2 11 10 15 1 05 5 2 2 3 1 2算術表達式及其書寫特點算術表達式是用算術運算符 圓括號將運算對象連接起來的符合C語言的語法規(guī)則的式子 其中 運算對象可以是常量 變量 表達式 函數等等 書寫時注意以下幾點 C表達式中的乘號不能省略 例如 數學式b2 4ac相應的C表達式應寫成 b b 4 a c C表達式中只能使用系統允許的標識符 例如 數學式 r2相應的C表達式應寫成 3 14159 r r C表達式中的內容必須書寫在同一行 不允許有分子分母形式 必要時要利用圓括號保證運算的順序 例如 c d相應的C表達式應寫成 a b c d C表達式不允許使用方括號和花括號 只能使用圓括號來幫助限定運算順序 可以使用多層圓括號 但左右括號必須配對 運算時從內層圓括號開始 由內向外依次計算表達式的值 2 3 2賦值運算賦值運算符 賦值表達式簡單賦值運算符 賦值表達式格式 變量標識符 表達式作用 將賦值號右邊的表達式計算出來 將其值賦給左邊的一個變量 復合賦值運算符種類 含義 exp1op exp2 exp1 exp1opexp2 例a 3 d func c d 2 2 3 2 3賦值運算符的優(yōu)先級和結合性優(yōu)先級 14結合方向 自右向左左側必須是變量 不能是常量或表達式 每個表達式都有一個值 當然每個值都有所屬的類型 賦值表達式的值與變量值相等 且可嵌套 賦值轉換規(guī)則 使賦值號右邊表達式值自動轉換成其左邊變量的類型 例3 x 2 y a b 3 例floatf inti i 10 f i 則f 10 0 例inti i 2 56 結果i 2 例 a b c 5a b 5 a 5 c 6 a b 4 c 6 a b 10 c 2 表達式值為5 a b c值為5 b 5 a 5 表達式值11 c 6 a 11 表達式值10 a 10 b 4 c 6 表達式值5 a 5 b 10 c 2 例 a 12 a a a a 例 inta 2 a 4 1 a a a a 3 a 264等價于a a a a a a a 0等價于a a a a a a a a 3 不同類型數據間的轉換隱式轉換什么情況下發(fā)生運算轉換 不同類型數據混合運算時賦值轉換 把一個值賦給與其類型不同的變量時輸出轉換 輸出時轉換成指定的輸出格式函數調用轉換 實參與形參類型不一致時轉換運算轉換規(guī)則 不同類型數據運算時先自動轉換成同一類型 顯式轉換 強制轉換 一般形式 類型名 表達式 例 int x y int x y double 3 2 int 3 6說明 強制轉換得到所需類型的中間變量 原變量類型不變 例main floatx inti x 3 6 i int x printf x f i d x i 結果 x 3 600000 i 3 精度損失問題 2 3 3自增 自減運算自增 自減運算符 表達式 結合性 優(yōu)先級作用 使變量值加1或減1種類 前置 i i 先執(zhí)行i 1或i 1 再使用i值 后置i i 先使用i值 再執(zhí)行i 1或i 1 例j 3 k j 等價于 j k j j 3 k j 等價于 k j j j 3 printf d j j 3 printf d j a 3 b 5 c a b a 3 b 5 c a b k 4 j 4 k 3 j 4 4 3 c 20 a 4 c 15 a 4 每個表達式都有一個值 當然每個值都有所屬的類型 i 中表達式 i 的值是變量i在 之前的值 但i 的值已經增1 i 中表達式 i 的值是變量i在 之后的值 不能用于常量和表達式 如5 a b 結合方向 自右向左優(yōu)先級 2 3 4 例 i i i 3 printf d i 3 例 i i 3 printf d i 使用自增 自減運算符的注意事項 對于形如a b的表達式 C語言的編譯系統在處理時盡可能多的自左至右將若干個字符結合成一個運算符 因此 a b被理解為 a b 而不是a b 為避免產生誤解 建議將此表達式寫成 a b的形式 例如 x i i i 應被理解為z i i i 自增 自減運算符使得C的表達式靈活 簡潔 但有時候會使初學者迷惑 若使用不當 會產生意外的后果 這就需要在使用時尤其注意 當一個表達式中 含有若干個子表達式時 ANSIC沒有規(guī)定運算符和運算對象的計算次序 因此不同編譯系統處理的順序可能不同 例如 x a b c d無所謂 例如 a 3 y a a 不同的編譯系統有兩種處理方式 結果不同 A 按從左到右的順序處理為 先取a的值3 再計算 a a的值自增為4 子表達式 a的值也為4 所以相乘的結果為12 B 按從右到左的順序處理為 先計算 a a的值自增為4 子表達式 a的值也為4 再取a的值為4 所以相乘的結果為16 在一個表達式中 出現對同一個變量的多次自增 自減運算時 有的編譯系統按從左到右的次序處理 而有些系統一次性的處理這些運算是從右到左 如TURBOC2 0系統 請看下列程序的輸出結果 main inti 6 k 6 a b a i i i b k k k printf ni d k d i k printf na d b d a b 若按從左到右的次序處理 預期的運行結果為 i 9 k 9a 21 b 24 TC2 0程序的運行結果如下 i 9 k 9a 18 b 27 在調用函數時 對于實參的求值順序 ANSIC也沒有規(guī)定 有的系統按從左到右的順序求值 有的相同按從右到左的順序求值 例3 2 main inti 5 printf n d d i i 若按從左到右的次序處理 預期的運行結果為 5 6 TC2 0程序的運行結果如下 6 6 編寫程序時 應注意把可讀性放在第一位 避免編寫晦澀難懂 容易引起誤解的程序 尤其在使用自增 自減運算符時 盡量不要使用易于誤解的表達方式 為了清晰的表達編程者的意圖 可以將一個復雜的語句分解成多個簡單的語句 例如 A y a a 可改寫為b a y a b B printf n d d i i 可改寫為k i printf n d d k i a i i i 可改寫為 x i y i z i a x y z 關系運算符和關系表達式關系運算符種類 結合方向 自左向右優(yōu)先級別 例c a b c a b a b c a b ca bc a b c 關系表達式的值 是邏輯值 真 或 假 用1和0表示 例inta 3 b 2 c 1 d f a b a b cb cbf a b c 表達式值1 表達式值1 表達式值0 d 1 f 0 關系運算注意 例若a 0 b 0 5 x 0 3 則a x b的值為 0 例5 2 7 8在C中是允許的 值為 0 例inti 1 j 7 a a i j 4 0 則a 2 例 a 0結果為 A 100結果為 1 0 關系運算注意 例注意區(qū)分 與 inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 邏輯運算符和表達式邏輯運算符種類 邏輯運算真值表 C語言中 運算量 0表示 假 非0表示 真 運算結果 0表示 假 1表示 真 例ab x ya b x y a a b 優(yōu)先級 結合方向 a x x b a b x y a b x y a a b 優(yōu)先級 結合方向 例a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 值為1 值為0 值為1 值為1 值為1 值為1 5 3 2 8 4 0 值為1 優(yōu)先級 結合方向 短路特性 邏輯表達式求解時 并非所有的邏輯運算符都被執(zhí)行 只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時 才執(zhí)行該運算符 例a m a b n c d 結果m 0 n 1 條件運算符與表達式一般形式 expr1 expr2 expr3執(zhí)行過程功能 相當于條件語句 但不能取代一般if語句 例求a b printf a b d n b 0 a b a b 例 a b Y N x 2 1 1 0 x 0 x x c a c z c a A c 條件運算符可嵌套如x 0 1 x 0 1 0 優(yōu)先級 13 結合方向 自右向左如a b a c d c d a b a c d c d expr1 expr2 expr3類型可不同 表達式值取較高的類型 例x a b x 0 表達式值為 b x 0 表達式值為 a x y 1 1 5 x y 值為1 0 x y 值為1 5 逗號運算符和表達式形式 表達式1 表達式2 表達式n結合性 從左向右優(yōu)先級 15逗號表達式的值 等于表達式n的值用途 常用于循環(huán)for語句中 例a 3 5 a 4a 3 5 a 4 a 5例x a 3 6 3 x a 3 6 a例a 1 b 2 c 3 printf d d d a b c printf d d d a b c b c a 15 表達式值60 a 15 表達式值20 賦值表達式 表達式值18 x 18 逗號表達式 表達式值18 x 3 1 2 3 3 2 3 逗號運算符和表達式形式 表達式1 表達式2 表達式n結合性 從左向右優(yōu)先級 15逗號表達式的值 等于表達式n的值用途 常用于循環(huán)for語句中 例 ch2 6 c includemain intx y 7 floatz 4 x y y 6 y z printf x d n x 運行結果 x 3 位運算1 運算對象只能是整型或字符型數據 不能是實型數據 本文由小編推薦- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 二級 數據 輸入輸出
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://appdesigncorp.com/p-4382888.html