第二章C語言基本元素和語句_第1頁
第二章C語言基本元素和語句_第2頁
第二章C語言基本元素和語句_第3頁
第二章C語言基本元素和語句_第4頁
第二章C語言基本元素和語句_第5頁
已閱讀5頁,還剩138頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、西北大學信息科學與技術學院. All rights reserved 2011 第 1 頁第第2章章 基本元素和語句基本元素和語句 2.1 數據的表示及存儲 2.2 程序的基本元素 2.3 輸入輸出語句 2.4 條件語句 2.5 循環語句西北大學信息科學與技術學院. All rights reserved 2011 第 2 頁第第2章章 C語言基本元素和語句語言基本元素和語句2.1.1 數字化信息編碼2.1.2 進制及進制轉換2.1.3 數值的表示和存儲2.1 數據的表示及存儲2.1.4 字符的表示和存儲2.1.5 指令的表示和存儲西北大學信息科學與技術學院. All rights reser

2、ved 2011 第 3 頁2.1 2.1 數據的存儲數據的存儲2.1.1 2.1.1 數字化信息編碼數字化信息編碼 計算機中的信息也稱為數據。由于二進制電路簡單、可靠且具有很強的邏輯功能,因此數據在計算機中均以二進制表示,并用它們的組合表示不同類型的信息。 在計算機中只能識別二進制數碼信息,因此一切非二進制數碼的信息,如數字、字母、漢字等都要用二進制數的特定編碼表示。當然編碼可以有多種方法, 但為了便于交換、處理,必須采用統一的編碼方法。西北大學信息科學與技術學院. All rights reserved 2011 第 4 頁2.1 2.1 數據的存儲數據的存儲2.1.2 2.1.2 進制及

3、進制轉換進制及進制轉換(1)數碼、基與權數碼:表示數的符號基:數碼的個數權:每一位所具有的值(2)數制(二進制,八進制,十進制,十六進制)數制的概念數制之間的轉換(整數)數制之間的轉換(小數)西北大學信息科學與技術學院. All rights reserved 2011 第 5 頁 各種進制之間的轉換(整數)二進制、八進制、十六進制轉換成十進制 方法:按權相加10012345259212120212121111011)()(例10012894868381136)()(例1001231679781610162161516121)()(例AF西北大學信息科學與技術學院. All rights re

4、served 2011 第 6 頁 各種進制之間的轉換(整數)二進制、八進制、十六進制轉換成十進制 方法:按權相加十進制轉換成二進制、八進制、十六進制11 0 21101101201100(.)22.222 (22.2 )2nnnnnnnnnnNaaaaaaaaaaaaNa 是 的余數 方法:連續除以基,從低到高記錄余數,直至商為0西北大學信息科學與技術學院. All rights reserved 2011 第 7 頁l各種進制之間的轉換(整數)二進制與八進制之間的轉換 二進制轉換成八進制:從右向左,每3位一組(不足3位左補0),轉換成八進制 八進制轉換成二進制:用3位二進制數代替每一位八進

5、制數例 (246)8=(010,100,110)2=(10100110)2000 0001 1010 2011 3100 4101 5110 6111 7西北大學信息科學與技術學院. All rights reserved 2011 第 8 頁二進制與十六進制之間的轉換 二進制轉換成十六進制:從右向左,每4位一組(不足4位左補0),轉換成十六進制 十六進制轉換成二進制:用4位二進制數代替每一位十六進制數例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16例 (4B9E)16=(0100,1011,1001,1110)2=(10010111001

6、1110)20000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F 各種進制之間的轉換(整數)西北大學信息科學與技術學院. All rights reserved 2011 第 9 頁 各種數制之間的轉換(小數) 二進制到十進制之間的轉換(整數加小數)(111010.1111010.1)2 2=1=12 25 51 12 24 41 12 23 30 02 22 21 12 21 10 02 20 0+1+12 2-1-1 32+16+8+2+0.532+1

7、6+8+2+0.5 58.558.5西北大學信息科學與技術學院. All rights reserved 2011 第 10 頁例例 : 將(將(35.6875)10轉換為二進制數。轉換為二進制數。 用除用除2取余法將整數部分取余法將整數部分(35)10轉換為二進制整數:轉換為二進制整數: 2 35 余數為余數為1 低位低位 2 17 余數為余數為1 2 8 余數為余數為0 2 4 余數為余數為0 2 2 余數為余數為0 2 1 余數為余數為1 高位高位 0故:故:(35)10 = (100011)2 驗證:驗證:125+0 24+0 23+0 22+1 21+1 20=32+2+1=35十進

8、制轉換成二進制西北大學信息科學與技術學院. All rights reserved 2011 第 11 頁 用乘用乘2取整法將小數部分取整法將小數部分(0.6875)10轉換為二進制形式:轉換為二進制形式: 0. 6875 2 1.3750 整數部分為整數部分為1 高位高位 0. 3750 2 0. 7500 整數部分為整數部分為0 0. 7500 2 1. 5000 整數部分為整數部分為1 0. 5000 2 1. 0000 整數部分為整數部分為1 低位低位即:即:(0.6875)10 = (0.1011)2 西北大學信息科學與技術學院. All rights reserved 2011 第

9、 12 頁 整數部分與小數部分合并,可得:整數部分與小數部分合并,可得:(35.6875)10 = (100011.1011)2注意:注意:在上例中,將十進制小數轉換成為二進制小數在上例中,將十進制小數轉換成為二進制小數的過程中,乘積小數部分變成的過程中,乘積小數部分變成“0”,表明轉換,表明轉換結束。實際上將十進制小數轉換成二進制、八結束。實際上將十進制小數轉換成二進制、八進制、十六進制小數過程中小數部分可能始終進制、十六進制小數過程中小數部分可能始終不為零,因此只能限定取若干位為止。不為零,因此只能限定取若干位為止。將十進制數轉換為八進制、十六進制數的規則將十進制數轉換為八進制、十六進制數

10、的規則和方法與之相同,只是和方法與之相同,只是R(基數)的取值不同。(基數)的取值不同。 西北大學信息科學與技術學院. All rights reserved 2011 第 13 頁二進制和八進制之間的轉換(整數加小數)例: (10100.1011)2(?)8 010 100 . 101 100 2 4 . 5 4例: (326.125)8(?)2 3 2 6 . 1 2 5011 010 110 . 001 010 101西北大學信息科學與技術學院. All rights reserved 2011 第 14 頁 二進制和十六進制之間的轉換(整數加小數) (11010111100.11011

11、)(11010111100.11011)2 2 = ( = (0 0110110 1011 1011 11001100. .11011101 1 1000000) )2 2 = (6BC.D8) = (6BC.D8)1616八進制到十六進制之間的轉換 可通過二進制來間接進行。 例(457)8=(100101111)2=(12F)16西北大學信息科學與技術學院. All rights reserved 2011 第 15 頁2.1.3 2.1.3 數值的表示及存儲數值的表示及存儲 (1)字節和位 內存以字節為單元組成 每個字節有一個地址 一個字節一般由8個二進制位組成 每個二進位的值是0或101

12、234567012345678910.7643251西北大學信息科學與技術學院. All rights reserved 2011 第 16 頁(2)原碼、反碼和補碼 原碼:最高位為符號位,其余各位為數值本身的絕對值 反碼:正數:反碼與原碼相同負數:符號位為1,其余位對原碼取反 補碼:正數:原碼、反碼、補碼相同負數:最高位為1,其余位為原碼取反,再對整個數加13126912457810119-5=49+7=16=(4)12西北大學信息科學與技術學院. All rights reserved 2011 第 17 頁原碼反碼補碼+7000001110000011100000111-71000011

13、11111100011111001+0000000000000000000000000-0100000001111111100000000數的范圍0111111111111111(-127+127)0111111110000000(-127+127)0111111110000000(-128+127)(2)原碼、反碼和補碼 負數補碼轉換成十進制數:最高位不動,其余位取反加1例 補碼:11111001 取反:10000110 加1: 10000111=-7(2)原碼、反碼和補碼(2)原碼、反碼和補碼西北大學信息科學與技術學院. All rights reserved 2011 第 18 頁(3)

14、小數的表示及存儲-數的定點表示-數的浮點表示 小數點在符號位之后 小數點在數據之后 符號位 符號位 階符階 碼數符尾 數計算機中浮點數的表示 西北大學信息科學與技術學院. All rights reserved 2011 第 19 頁2.1.4 2.1.4 字符的表示及存儲字符的表示及存儲ASCIIASCII碼 表示文字信息和控制信息的基礎是各種字符,各種字符表示文字信息和控制信息的基礎是各種字符,各種字符必須按一定規則用二進制編碼表示,才能為計算機所識別。必須按一定規則用二進制編碼表示,才能為計算機所識別。ASCIIASCII碼碼 (American Standard Code for In

15、formation American Standard Code for Information InterchangeInterchange)ASCIIASCII碼是由美國國家標準委員會制定的一種碼是由美國國家標準委員會制定的一種包括數字、字母、通用符號、控制符號在內的字符編碼集,包括數字、字母、通用符號、控制符號在內的字符編碼集,全稱叫美國國家信息交換標準代碼。全稱叫美國國家信息交換標準代碼。ASCIIASCII碼是一種碼是一種7 7位二進制編碼,能表示位二進制編碼,能表示27=12827=128種國際上最通種國際上最通用的西文字符,是目前計算機中,特別是微型計算機中使用用的西文字符,是目

16、前計算機中,特別是微型計算機中使用最普遍的字符編碼集。最普遍的字符編碼集。西北大學信息科學與技術學院. All rights reserved 2011 第 20 頁7位ASCII碼表7657654321432100000000100101001001101110010010110111011011111100000000NULNULDLEDLESPSP0 0 P Pp p00010001SOHSOHDC1DC1!1 1A AQ Qa aq q00100010STXSTXDC2DC2”2 2B BR Rb br r00110011ETXETXDC3DC3# #3 3C CS Sc cs s01

17、000100EOTEOTDC4DC4$ $4 4D DT Td dt t01010101ENQENQNAKNAK% %5 5E EU Ue eu u01100110ACKACKSYNSYN& &6 6F FV Vf fv v西北大學信息科學與技術學院. All rights reserved 2011 第 21 頁7657654321432100000000100101001001101110010010110111011011111101110111BELBELETBETB7 7G GW Wg gw w10001000BSBSCANCAN(8 8H HX Xh hx x10011001HTH

18、TEMEM)9 9I IY Yi iy y10101010LFLFSUBSUB* *:J JZ Zj jz z10111011VTVTESCESC+ +;K K k k 11001100FFFFFSFS, N Nn n 11111111SISIVSVS/ /?O Oo oDELDEL西北大學信息科學與技術學院. All rights reserved 2011 第 22 頁漢字編碼在ASCII碼編碼方案中,用到了一個字節的低7位,最多只能表示128個字符,但對于漢字來說,日常使用的漢字就有7000多個,只用一個字節對漢字進行編碼是不可能的,所以通常用多字節對漢字進行編碼。(1)國標碼(GB23

19、12-80編碼集)。 (2)漢字內碼。 (3)區位碼。 (4)BIG5碼。 (5)中、日、韓統一大漢字編碼字符集。 西北大學信息科學與技術學院. All rights reserved 2011 第 23 頁2.1.5 2.1.5 指令的表示及存儲指令的表示及存儲指令指令(Instruction)就是一組計算機能識別并能執行的各種基本操作命令。指令構成如圖示:指令系統指令系統(Instruction System)是一臺計算機的所有指令的集合。指令系統反映了計算機的基本功能,不同的計算機其指令系統不盡相同。操作碼指明該指令要完成的操作碼指明該指令要完成的操作,如加、減、乘、除。操作,如加、減、

20、乘、除。操作數是指參加運操作數是指參加運算的數據或者數據算的數據或者數據所在的地址。所在的地址。 操作碼 操作數西北大學信息科學與技術學院. All rights reserved 2011 第 24 頁CPUCPU發出命令發出命令C CP Pu u CPU對根據該指令的內容進行運算或者控制 內存內存內存送出所需指令內存送出所需指令計算機運行計算機運行指令的過程指令的過程CPU將要執行的指令從內存調入CPU判斷該指令所要完成的操作,然后向相應部件發出完成操作的控制信號,從而完成該指令的功能。內存代碼區函數(1)1:-2: -3:-:函數(2)1:-2:-函數 main1:-2:-內存數據區西北

21、大學信息科學與技術學院. All rights reserved 2011 第 25 頁第第2章章 C語言基本元素和語句語言基本元素和語句 2.1 數據的存儲 2.2 程序的基本元素 2.3 簡單語句 2.4 條件語句 2.5 循環語句西北大學信息科學與技術學院. All rights reserved 2011 第 26 頁第第2章章 C語言基本元素和語句語言基本元素和語句2.2.1 C語言的發展歷史及特點2.2.3 常量、變量2.2.4 運算符和表達式2.2 程序的基本元素2.2.2 C語言的數據類型西北大學信息科學與技術學院. All rights reserved 2011 第 27

22、頁 產生背景:從面向機器的語言到面向過程的語言 產生過程時間:19721973地點:美國貝爾實驗室目的:UNIX操作系統設計人: Ken.Thompson和Dennis.M.Ritchie C標準標準C: K&R合著The C Programming LanguageANSI C: 1983年87 ANSI C: 1987年1990年國際標準的ANSI C 2.2.1 C 語言發展歷史及特點西北大學信息科學與技術學院. All rights reserved 2011 第 28 頁語言簡潔、緊湊、靈活運算符和數據類型豐富程序設計結構化、模塊化生成目標代碼質量高可移植性好有少量可以訪問硬件的語句

23、中級語言 2.2.1 C 語言發展歷史及特點西北大學信息科學與技術學院. All rights reserved 2011 第 29 頁2.2.2 C語言的數據類型程序=數據描述+數據計算方法 一般的計算機語言在進行數據描述的時候必須規定數據的類型方便存儲便于運算西北大學信息科學與技術學院. All rights reserved 2011 第 30 頁C C數數據據類類型型基本類型基本類型構造類型構造類型指針類型指針類型空類型空類型void定義類型定義類型typedef數值類數值類型型字符類型字符類型char枚舉類型枚舉類型enum整整 型型浮點型浮點型單精度型單精度型float雙精度型雙精

24、度型double短整型短整型short長整型長整型long整型整型int數組數組結構體結構體struct共用體共用體union2.2.2 C語言的數據類型西北大學信息科學與技術學院. All rights reserved 2011 第 31 頁常量:程序中其值不發生變化的量。常量:程序中其值不發生變化的量。語言中有數值常量字符常量字符串常量符號常量整型實型十進制八進制(由數字開頭) 十六進制( 由0 x 或0X 開頭)常用形式(3.14159 , -0.555 , .666)指數形式(0.55e5 , 3.33E-3 , 4e+2(用單引號括起來的一個字符。如: a, D)(用雙引號括起來的

25、一串字符。如:abcd)(用一個標識符代表一個常量)注意: a 和a的區別2.2.3 常量和變量西北大學信息科學與技術學院. All rights reserved 2011 第 32 頁 標識符 定義:用來標識變量、常量、函數等的字符序列 組成:只能由字母、數字、下劃線組成,且第一個字符必須是字母或下劃線大小寫敏感不能使用系統已用的關鍵字 長度:最長32個字符 命名原則:見名知意不易混淆 如1與I, o與0例:判斷下列標識符號合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123M

26、.D.John3days#33char$123ab2.2.3 常量和變量西北大學信息科學與技術學院. All rights reserved 2011 第 33 頁變量名,函數名等必須望文知意,不可用a,b,c, i,j,k 之類的簡單變量名,除非確實是沒有特別意義的練習題。采用匈牙利變量命名法, 變量起名規則: 以小寫字母代表變量類型 n 代表整型,f代表實型,c代表字符型,an代表整型數組,af代表實型數組,p代表指針類型,pn代表整型指針類型等等(詳見變量起名規則)變量名一般是主謂結構,單詞首字母大寫例如: nCharNum, cString, 等等函數名一般是動賓結構,單詞首字母大寫例

27、如:PrintStar( ), CalculateLine 等等2.2.3 常量和變量西北大學信息科學與技術學院. All rights reserved 2011 第 34 頁符號常量定義方法符號常量定義方法#define PRICE 30 main() int num,total; num=10; /*Calculate total price*/ total=num*PRICE; /Output result printf(total=%d,total); 仿照練習: 寫一個程序,定義半徑R為35,求圓面積整型數:125 , 0125 , 0 x125 , +35 , -235 , -0

28、35實型數:3.14159 , -555.6 , 888.0 , 0.88 , 8.88e+18 注意: 用指數形式表示的浮點數必須有尾數,指數部分必須是整數。如:e4 , .e3 , 0.25e4.5 , e 等是錯誤的。字符常量: b D 字符串常量: “Hello World !”常量例子西北大學信息科學與技術學院. All rights reserved 2011 第 35 頁字符形式功能n 換行t 橫向跳格(即跳到下一個輸出區8列) v 豎向跳格 b 退格 r 回車 f 走紙換頁 反斜杠字符“” 和 ” 單引號字符();雙引號字符(”) ddd 1到3位8進制數所代表的字符 xhh

29、1到2位16進制數所代表的字符轉義字符常量:用轉義字符常量:用“”開頭后跟一個字符,但含義非常特殊。開頭后跟一個字符,但含義非常特殊。西北大學信息科學與技術學院. All rights reserved 2011 第 36 頁轉義字符例子轉義字符例子鞏固練習:-請上機自己練習 printf( ab ct derftgn); printf(“htibbj k”); 程序實踐練習:例 /*練習 n t b r*/main() printf(“This is a c program.n”); printf(“Hello world!n); 西北大學信息科學與技術學院. All rights rese

30、rved 2011 第 37 頁變量:程序中其值可發生變化的量。變量:程序中其值可發生變化的量。每一個變量都應有一個名字,稱為變量名。而且在內存中占據一定的存儲空間,用來存放變量的值。 *變量起名除符合標識符起名原則之外, 還要注意“望文知意”的原則語言規定對使用的變量必須語言規定對使用的變量必須先定義先定義,后使用后使用。目的:保證程序中變量名的正確使用。可分配相應的存儲空間。便于檢查變量所進行的運算是否合法。2.2.3 2.2.3 常量和變量常量和變量西北大學信息科學與技術學院. All rights reserved 2011 第 38 頁整型變量:(四種類型) 類型 所占位數 數的范圍

31、 基本型(int) 16 -3276832767 短整型(short int) 16 -3276832767 長整型(long int) 32 -21474836482147483647 無符號整型(unsigned int) 16 065535 無符號短整型(unsigned short) 16 065535 無符號長整型(unsigned long) 32 04294967295 無符號型整型變量整型變量西北大學信息科學與技術學院. All rights reserved 2011 第 39 頁變量的定義格式變量的定義格式: 類型類型 變量名表列;變量名表列; 程序練習: main() i

32、nt a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(a+u=%d,b+u=%dn,c,d); 整型變量定義的例子整型變量定義的例子西北大學信息科學與技術學院. All rights reserved 2011 第 40 頁實型變量:(兩類) 類型 所占位數 數的范圍 單精度實型(float) 32 10 10 雙精度實型(double) 64 10 10 單精度實型提供7位有效數字,雙精度實型提供1516位有效數字。 如:float a; a=111111.111 (最后兩位小數不起作用) 而:double a; a=111

33、111.111 (全部接收)-3838 -308308實型變量實型變量西北大學信息科學與技術學院. All rights reserved 2011 第 41 頁字符變量:char 用來存放一個字符常量。占一個字節(8位),存放該字符的ASCII碼值。 如:char c1,c2; c1=a;c2=b;字符型變量字符型變量例 main() char c1,c2; c1=97;c2=98; printf(%c %c,c1,c2); 97980110000101100010c1c1c2c2西北大學信息科學與技術學院. All rights reserved 2011 第 42 頁例 main() c

34、har c1,c2; c1=a;c2=b; c1=c1-32;c2=c2-32; printf(%c %c,c1,c2); c1=a;c2=b;a=A+32ASCII碼表中大小寫字母之間具有:C語言中允許字符型數據與整型數據互相賦值。如: int i; i=a; char c; c=97;例 main() int i; char c; i=a; c=97; printf(%c,%dn,c,c); printf(%c,%dn,i,i); 輸出結果:a,97 a,97字符型數據的計算和賦值字符型數據的計算和賦值西北大學信息科學與技術學院. All rights reserved 2011 第 43

35、 頁變量賦初值:在定義變量的同時給變量初始化。如:int a=10; float f=5.55; char c=a; int a=15,b=15,d=15;不能寫成:int a=b=d=15;格式為:類型變量名常量值 請分析下面程序:相當于:int a; a=10;變量賦初值變量賦初值main() int a; printf(n%d,a); 輸出結果是什么?沒有賦初值的變量,其值為一個不定的值。引用該變量,就回出現上面程序中的問題,產生莫名奇妙的結果。西北大學信息科學與技術學院. All rights reserved 2011 第 44 頁2.2.4 2.2.4 運算符和表達式運算符和表達式

36、 運算符: 提供不同計算和處理方式的符號 (目, 優先級, 結合性) 表達式:由運算符和運算對象(常量和變量)組成的式子,結果是一個確定的值和一個確定的類型西北大學信息科學與技術學院. All rights reserved 2011 第 45 頁34種運算符:算術運算符:+ - * / % + -關系運算符: = !=邏輯運算符:! & |位運算符 : | &賦值運算符:= 及其擴展條件運算符:?:逗號運算符:,指針運算符:* &求字節數 :sizeof強制類型轉換:(類型)分量運算符:. -下標運算符:其它 :( ) -C程序的運算符注意運算符的運算對象目數優先級結合性西北大學信息科學與技

37、術學院. All rights reserved 2011 第 46 頁(1 1)算術運算符和算術表達式)算術運算符和算術表達式基本算術運算符:+ 、 - 、 * 、 / 、 %(注:兩個整數相除,結果為整數。)算術表達式和運算符的優先級與結合性:用算術運算符和括號“( )”將運算對象連接起來,符合語法規則的式子稱為算術表達式。 目: 雙目運算對象:常量、變量、函數等。優先級:先乘除后加減。結合性:自左至右。例如:a*b/c-1.5+a ; a-(b*c)西北大學信息科學與技術學院. All rights reserved 2011 第 47 頁 C語言允許不同類型的數值型數據可以混合運算,運

38、算時系統自動將數據轉換成同一類型數據。doublelongunsignedintfloatchar,short低級高級必定的轉換必定的轉換數據類型轉換數據類型轉換西北大學信息科學與技術學院. All rights reserved 2011 第 48 頁例如: 若有 int i, float f, double d, long e 則 10+a+i*f-d/e 表達式運算次序為: 將a轉換成97,然后10+a運算。 將i和f都轉換成double型,然后i*f運算。 將的結果轉換為double型,然后與的結果相加。 將e轉換成double型,然后d/e運算。 用的結果減的結果。強制類型轉換:格式

39、如下例如:(double) a、(int)(x+y)、(float)(5%3)、(int)x+y(類型名)(表達式)強制類型轉換西北大學信息科學與技術學院. All rights reserved 2011 第 49 頁賦值符號:(將賦值符右邊表達式的值賦給賦值符左邊的一個變量。) 賦值運算符的數據類型若不一致,則要進行類型轉換。轉換方式為: 將實型數據賦給整型變量時,舍棄實數的小數部分。如:i=5.65 , i 的值為 5。 將整型數據賦給實型變量時,數值不變。 將字符數據賦給整型變量時,將字符數據放到整型變量低8位中。 兩種情況: 若字符最高位為1,整型變量的高8位置1,否則高8位置0。若

40、把字符處理為無符號的量,整型變量的高8位置0。1 1 11 11 1011 11 11 101 1 11 11 11C=37611 11 11 10 11 11 11 100 0 00 00 00C=376i的值為254i的值為-2(2 2)賦值運算符和賦值表達式)賦值運算符和賦值表達式西北大學信息科學與技術學院. All rights reserved 2011 第 50 頁 將整型數據賦給長整型變量時,將整型數據放入長整型變量的低16位,若整型數為負數,長整型變量的高16位置1,否則長整型變量的高16位置0。 將長整型數據賦給整型變量時,取長整型數據低16位。 將unsigned int

41、賦給 long int 時,將unsigned int 放入long int的低16位,高16位置0。 unsigned int 賦給 int 將unsigned long 賦給 long 時,原樣賦值。 unsigned short 賦給 short 例如:若unsigned int a=65535; int b; b=a; 則:b的值為-1。 int 賦給 unsigned int 將 long 賦給 unsigned long 時,原樣賦值。 short 賦給 unsigned short 例如:main() unsigned a; int b=-1; a=b; printf(“%u”,

42、a); 應注意數值的范圍,超出則數據出錯在負數時,數值發生變化。11 11 11 11 11 11 11 111 1 11 11 11 11 11 11 11ba11 11 11 11 11 11 11 111 1 11 11 11 11 11 11 11ba西北大學信息科學與技術學院. All rights reserved 2011 第 51 頁自增、自減運算符:+ , - (使變量的值增或減)結合性:自右至左。 例如: +i , -i (先自增或自減,后引用) i+ , i- (先引用,后自增或自減) i=3; printf(“%d”,+i); i=3; printf(“%d”,i+);

43、自增自減運算符自增自減運算符注意:自增自減只能用于變量西北大學信息科學與技術學院. All rights reserved 2011 第 52 頁+= , = , *= , /= , %= , = , &= , = , |=(算術自反賦值運算符)例如:a+=3 等價于 a=a+3 x*=y+8 等價于 x=x*(y+8) x%=3 等價于 x=x%3賦值表達式:由賦值運算符將一個變量和一個表達式連接起來的式子。格式為: 位運算注:若右邊為表達式應加圓括號“( )”!復合的賦值運算符復合的賦值運算符西北大學信息科學與技術學院. All rights reserved 2011 第 53 頁 賦值

44、運算符結合性為:“自右而左”。 例如: a=b=c=5 a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) a+=a =a*a 若 a=5, 則賦值表達式的值為40。 若x的值是8, 則表達式x*=x-=x+=x的值?西北大學信息科學與技術學院. All rights reserved 2011 第 54 頁逗號運算符: , 自左向右格式:表達式1,表達式2,表達式3,表達式n優先級:最低。逗號表達式的值為表達式n的值。例如: a=3*5,a*4 (a=3*5,a*4),a+5 x=(a=3,6*3) x=a=3,6*a(3)逗號運算符和逗號表達式西北大學信息科學與技

45、術學院. All rights reserved 2011 第 55 頁關系運算符用于兩個數值之間的比較運算。語言提供6種關系運算符,它們是:、=、=、!=優先級相同優先級相同高到低關系運算符、算術運算符和賦值運算符的優先級為:算術運算符關系運算符賦值運算符低高(4 )關系運算符和關系表達式西北大學信息科學與技術學院. All rights reserved 2011 第 56 頁 例如: ca+b 等效于 c(a+b) ab!=c 等效于 (ab)!=c a=bc 等效于 a=(bc 等效于 a=(bc)關系表達式:用關系運算符將兩個表達式連接起來的式子。關系表達式運算結果為:“真”或“假”

46、值。語言用1代表“真”值,用0代表“假”值。同時系統在運算時以非0為“真”值,以0為“假”值。例如:若 a=3,b=2,c=1 f=abc 則f的值為0。西北大學信息科學與技術學院. All rights reserved 2011 第 57 頁語言提供3種邏輯運算符:邏輯運算符邏輯運算符 結合性結合性 優先級優先級& 與 自左至右 中 | 或 自左至右 低 ! 非 自右至左 高(5)邏輯運算符和邏輯表達式西北大學信息科學與技術學院. All rights reserved 2011 第 58 頁邏輯表達式:用邏輯運算符將關系表達式或邏輯量連接起來的式子。運算結果為:“真”或“假”值。系統在運

47、算時以非0為“真”值,以0為“假”值。邏輯運算:ab&00010011ab|0111001101a!a例如: 4&0|2 的值為1 5&!0 的值為1與運算或運算非運算西北大學信息科學與技術學院. All rights reserved 2011 第 59 頁 運算符 優先級 邏輯非! 高算術運算符 關系運算符 &和| 賦值運算符 低邏輯、關系、算術和賦值運算符的優先級為:例如:(ab)&(xy) 可以寫成ab&xy (a=b)|(x=y) 可以寫成 a=b|x=y (!a)|(ab) 可以寫成 !a|ab 53&2|8b)&n=c4) 設 a=1,b=2,c=3,m=1,n=1。 則 m為0

48、 , n 為 1。請問表達式 x0&xb?a:b 條件運算符的優先級低于邏輯、關系、算術運算符高于賦值運算符。如: ab?a:b+1 相當于 (ab)?a:(b+1) (6)條件運算符和表達式西北大學信息科學與技術學院. All rights reserved 2011 第 62 頁條件運算符的結合性為:“自右至左”。如: ab?a:cd?c:d 相當于 ab?a:(cd?c:d)注意:條件表達式中的表達式1、表達式2、表達式3可以是不同的類型。 main() float p; char x,y;scanf(%c%c,&x,&y); /*Input x and y*/ p=xy?1:1.5;

49、printf(n%f,p); /* Output the result*/ 西北大學信息科學與技術學院. All rights reserved 2011 第 63 頁第第2章章 C語言基本元素和語句語言基本元素和語句 2.1 數據的存儲 2.2 程序的基本元素 2.3 簡單語句 2.4 條件語句 2.5 循環語句西北大學信息科學與技術學院. All rights reserved 2011 第 64 頁第第2章章 C語言基本元素和語句語言基本元素和語句2.3.1 C語句概述2.3.3 輸出語句2.3.4 輸入語句2.3 簡單語句2.3.2 賦值語句西北大學信息科學與技術學院. All rig

50、hts reserved 2011 第 65 頁2.3 簡單語句2.3.1 2.3.1 語句概述語句概述語言的語句是用來向計算機系統發出操作指令。每語言的語句是用來向計算機系統發出操作指令。每一個為實現特定目的的程序都包含若干個語句。一個為實現特定目的的程序都包含若干個語句。 五種五種分類:分類: 控制語句:完成一定的控制功能。控制語句:完成一定的控制功能。 函數調用語句:由一次函數調用加一個分號構成。函數調用語句:由一次函數調用加一個分號構成。 如:如:scanf(%dn,&a); 表達式語句:由表達式加一個分號構成。表達式語句:由表達式加一個分號構成。如:如:i=i+1; 空語句:由一個分

51、號構成。空語句:由一個分號構成。 復合語句;由一對大括號復合語句;由一對大括號“”組成。組成。 如:如:z=x+y; b=15; printf(%d,b); 西北大學信息科學與技術學院. All rights reserved 2011 第 66 頁程序的三種基本控制結構程序的三種基本控制結構順序結構:從前向后順序執行程序。順序結構:從前向后順序執行程序。選擇結構:根據判斷條件的結果選擇執行程序。選擇結構:根據判斷條件的結果選擇執行程序。 其中包括:單條件選擇語句其中包括:單條件選擇語句 多條件選擇語句多條件選擇語句 循環結構:根據條件反復的執行某一段程序若干次循環結構:根據條件反復的執行某一

52、段程序若干次。西北大學信息科學與技術學院. All rights reserved 2011 第 67 頁2.3.2 賦值語句由賦值表達式加一個分號構成。由賦值表達式加一個分號構成。 如:如:h=49; 注意:賦值語句與賦值表達式的區別。注意:賦值語句與賦值表達式的區別。 如:如:if (a=b)0) t=a;賦值表達式賦值語句西北大學信息科學與技術學院. All rights reserved 2011 第 68 頁2.3.3 2.3.3 輸出語句輸出語句語言數據輸出,是由調用輸出函數來完成。語言數據輸出,是由調用輸出函數來完成。putchar函數函數功能:向終端輸出一個字符。功能:向終端輸

53、出一個字符。 格式:格式: putchar (ch) 函數名參數西北大學信息科學與技術學院. All rights reserved 2011 第 69 頁 例例2.3.1 #include stdio.h main() char a,b,c; a=B;b=O;c=Y; putchar(a);putchar(b);putchar(c);putchar(n); 結果結果: BOY 格式輸出函數格式輸出函數printf() 功能:輸出若干個任意類型的數據。功能:輸出若干個任意類型的數據。格式:格式:printf(格式控制格式控制,參數參數1,參數參數2,參數參數3, )由格式說明和普通字符構成輸出

54、數據。由表達式構成。西北大學信息科學與技術學院. All rights reserved 2011 第 70 頁 格式字符:格式字符:格式字符格式字符 作用作用 d 用來輸出十進制整數。用來輸出十進制整數。 o 用來輸出用來輸出8進制整數。進制整數。 x 用來輸出用來輸出16進制整數。進制整數。 c 用來輸出單個字符。用來輸出單個字符。 用來輸出字符串,在輸出時以非空白字符開始,以第一個空白字符用來輸出字符串,在輸出時以非空白字符開始,以第一個空白字符 s 結束。字符串以串結束標志結束。字符串以串結束標志0作為其最后一個字符。作為其最后一個字符。 f用來輸出實數,可以用小數形式或指數形式輸出。

55、用來輸出實數,可以用小數形式或指數形式輸出。 e (g) 與與f作用相同,作用相同,e與與f可以互相替代。可以互相替代。格式說明:由格式說明:由%后跟一個格式字符組成。中間可插入后跟一個格式字符組成。中間可插入l、m、n、和幾個附加符號。、和幾個附加符號。 普通字符:照原樣輸出。普通字符:照原樣輸出。西北大學信息科學與技術學院. All rights reserved 2011 第 71 頁例:long a=135790; printf(%ld,a );例:a=-1; printf(%d,%o,%x,a,a,a);例:main() unsigned int a=65535; int b= -2

56、; printf(a=%d,%o,%x,%un,a,a,a,a); printf(b=%d,%o,%x,%un,b,b,b,b); 例:main() int i=234; char c=a; printf(%d,%5d,%c,%3c,i,i,c,c); 1 1 11 11 11 11 11 11 11a=135790輸出為:-1,177777,ffffa=-1,177777,ffff,65535b=-2,177776,fffe,65534結果為234, 234,a, a結果為指定輸出寬度。數據寬度不夠,前面補空格,超過則原樣輸出。西北大學信息科學與技術學院. All rights reserv

57、ed 2011 第 72 頁 附加格式說明字符: 字 符 作用 字母 l 用于長整型整型,可加在格式符d、o、x、u前面。 m(代表一個正整數) 數據最小寬度。 .n(代表一個正整數) 對實數,表示輸出n位小數;對字符串,表示截取的字符個數。 - 輸出的數字或字符在域內向左靠。例:main() printf(%3s,%7.2s,%.4s,%-5.3sn, CHINA, CHINA, CHINA, CHINA); 例:main() float f=123.456; printf(%f %10f %10.2f %.2f %-10.2fn,f,f,f,f,f); 輸出為: CHINA, CH,CHI

58、N,CHI 輸出為: 123.455994 123.455994 123.46 123.46 123.46西北大學信息科學與技術學院. All rights reserved 2011 第 73 頁例:main() float f=123.456; printf(%e %10e %10.2e %.2e %-10.2en,f,f,f,f,f); 輸出結果為: 1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 1.23e+002 13列13列10列9列10列例: main() float f=123.456; printf(%f %10e %gn,f,

59、f,f); 輸出為:123.456000 1.234560e+002 123.45613列10列10列格式控制字符串中用連續兩個%,表示輸出一個%。 如:printf(“%f%”,1.0/3); 輸出為:0.333333%西北大學信息科學與技術學院. All rights reserved 2011 第 74 頁2.3.4 2.3.4 輸入語句輸入語句語言數據輸入,是由調用輸入函數來完成。語言數據輸入,是由調用輸入函數來完成。getchar函數函數功能:功能: 從輸入設備輸入一個字符。從輸入設備輸入一個字符。 格式:格式: getchar () 例例2.3.2 : #include stdio

60、.h main() char c; c=getchar(); putchar(c); 格式輸入函數格式輸入函數scanf() 功能:輸入若干個任意類型的數據。功能:輸入若干個任意類型的數據。 格式:格式:scanf(“格式控制格式控制”,輸入變量地址表輸入變量地址表 ) 只能接收一個字符!由格式說明和普通字符構成變量的地址或字符串的首地址。西北大學信息科學與技術學院. All rights reserved 2011 第 75 頁格式說明:由格式說明:由%后跟一個格式字符組成。后跟一個格式字符組成。中間可插入中間可插入l、h、m、幾個附加字符。、幾個附加字符。 普通字符:照原樣輸入。普通字符:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論