




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計2021/02/251C語言程序設計2021/02/251第一章C語言概述C語言的發展與特點C語言的基本程序結構C語言程序的開發過程C語言的基本詞法算法2021/02/252第一章C語言概述C語言的發展與特點2021/021.1C語言出現的歷史背景匯編語言依賴于計算機硬件,程序的可讀性和可移植性差;一般高級語言難以實現匯編語言的某些功能如對內存地址的操作、位操作等。2021/02/2531.1C語言出現的歷史背景匯編語言依賴于計算機硬件,程序1.2C語言的發展史1960年ALGOL60;1963年英國劍橋大學提出CPL語言;1967年MatinRichards提出BCPL語言;1970年KenThompson提出B語言;1972-1973Dennis.M.Ritchie提出C語言;BrianW.Kernighan和D.M.Ritchie介紹標準C;1987年美國國家標準化協會提出ANSIC。2021/02/2541.2C語言的發展史1960年ALGOL60;201.3C語言的特點簡潔、緊湊,使用方便、靈活;允許直接訪問地址,能進行位操作;運算符豐富;數據類型豐富;結構化程序語言,便于實現程序的模塊化;程序執行效率高,可移植性好。2021/02/2551.3C語言的特點簡潔、緊湊,使用方便、靈活;20211.4C語言的基本程序結構C程序是由函數構成的,每個C程序有且只有一個主函數(main),可包含若干其他函數;每個函數由首部與函數體組成;首部包括函數類型、函數名、函數參數(形參)、參數類型,intmax(intx,inty)函數體包括聲明部分和執行部分。2021/02/2561.4C語言的基本程序結構C程序是由函數構成的,每個Cmain函數位置任意,但總是從main函數開始執行,在main函數中結束;C程序書寫自由,每個語句后需加一個分號;主函數可調用任何非主函數,非主函數之間可互相調用,但不能調用主函數;C語言本身沒有輸入輸出語句;用/*…………*/進行注釋。2021/02/257main函數位置任意,但總是從main函數開始執行,在mai1.5C語言程序的開發過程編輯編譯鏈接
計算機只能識別和執行由0和1組成的二進制的指令,為了使計算機能執行高級語言源程序,必須先用“編譯程序”把源程序翻譯成二進制形式的“目標程序”,然后將該目標程序與系統的函數庫和其他目標程序連接成為可執行的目標程序。2021/02/2581.5C語言程序的開發過程編輯計算機只1.6C語言的基本詞法字符集:包括大小寫英文字母52個、數字10個、鍵盤符號33個、轉義字符。標識符:是用戶自定義的一組字符序列,用來表示程序中需要辨認的對象名稱,如符號常量、變量、數組、函數。規定:
標識符是由字母或下劃線開頭的字母、數字、下劃線組成的一串符號,最長不能超過32個字符;大小寫字母有區別,大寫字母只用來定義宏名,其他都采用小寫字母表示。2021/02/2591.6C語言的基本詞法字符集:包括大小寫英文字母52個保留字:32個,有特殊含義,主要用于構成語句,進行存儲類型和數據類型的定義,不允許用戶作為自定義標識符使用;詞類:常量、變量、運算符、函數、表達示、保留字;語句:完成特定的操作,語句的有機組合序列完成指定的功能;2021/02/2510保留字:32個,有特殊含義,主要用于構成語句,進行存儲類型和語句的種類賦值語句;函數調用語句;表達式語句;流程控制語句;復合語句;空語句;2021/02/2511語句的種類賦值語句;2021/02/25111.7算法著名計算機科學家沃思提出公式:程序=數據結構+算法數據結構:對數據的描述即指定數據的類型和數據的組織形式;算法:對操作的描述即操作步驟。2021/02/25121.7算法著名計算機科學家沃思提出公式:2021/021.7.1簡單算法舉例判定2000-2500年中的每一年是否閏年。設定y為被檢測的年份。算法如下:S1:2000=>yS2:若y不能被4整除,則輸出y“不是閏年”,然后轉至S6S3:若y能被4整除,不能被100整除,則輸出y“是閏年”,然后轉至S6S4:若y能被100整除,又能被400整除,輸出y“是閏年”;否則輸出y“不是閏年”,然后轉至S6S5:輸出y“不是閏年”S6:y+1=>yS7:當y<=2500時,轉S2繼續執行,如y>2500,算法停止;2021/02/25131.7.1簡單算法舉例判定2000-2500年中的每一年1.7.2算法的特點有窮性;確定性;有零個或多個輸入;有一個或多個輸出;有效性2021/02/25141.7.2算法的特點有窮性;2021/02/25141.7.3算法的表示用流程圖表示算法;用偽代碼表示算法;用計算機語言表示算法。2021/02/25151.7.3算法的表示用流程圖表示算法;2021/02/2第二章C語言的數據類型、運算符與表達式C語言的數據類型;C語言的運算符與表達式;2021/02/2516第二章C語言的數據類型、運算符與表達式C語言的數據類2.1C語言的數據類型數據類型基本類型構造類型指針類型空類型(void)整型(int)字符型(char)實型(浮點型)數組類型結構體類型(struct)共用體類型(聯合類型)(union)枚舉類型單精度型(float)雙精類型(double)2021/02/25172.1C語言的數據類型數據類型基本類型構造類型指針類型2.2常量在程序運行過程中,其值不能被改變的量稱為常量。C語言中規定的常量類型有以下五種:整型常量、實型常量、字符常量、字符串常量和符號常量。2021/02/25182.2常量在程序運行過程中,其值不能被改變2.2.1整型常量1.整型常量的表示方法:十進制整數:無前綴,數碼取值為0~9,如123,-456。八進制整數:前綴為0,數碼取值為0~7,如0123,-011。八進制數與十進制數的轉換方法如下:(0123)8=1*82+2*81+3*80=64+16+3=(83)102021/02/25192.2.1整型常量1.整型常量的表示方法:2021/十六進制整數:前綴0X或0x,數碼取值為0~9,A~F或a~f,如0x2A,-0x12。十六進制數與十進制數轉換方法:(-0x12)16=-(1*161+2*160)=-(16+2)=(-18)102.整型常量的后綴:加后綴L或l,表示長整型數。加后綴u,表示無符號數。2021/02/2520十六進制整數:2021/02/25202.2.2實型常量實型常量即實數又稱為浮點數,C語言中實數只采用十進制,有兩種表示形式:小數形式:由數碼0~9和小數點組成(注意必須有小數點),如.123,-123.4567;指數形式:由十進制數,加階碼標志“e”或“E”以及階碼(只能為整數),如-2.1e2,2.1e-2。2021/02/25212.2.2實型常量實型常量即實數又稱為浮點數,C語言中實2.2.3字符常量C語言中,字符常量是用單引號括起來的單個字符,如‘a’,‘D’,‘$’等。轉義字符是一種特殊形式的字符常量,它是以一個“\”開頭的字符序列。2021/02/25222.2.3字符常量C語言中,字符常量是用單引號括起來表2.1轉義字符及其含義字符形式含義\n換行,將當前位置移到下一行開頭\t水平制表(跳到下一個tab位置)\b退格,將當前位置移到前一列\r回車,將當前位置移到本行開頭\f換頁,將當前位置移到下頁開頭\\反斜杠字符“\”\’單引號字符\”雙引號字符\ddd1到3位8進制數所代表的ASCⅡ字符\xhh1到2位16進制數所代表的ASCⅡ字符2021/02/2523表2.1轉義字符及其含義字符形式含義\n換行,將當前位置移到例2.1轉義字符的使用main(){printf(“abc\tde\rf\tg\n”);printf(“h\ti\b\bjk”);}2021/02/2524例2.1轉義字符的使用main()2021/02/2524例2.1結果程序運行后在打印機上得到以下結果:fabcgdehjik注意在顯示屏上最后看到結果以與上述打印結果不同,是:fgdehjk2021/02/2525例2.1結果程序運行后在打印機上得到以下結果:22.2.4字符串常量C語言中,字符串變量是由一對雙引號括起來的字符序列,如“China”,“$3.232”。注意:不要將字符常量與字符串常量混淆。2021/02/25262.2.4字符串常量C語言中,字符串變量是字符常量與字符串常量的區別字符常量是由單引號括起來的,字符串常量是由雙引號括起來的;字符常量只能是單個字符,字符串常量則可是零個或多個字符;可把一個字符常量賦予一個字符變量,但不能把一個字符串變量賦予一個字符變量,C語言中沒有相應的字符串變量,可用字符數組來存放字符串常量;字符常量占一個字節的內存,字符串常量占的內存字節數等于字符串中字節數加1,最后一個字節存放字符‘\0’作為字符串結束標志。2021/02/2527字符常量與字符串常量的區別字符常量是由單引號括起來的,字符串2.2.5符號常量C語言中,可用一個標識符來表示一個常量,稱為符號常量又稱為宏定義,使用前須先定義,其定義規則為:#define標識符常量2021/02/25282.2.5符號常量C語言中,可用一個標例2.2符號常量的使用#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf(“total=%d”,total);}使用符號常量的好處:含義清楚;在需要改變一個常量時能做到“一改全改”;2021/02/2529例2.2符號常量的使用#definePRICE30使2.3變量變量是指在程序運行中其值是變化的量。一個變量應該有一個變量名,在內存中占據一定的存儲單元,在該存儲單元中存放變量的值。3變量值a變量名存儲單元圖2.12021/02/25302.3變量變量是指在程序運行中其值是變化C語言中,要求對變量作強制定義,即“先定義,后使用”。便于發現錯誤;為每一個變量指定確定類型,在編譯時就能為其分配相應的存儲單元。2021/02/2531C語言中,要求對變量作強制定義,即“先定義,后使用”。2整型數據在內存中的存儲方式整型數據在內存中是以二進制形式存放的。若定義了一個整型變量i:inti=10;圖3.2(a)是數據存放的示意圖,圖3.2(b)是數據在內存中實際存放的情況;i10(a)i0000000000001010(b)圖2.22021/02/2532整型數據在內存中的存儲方式整型數據在內存中是以實際上,整型數值是以補碼表示的。一個正數的補碼與其原碼相同,求負數的補碼方法:將該數的絕對值的二進制形式按位取反再加1。例如求-10的補碼:00000000000010101111111111110101111111111111011010的原碼取反再加1得-10的補碼2021/02/2533實際上,整型數值是以補碼表示的。一個正數的補2.3.1整型變量有符號基本整型[signed]int有符號短整型[signed]short[int]有符號長整型[signed]long[int]無符號基本型unsignedint無符號短整型unsignedshort[int]無符號長整形unsignedlong[int]1.整型變量的分類:2021/02/25342.3.1整型變量有符號基本整型[signed]int1類型說明符數的取值范圍字節數[signed]int-32768~32767即-215~(215-1)2unsignedint0~65535即0~(216-1)2[signed]short[int]-32768~32767即-215~(215-1)2unsignedshort[int]0~65535即0~(216-1)2[signed]long[int]-2147483648~2147483647即-231~(231-1)4unsignedlong[int]0~4294967295即0~(232-1)4表2.1整型數據的所占的內存字節數與取值范圍2021/02/2535類型說明符數的取值范圍字節數[signed]int-3272.整型變量的說明類型說明符變量名標識符,變量名標識符,…...;如:inta,b,c;unsignedshortx,y;2021/02/25362.整型變量的說明類型說明符變量名標識符,變量例2.3整型變量的定義和運算見教材P34例2.32021/02/2537例2.3整型變量的定義和運算見教材P34例2.320212.3.2實型變量單精度型float占4個字節內存,提供7位有效數字,雙精度型double占8個字節內存,提供16位有效數字。整數沒有誤差,實數有精度,有誤差,提供6位小數,7位有效數字。2021/02/25382.3.2實型變量單精度型float2021/2.實型變量的說明格式和書寫規則同整型變量說明相同,如:floats,t;doubleh,k;2021/02/25392.實型變量的說明格式和書寫規則同整型變量說明相同,2021例2.4實型數據的舍入誤差main(){floata,b;a=123456.789e5;b=a+20;printf(“%f,%f”,a,b);}結果:12345678848.000000,12345678848.0000002021/02/2540例2.4實型數據的舍入誤差main()結果:2021/02/誤差原因分析b的理論值應是12345678920,而一個實型變量只能保證的有效數字是7位有效數字,后面的數字是無意義的,并不準確表示該數,從結果看出,把20加在后幾位上,是無意義的,應當避免將一個很大的數與一個很小的數直接相加減,否則就會“丟失”小的數。與此類似,用程序計算1.0/3*3的結果并不等于1。2021/02/2541誤差原因分析b的理論值應是1234567892.3.3字符變量字符變量用來存放字符常量,只能存放一個字符,占用1個字節內存。
字符變量定義如下:charc1,c2;2021/02/25422.3.3字符變量字符變量用來存放字符常量1.字符數據在內存中的存儲將一個字符常量放到一個字符變量中,不是把該字符本身放到內存單元中,而是將該字符的相應的ASCⅡ代碼存放在存儲單元中,如字符‘a’的ASCⅡ代碼為97,‘b’為98,9798c1c20110000101100010c1c1圖2.32021/02/25431.字符數據在內存中的存儲將一個字符常量放在內存中,字符數據以ASCⅡ碼存儲,它的存儲形式與整數存儲形式類似,C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型量。在輸出時,允許把字符變量按整型量輸出,也允許把整型變量按字符型量輸出。注意:當整形變量按字符型量處理時,只有低八位參與處理。2021/02/2544在內存中,字符數據以ASCⅡ碼存儲,它的存例2.5向字符型變量賦以整型值main(){charc1,c2;c1=97;c2=98;printf(“%c,%c\n”,c1,c2);printf(“%d,%d\n”,c1,c2);}結果:a,b97,982021/02/2545例2.5向字符型變量賦以整型值main()2021/02/2.補充TurboC將字符變量中的最高位作為符號位,也就是將字符處理成帶符號的整數,即signedchar型。它的取值范圍是-128~127。如果使用ASCⅡ碼為0~127間的字符,由于字節中最高位為0,因此用%d輸出時,輸出一個正整數。如果使用ASCⅡ碼為128~255間的字符,由于在字節中最高位為1,用%d格式符輸出時,就會得到一個負整數。例如:main(){charc=130;printf(“%d”,c);}得到-126。如果不想按有符號處理,可以將變量定義為unsignedchar類型,這時其取值范圍是0~255。signedchar和unsignedchar相仿,但它只有一個字節。2021/02/25462.補充TurboC將字符變量中的例2.6main(){charc1=130;unsignedcharc2=130;printf(“c1=%d,c2=%d\n”,c1,c2);}結果:c1=-126,c2=1302021/02/2547例2.6main()結果:c1=-126,c2=1302022.3.4變量賦初值程序中常需要對一些變量預先設置初值。C語言允許在定義變量的同時使變量初始化,如inta=3;floatf=3.56;charc=‘a’;2021/02/25482.3.4變量賦初值程序中常需要對一些變也可以使被定義的變量的一部分賦初值,如:inta,b,c=5;如果對幾個變量賦予初值3,應寫成inta=3,b=3,c=3;不能寫成:inta=b=c=3;inta=3;相當于:inta;a=3;2021/02/2549也可以使被定義的變量的一部分賦初值,如:2021/2.4運算符和表達式運算符是一些特定的符號,它用來對數據進行某些特定的操作;運算對象(操作數)是用來進行運算的數據,包括常量、變量等;表達式是用運算符將運算對象連接起來的式子。如1+2,1和2為運算對象,而1+2就是表達式。2021/02/25502.4運算符和表達式運算符是一些特定的符號,它用來對數據2.4.1運算符種類、優先級和結合性⑴算術運算符用于各類數值計算。運算符有:加(+)、減(-)、乘(*)、除(/)、求余(或稱模運運算,%)、自增(++)、自減(--)。⑵關系運算符用于比較運算。運算符主要有:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)。1.運算符的種類2021/02/25512.4.1運算符種類、優先級和結合性⑴算術運算符1.運⑶邏輯運算符用于邏輯運算。運算符有:與(&&)、或(||)、非(!)。⑷位操作運算符參與運算的量,按二進制位進行運算。運算符有:按位與(&)、按位或(|)、取反(~)、按位異或(^)、左移(<<)、右移(>>)。⑸賦值運算符用于賦值運算。賦值運算符有:簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)、復合位運算賦值(&=,|=,^=,<<=,>>=)等三類。2021/02/2552⑶邏輯運算符2021/02/2552⑹條件運算符是一個三目運算符,用于條件求值。運算符有:(?:)。⑺逗號運算符用于把若干表達式組合成一個表達式。運算符有:(,)。⑻指針運算符用于取內容(*)和取地址(&)兩種運算。⑼求字節運算符用于數據類型所占的字節數(sizeof)。2021/02/2553⑹條件運算符2021/02/2553⑽強制類型轉換運算符可以利用強制類型轉換運算符將一個表達式轉換成所需類型。其一般形式為:(類型名)(表達式)如(double)a;(int)(x+y);(float)(5%3)⑾其他運算符
其他運算符有:括號()、數組下標[]、成員運算符.和用指針訪問結構體成員的指向運算符->。2021/02/2554⑽強制類型轉換運算符2021/02/25542.運算符的運算優先級C語言中,運算符的運算優先級共分為15級。1級最高,15級最低。在表達式中,優先級較高的先于優先級低的進行運算。如求表達式x+y*z的值:y的值左側為加號,右側為乘號,而乘號優先于加號,因此相當于x+(y*z),即先進行乘法運算,然后再進行加法運算。2021/02/25552.運算符的運算優先級C語言中,運算符的運3.運算符的結合性C語言的運算符不僅具有不同的優先級,還有結合性的問題。在表達式的運算過程中,各運算對象參與運算的先后順序不僅要遵循運算符優先級別的規定,還要受運算符結合性的制約,當一個運算對象兩側的運算符優先級別相同時,需按運算符的結合性來處理,以便確定是自左向右進行運算還是自右向左進行運算。2021/02/25563.運算符的結合性C語言的運算符不僅具有C語言中運算符的結合性分為兩種:即左結合性(自左向右)和右結合性(自右向左)。例如:算術運算符就是左結合性的運算符表達式:x-y+z,運算對象y的左側運算符“-”和右側運算符“+”優先級相同,應按結合性來進行自左向右的運算,即先執行x-y運算,再執行+z的運算。
賦值運算符是右結合性的運算符表達式:x=y=z,由于賦值運算符“=”的右結合性,所以先執行y=z運算,再執行x=(y=z)運算。2021/02/2557C語言中運算符的結合性分為兩種:即左結合性(優先級別運算符運算形式結合方向含義1()[].->(e)a[e]x.yp->x自左至右圓括號數組下標運算符結構體成員運算符指向結構體成員運算符2-++--!~(t)*&sizeof-e++x或x++!e~t(t)e*p&xsizeof(t)自右至左負號運算符自增運算符和自減運算符邏輯非運算符按位取反運算符強制類型轉換運算符指針運算符,由地址求內容求變量地址的運算符求某類型變量的長度運算符3*/%e1*e2自左至右乘、除、求余運算符表2.2C語言各運算符的優先級別與結合方向2021/02/2558優先運算符運算形式結合方向含義1()(e)自左至右圓括號2-4+-e1+e2自左至右加法、減法運算符5<<>>e1<<e2自左至右左移、右移運算符6<<=>>=e1<e2自左至右關系運算符7==!=e1==e2自左至右等于、不等于運算符8&e1&e2自左至右按位與運算符9^e1^e2自左至右按位異或運算符10|e1|e2自左至右按位或運算符11&&e1&&e2自左至右邏輯與運算符12||e1||e2自左至右邏輯或運算符13?:e1?e2:e3自右至左條件運算符14=+=-=*=/=%=>>=<<=&=^=|=x=ex+=ex&=e自右至左賦值運算符15,e1,e2自左至右逗號運算符(順序求值)續表2021/02/25594+-e1+e2自左至右加法、減法運算符5<<>⑴同一優先級的運算符優先級別相同,運算次序由結合方向決定;⑵不同的運算符要求有不同的運算對象個數如+(加)和-(減)為雙目運算符,要求在運算符運算符兩側各有一個運算對象(如3+5、8-3等);而++(自增)和-(負號)運算符為單目運算符,只能在運算符的一側出現一個運算對象(如-a、i++、--i、(float)i、sizeof(int)、*p等);條件運算符是C語言中唯一的三目運算符,如x?a:b。⑶從上述表中可以大致歸納出各類運算符的優先級:表2.2說明:2021/02/2560⑴同一優先級的運算符優先級別相同,運算次序由結合方向決定;表特殊運算符()[].->單目運算符算術運算符關系運算符邏輯運算符(不包括!)條件運算符賦值運算符逗號運算符
優先級別由上到下遞減。特殊運算符優先級最高,逗號運算符優先級最低。位運算符的優先級比較分散(有的在算術運算符之前(如~),有的在關系運算符之前(如<<、>>),有的在關系運算符之后(如&、^、|))。2021/02/2561特殊運算符()[].->單目運算符算術運算符關2.4.2算術運算符和算術表達式
1.基本的算術運算符
基本的算術運算符有:加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)五種。
兩個整數相除的結果為整數,如5/3的結果為1,舍去小數部分。但是,如果除數或被除數中有一個為負值,多數機器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠攏。
求余運算符“%”要求參與運算的量均為整型,運算結果等于兩數相除后的余數,余數的符號取決于被除數的符號,如-100%3余數為-1,100%-3余數為1。2021/02/25622.4.2算術運算符和算術表達式1.基本的算術運算符
2.自增自減運算符++i,--i在使用i之前,先使i的值加(減)1i++,i--在使用i之后,再使i的值加(減)1
粗略地看,++i和i++的作用相當于i=i+1,但++i和i++不同之處在于++i是先執行i=i+1后,再使用i的值;而i++是先使用i的值后,再執行i=i+1。2021/02/25632.自增自減運算符++i,--i在使用i之前,先使i例2.6如果i的原值等于3,執行下面的賦值語句:①j=++i;(i的值先變為4,再賦給j,j的值為4)②j=i++;(先將i的值3賦給j,j的值變為3,然后i的值變為4)2021/02/2564例2.6如果i的原值等于3,執行下面的賦值語句例2.7P35例2.5main(){intc=5;printf(“%d,%d,%d\n”,c+=c++,c+8,++c);printf(“%d\n”,c+=c++,c+8,++c);}注意:TurboC規定,printf()函數中出現多個表達式輸出項時,先按從右到左的順序計算各表達式的值,然后再從左到右輸出結果。本例中先計算++c,得c=6,然后計算c+8得14,最后計算c+=c++,得c=13。2021/02/2565例2.7P35例2.5注意:TurboC規定,printf1.有如下兩個程序,試比較結果①
main(){inti=3;printf(“%d,%d\n”,(i++)+(i++)+(i++),i);}②
main(){inti=3,k;k=(i++)+(i++)+(i++);printf(“%d,%d\n”,k,i);}補充:①結果:12,3②結果:9,62021/02/25661.有如下兩個程序,試比較結果補充:①結果:12,3②結果:2.當出現難以區分的若干個+或-組成運算符串時,C語言規定,自左向右取盡可以多的符號組成運算符。例如:設整型變量x,y均為3,則:x+++y應理解為(x++)+y,結果為6,x值為4,y值不變x---y應理解為(x--)-y,結果為0,x值為2,y值不變2021/02/25672.當出現難以區分的若干個+或-組成運算符串時,C語言規定,3.算術運算符的優先規則單目算術運算符(-、++、--)優先于*、/、%算術運算符優先于+、-算術運算符;同級單目算術運算符的結合性自右向左;同級雙目算術運算符的結合性自左向右。2021/02/25683.算術運算符的優先規則單目算術運算符(-、++、--)優先
4.算術表達式用算術運算符和括號將運算對象連接起來的式子,稱為算術表達式。例如下面的表達式為算術表達式:a*b/c-1.5+’a’如果一個算術運算符的兩側的數據類型不同,則按下面所述的內容先自動進行類型轉換,使二者具有同一類型,然后再進行運算。2021/02/25694.算術表達式用算術運算符和括號將運算對各類數值型數據間的混合運算整型(包括int,short,long,unsignedint,unsignedshort,unsignedlong)和實型(包括float,double)數據可以混合運算。而字符型數據可以與整型通用,因此整型、實型和字符型數據間可以混合運算,在進行運算時,不同類型的數據要先換成同一類型,然后進行運算,轉換規則如下圖所示:2021/02/2570各類數值型數據間的混合運算整型(包括idoublefloatlongunsignedintchar,short高低圖中橫向向左的箭頭表示必須的轉換,如字符數據必須先轉換為整數,short型轉換為int,float型數據在運算時一律先轉換為double型,以提高精度(即使是兩個float型數據相加,也先都化成double型,然后再相加)??v向的箭頭表示當運算為不同類型時轉換的方向。例如int型與double型數據進行運算,先將int型數據轉換為double型,然后在兩個同類型(double型)數據間進行運算,結果為double型。注意箭頭方向只表示數據類型級別的高低,由低向高轉換。不要理解為int型先轉換為unsignedint型,再轉成long型,再轉成double型。如果一個int型數據與一個double型數據運算,是直接將int型轉換成double型。2021/02/2571doublefloatlongunsignedintchar例2.8假設已指定i為int型變量,f為float型變量,d為double型變量,e為long型變量,有以下式子:10+‘a’+i*f-d/e在計算機執行時從左至右掃描,運算次序為:①進行10+‘a’的運算,先將‘a’轉換為整數97,運算結果為107;②由于“*”比“+”優先,先進行i*f的運算。先將i與f都轉換成double型,運算結果為double型;③整數107與i*f的結果相加。先將整數107轉換成double型,再相加,結果為double型;④將變量e化為double型,d/e結果為double型;⑤將10+‘a’+i*f的結果與d/e的商相減,結果為double型。2021/02/2572例2.8假設已指定i為int型變量,f為flmain(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結果:x=3.600000,i=3上述類型轉換由系統自動進行的,另一種類型轉換為強制類型轉換。需要說明的是在強制類型轉換時,得到一個所需類型的中間變量,原來變量的類型未發生變化。如:(int)x;如果x原來指定為float型,進行強制類型運算后得一一個int型的中間變量,它的值等于x的整數部分,而x的類型不變(仍為float型)。見下例2.9:2021/02/2573main()結果:上述類型轉換由系統自動進行2.4.3關系運算符和關系表達式所謂“關系運算”實際上是“比較運算”。將兩個值進行比較,判斷其比較的結果是否符合給定的條件。例如,a>3是一個關系表達式,大于號(>)是一個關系運算符,如果a的值為5,則滿足給定的“a>3”條件,因此關系表達式的值為邏輯值“真”(即“條件滿足”),用整數“1”來表示;如果a的值為2,不滿足“a>3”的條件,則稱關系表達式的值為邏輯值“假”,用整數“0”來表示。2021/02/25742.4.3關系運算符和關系表達式所謂“關系運算”實1.關系運算符及其優先次序C語言提供下面6種關系運算符:<(小于)<=(小于等于)>(大于)>=(大于等于)==(等于)!=(不等于)優先級相同(高)優先級相同(低)關于優先順序:
⑴前4種關系運算符(<、<=、>、>=)的優先級別相同,后2種也相同。前4種高于后2種;
⑵關系運算符的優先級低于算術運算符;⑶關系運算符的優先級高于賦值運算符。2021/02/25751.關系運算符及其優先次序C語言提供下面6種關系運算符:例2.10例如:c>a+b等效于c>(a+b)a>b==c等效于(a>b)==ca==b<c等效于a==(b<c)a=b>c等效于a=(b>c)2021/02/2576例2.10例如:2021/02/2576用關系運算符將兩個表達式(可以是算術表達式、關系表達式、邏輯表達式、賦值表達式、字符表達式)連接起來的式子,稱為關系表達式。關系表達式的值是一個邏輯值,即“真”或“假”。例如,關系表達式“5==3”的值為“假”,“5>=0”的值為“真”。C語言沒有邏輯型數據類型,以1代表“真”,以0代表“假”。2.關系表達式2021/02/2577用關系運算符將兩個表達式(可以是算術表達式、例2.11a=3,b=2,c=1,則:
關系表達式“a>b”的值為“真”,表達式的值為1;關系表達式“(a>b)==c”的值為“真”(因為a>b的值為1,等于c的值),表達式的值為1;關系表達式“b+c<a”的值為“假”,表達式的值為0;若有以下賦值表達式:
d=a>bd的值為1f=a>b>cf的值為0(因為“>”運算符是自左向右的結合方向,先執行“a>b”得值為1,再執行關系運算“1>c”,得值0,賦給f)。2021/02/2578例2.11a=3,b=2,c=1,則:2021/02/257例2.12P36例2.6main(){inta=5,b=3;floatx=3.14,y=6.53;printf(“%d,%d\n”,a+b!=a-b,x<=(y-=6.1));}結果:1,02021/02/2579例2.12P36例2.6main()結果:1,02022.4.4邏輯運算符C語言提供的邏輯運算符有三種:&&(邏輯與)、||(邏輯或)、!(邏輯非)?!?&”和“||”為雙目運算符,它要求有兩個運算量,如(a>b)&&(x>y),(a<b)||(x>y)?!?”是單目運算符,只要求有一個運算量,如!(a>b)。1.邏輯運算符及其優先次序2021/02/25802.4.4邏輯運算符C語言提供的邏輯運算符邏輯運算舉例如下:a&&b若a、b為真,則a&&b為真。a||b若a、b之一為真,則a||b為真。!a若a為真,則!a為假。ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假表2.3邏輯運算的真值表2021/02/2581邏輯運算舉例如下:ab!a!ba&&ba||b真真假假真真真在一個邏輯表達式中如果包含多個邏輯運算符,如!a&&b||x>y&&c,按以下的優先順序和結合性:!優先于雙目算術運算符優先于關系運算符優先于&&優先于||;單目邏輯運算符!和單目算術運算符同級別,結合性自右向左;雙目邏輯運算符的結合性是自左向右。2021/02/2582在一個邏輯表達式中如果包含多個邏輯運算符2.邏輯表達式如前所述,邏輯表達式的值應該是一個邏輯量“真”或“假”。C語言編譯系統給出邏輯運算結果時,以數值1代表“真”,以0代表“假”,但在判斷一個量是否為“真”時,以0代表“假”,以非0代表“真”。即將一個非0的數值認作“真”。例如:若a=4,則!a的值為0。因為a的值為非0,被認作“真”,對它進行“非”運算,得“假”,“假”以0來代表。2021/02/25832.邏輯表達式如前所述,邏輯表達式的值應該是若a=4,b=5,則a&&b的值為1。因為a和b均為非0,被認為是“真”,因此a&&b的值也為“真”,值為1。a、b值同前,a||b的值為a、b值同前,!a||b的值為4&&0||2的值為結論:由系統給出的邏輯運算結果不是就是1,不可能是其他數值。而在邏輯表達式中作為參加邏輯運算的運算對象可以是0(“假”)或任何非0的數值(按“真”)對待。如果在一個表達式中不同位置上出現數值,應區分哪些是作為數值運算或關系運逄的對象,哪些作為邏輯運算的對象。例如1112021/02/2584若a=4,b=5,則a&&b的值為1。因為a和b均為非0,被5>3&&8<4-!0表達式自左到右掃描求解。首先處理“5>3”(因為關系運算符優先于&&)。在關系運算符兩側的5和3作為數值參加關系運算,“5>3”的值為1。再進行“1&&8<4-!0”運算,8的左側為“&&”,右側為“<”運算符,根據優先規則,應先進行“<”的運算,即先進行“8<4-!0”的運算。現在4的左側為“<”,右側為“-”運算符,而“-”優先于“<”,因此應先進行“4-!0”的運算,由于“!”級別高,因此先進行“!0”的運算,得到結果1。然后進行“4-1”的運算,得結果3,再進行“8<3”的運算,得結果0,最后進行“1&&0”的運算,得到結果0。2021/02/25855>3&&8<4-!02021/02/2585注意
在邏輯表達式的求解中,并不是所有的邏輯運算符都被執行,只是在必須執行下一個邏輯運算符才能求出表達式的解時,才執行該運算符。a&&b&&c只有a為真(非0)時,才需在判斷b的值,只有a和b都為真的情況下才需在判別c的值。只要a為假,就不必判別b和c(此時整個表達式已確定為假)。如果a為真,b為假,不判別c。a||b||c只要a為真(非0),就不必判斷b和c;只有a為假,才需要判別b;a和b都為假才判別c。2021/02/2586注意在邏輯表達式的求解中,并不是所有的邏輯運算例2.13main(){intw=1,x=2,y=3,z=4,a=5,b=6,c;c=(a=w>x)&&(b=y>z);printf(“a=%d,b=%d,c=%d\n”,a,b,c);}結果:a=0,b=6,c=0main()
{intm,n,l,a,b,c,d;m=n=a=b=c=d=0;l=(m=a==b)||(n=c==d);printf(“m=%d,n=%d,l=%d\n”,m,n,l);}結果:m=1,n=0,l=12021/02/2587例2.13main()2021/02/25872.4.5賦值運算符和賦值表達式1.簡單賦值運算符賦值符號“=”就是賦值運算符,它的作用是將一個數據賦給一個變量。如“a=3”的作用就是執行一次賦值運算,把常量3賦給變量a。也可以將一個表達式的值賦給一個變量。如:x=a+b*c。2021/02/25882.4.5賦值運算符和賦值表達式1.簡單賦值運算符2021/2.復合賦值運算符在賦值符“=”之前加上某些二目運算符可構成復合賦值運算符。復合算術賦值運算符有:+=、-=、*=、/=、%=五種。復合位運算賦值運算符有:<<=、>>=、&=、^=、|=五種。2021/02/25892.復合賦值運算符在賦值符“=”之前加上某些3.賦值表達式由賦值運算符將一個變量和一個表達式連接起來的的式子稱為“賦值表達式”。其一般形式為:
<變量><賦值運算符><表達式>賦值表達式的求解過程:將賦值運算符右側的“表達式”的值賦給左側的變量,賦值表達式的值就是被賦值的變量的值。如“a=5”這個賦值表達式的值為5(變量a的值也為5)。2021/02/25903.賦值表達式由賦值運算符將一個變量和一個表達上述賦值表達式的一般形式中的“表達式”,又可以是一個賦值表達式。如a=(b=5),括號內的“b=5”是一個賦值表達式,它的值等于5?!癮=(b=5)”相當于“b=5”和“a=b”兩個賦值表達式,因此a的值等于5,整個賦值表達式的值也等于5。我們知道賦值運算符按照“自右向左”的結合順序,因此,“b=5”外面的括號可以不要,即“a=(b=5)”和“a=b=5”等價,都是先求“b=5”的值(得5),然后再賦給a,下面舉幾個例子:2021/02/2591上述賦值表達式的一般形式中的“表達式”,又可以是一個a=b=c=5(賦值表達式值為5,a、b、c值均為5)a=5+(c=6)(表達式值為11,a值為11,c值為6)a=(b=4)+(c=6)(表達式值為10,a值為10,b值為4,c值為6)a=(b=10)/(c=2)(表達式值為5,a值為5,b值為10,值為2)2021/02/2592a=b=c=5(賦值表達式值為賦值表達式中可包含復合的賦值運算符。如:a+=a-=a*a,如果a的初值為12,此賦值表達式的求解步驟如下:a)先進行“a-=a*a”運算,它相當于a=a-a*a=12-144=-132;b)再進行“a+=-132”運算,相當于a=a+(-132)=-132-132=-264。2021/02/2593賦值表達式中可包含復合的賦值運算符。如:a+=a-=補充
如果賦值運算符兩側的類型不一致,但都是數值型或字符型時,在賦值時要進行類型轉換。將實型數據(包括單、雙精度)賦給整型變量時,舍棄實數的小數部分。如i為整型變量,執行“i=3.56”的結果是使i的值為3,在內存中以整數形式存儲。將整型數據賦給單、雙精度變量時,數值不變,但以浮點數形式存儲到變量中,如將23賦給float變量f,即f=23,先將23轉換成23.00000,再存儲在f中。如將23賦給double型變量d,即d=23,則將23補足有效位數字為23.000,然后以雙精度浮點數形式存儲到d中。2021/02/2594補充如果賦值運算符兩側的類型不一致將一個double型數據賦給float變量時,截取前面7位有效數字,存放到float變量的存儲單元中,但應注意數值取值范圍不以溢出。字符型數據賦給整型變量時,由于字符只占有1個字節,而整型變量占2個字節,因此將字符數據(8位)放到整型變量低8位中,整型變量高8位有兩種情況:
①若是將unsignedchar數據賦給整型變量,高8位補0。②若是將char數據賦給整型變量,如果字符最高位為0(0~127),則整型變量高8位補0;如果字符最高位為1(-128~-1),則整型變量高8位補1。2021/02/2595將一個double型數據賦給float變量時,截取前面7位有將一個int、short、long型數據賦給一個char型變量時,只將其8位原封不動地送到char型變量(即截斷)。將int型數據賦給long型變量時,要進行符號擴展,將整型數據的16位送到long型低16位中,如果int型數據為正值(符號位為0),則long型變量的高16位補0;如果int型變量為負值(符號位為1),則long型變量的高16位補1,以保持數值不變。將unsignedint型數據賦給long型變量時,不存在符號擴展問題,只需將高位補0。將一個unsigned類型數據賦給一個占字節數相同的signed變量(如:unsignedint=>int,unsignedlong=>long,unsignedshort=>short,unsignedchar=>char),將unsigned型數據的2021/02/2596將一個int、short、long型數據賦給一個char型變內存中各位原樣送到signed型變量中,若unsigned類型數據未超過要賦值的變量的范圍,則signed型變量值與unsigned型數據值相同;若超過,要根據補碼知識進行轉換。如:main(){unsignedinta=65535;intb;b=a;printf(“%d”,b);}結果輸出-12021/02/2597內存中各位原樣送到signed型變量中,若unsigned將signed型數據賦給所占字節相同的unsigned型變量,同樣將signed型數據所占內存的各位原樣送到unsigned型變量內存中,若signed型數據為非負值,則unsigned型變量值與signed型數據值相同;若為負值,要根據補碼知識進行轉換。如:main(){unsigneda;intb=-1;a=b;printf(“%u”,a);}結果輸出65535。2021/02/2598將signed型數據賦給所占字節相同的uns2.4.6條件運算符和條件表達式1.條件運算符條件運算符要求有3個操作對象,它是C語言中唯一的三目運算符。條件運算符的優先級規則:其他運算符優先于條件運算符,條件運算符優先于賦值運算符和逗號運算符;條件運算符的結合性是自右向左。2021/02/25992.4.6條件運算符和條件表達式1.條件運算符2021/02.條件表達式用條件運算符構成的表達式稱為條件表達式,其一般形式為:表達式1?表達式2:表達式3條件表達式的執行順序是:先計算表達式1的值,若值為非0(真),則計算表達式2的值,并將表達式2的值作為整個條件表達式的結果;若表達式1的值為0(假),則計算表達式3的值,并將表達式3的值作為整個條件表達式的結果。2021/02/251002.條件表達式用條件運算符構成的表達式稱為條例2.14main(){inta=1,b=2,c=3,d=4,e;e=a>b?a:c<d?c:d;printf(“%d\n”,e);}條件運算符的結合方向為“自右向左”。所以條件表達式a>b?a:c>d?c:d相當于a>b?a:(c>d?c:d)。2021/02/25101例2.14main()條件運算符的結合方向為“自右向左”。所2.4.7逗號運算符和逗號表達式C語言中提供了一種特殊的運算符——逗號運算符。它用來將兩個表達式連接起來組成一個表達式,如3+5,6+8稱為逗號表達式。其一般形式為:
表達式1,表達式2其求解過程是:先求解表達式1,再求解表達式2,并將表達式2的值作為整個逗號表達式的值。如上面的逗號表達式“3+5,6+8”的值為14,又如2021/02/251022.4.7逗號運算符和逗號表達式C語言中提供了一種a=3*5,a*4由表2.2可知:賦值運算符的優先級別高于逗號運算符,因此應先求解a=3*5這個賦值表達式,計算得這個賦值表達式值為15,再求解a*4這個表達式,得60,整個逗號表達式的值為60。一個逗號表達式又可以與另一個表達式組成一個新的表達式,所以逗號表達式的一般形式可擴展為:
表達式1,表達式2,表達式3……表達式n
順序求解這n個表達式,整個表達式值為表達式n的值。2021/02/25103a=3*5,a*42021/02/25103請注意并不是任何地方出現的逗號都是作為逗號運算符,例如變量說明:inta,b,c;函數參數:printf(“%d,%d,%d”,a,b,c);其中的“a,b,c”并不是一個逗號表達式,它是printf函數的3個參數。2021/02/25104請注意并不是任何地方出現的逗號都是作為逗號運算符,例如2022.4.8位運算符和位運算1.“按位與”運算符(&)參與運算的兩個數,按二進位進行“與”運算。如果兩個相應的二進位都為1,則該位的結果值為1,否則為0。即:
0&0=0;0&1=0;1&0=0;1&1=12021/02/251052.4.8位運算符和位運算1.“按位與”運算符(&)2022.“按位或”運算符(|)參與運算的兩個數,按二進位進行“或”運算。如果兩個相應的二進位只要一個為1,則該位的結果值為1,即:
0&0=0;0&1=1;1&0=1;1&1=12021/02/251062.“按位或”運算符(|)2021/02/251063.“按位異或”運算符(^)異或運算符^也稱XOR運算符。它的規則是若參加運算的兩個二進位相異時,結果位為1。即
0^0=0;0^1=1;1^0=1;1^1=02021/02/251073.“按位異或”運算符(^)2021/02/251072.4.8位運算符和位運算4.“按位取反”運算符(~)~是一個單目運算符,用來對一個二進制數按位取反,即將0變為1,1變為0。2021/02/251082.4.8位運算符和位運算4.“按位取反”運算符(~)20例2.15教材P37例2.92021/02/25109例2.15教材P37例2.92021/02/25109第三章輸入和輸出所謂輸入輸出是以計算機主機為主體而言的,從計算機向外部輸出設備(如顯示屏、打印機、磁盤等)輸出數據稱為“輸出”,從外部由輸入設備(如鍵盤、磁盤、光盤、掃描儀等)輸入數據稱為“輸入”。一個完整的程序都應該有數據的輸入輸出功能,沒有輸出功能是無用的,因為程序運行的結果看不見;沒有輸入功能則程序缺乏靈活性,每次運行都只能對相同的數據執行操作,所以輸入輸出是程序中不可缺少的部分。2021/02/25110第三章輸入和輸出所謂輸入輸出是以計算機C語言中輸入和輸出都是由函數來實現的,C提供的函數以庫的形式存放在系統中(如輸入輸出函數庫、數學函數庫、字符函數庫、字符串函數庫等),每個函數庫含有若干個函數,C語言提供了一批標準輸入輸出函數,其中有putchar(輸出字符)、getchar(輸入字符)、printf(格式輸出)、scanf(格式輸入)、puts(輸出字符串)、gets(輸入字符串),本章中介紹前四個最基本的輸入輸出函數。2021/02/25111C語言中輸入和輸出都是由函數來實現的,C提供的在使用C語言庫函數時,要用文件包含命令“#include”將有關的“頭文件”包括到用戶的源文件中,在頭文件中包含了要用到的函數有關的一些信息,如變量的定義和宏定義。例如使用標準輸入輸出庫函數時,要用到“stdio.h”文件,stdio是standardinput&output的縮寫,文件后綴“h”是head的縮與,#include命令都是放在程序的開頭,因些這類文件又被稱為“頭文件”,在調用標準輸入輸出庫函數時,程序開頭應用以下文件包含命令:#include<stdio.h>考慮到printf和scanf函數使用頻繁,系統允許在使用這兩個函數時可不加#include命令。2021/02/25112在使用C語言庫函數時,要用文件包含命令“#in3.1字符的輸入輸出函數C語言提供了兩個標準的字符輸入輸出函數putchar和getchar,在使用這兩個函數時,在程序的頭部一定要加上下面的文件包含命令:#include<stdio.h>2021/02/251133.1字符的輸入輸出函數C語言提供了兩個標準的3.1.1字符輸出函數(putchar)putchar函數的作用是向終端(顯示屏)輸出一個字符,其一般形式為
putchar(ch);意思是在顯示屏上輸出括號內字符變量ch所代表的字符,ch可以是字符數據(常量或變量)和整型數據(常量或變量)。2021/02/251143.1.1字符輸出函數(putchar)putc例3.1教材P49例3.7#include<stdio.h>main(){chara=‘Y’;b=‘e’;putchar(a);putchar(b);putchar(‘s’);putchar(‘\n’);putchar(‘\141’);}Yesa結果:2021/02/25115例3.1教材P49例3.7Yesa結果:2021/02/253.1.2字符輸入函數(getchar)getchar函數的作用是從終端(鍵盤)設入一個字符。其一般形式為:
getchar();getchar()只能接收一個字符,該字符可以賦給一個字符變量或整型變量,也可以不賦給任何變量,作為表達式的一個運算對象參加表達式的運算處理。2021/02/251163.1.2字符輸入函數(getchar)ge例3.2教材P50例3.8#include<stdio.h>main(){charc;c=getchar();putchar(c);}例3.3教材P50例3.9#include<stdio.h>main(){intc;c=getchar();c>=‘a’&&c<=‘z’?putchar(c+‘A’-‘a’):putchar(c);}2021/02/25117例3.2教材P50例3.82021/02/251173.2格式輸入輸出函數C語言提供了兩個標準的格式輸入輸出函數,即格式輸入函數scanf和格式輸出函數printf。字符輸入輸出函數只能輸入輸出單個字符,而格式輸入輸出函數可按指定的格式輸入輸出若干個任意類型的數據。2021/02/251183.2格式輸入輸出函數C語言提供了兩個標準3.2.1格式輸出函數(printf)printf函數作用是按用戶指定的格式,把若干個任意類型的數據輸出到顯示屏上。其一般形式為
printf(“格式控制字符串”,輸出表列);格式控制字符串用來指定輸出的格式,它由格式字符串和非格式字符串兩大類組成。2021/02/251193.2.1格式輸出函數(printf)pri格式字符串是以%開頭的字符串,用來指定輸出數據的類型、形式、長度、小數位數等。非格式字符串包括普通字符(原樣輸出)和轉義字符(如\n、\t、\r、\101等)。輸出表列表示要輸出的各個數據項,要求格式字符串和各輸出項在數量和類型上應該一一對應。2021/02/25120格式字符串是以%開頭的字符串,用來指定輸出數據1.格式字符串格式字符串的一般形式為:%[標志][輸出最小寬度][.精度][長度]類型類型:指定輸出數據的類型格式符意義d以十進制形式輸出有符號整數(正數不輸出符號)o以八進制形式輸出無符號整數(不輸出前綴0)x以十六進制形式輸出無符號整數(不輸出前綴0x)u以十進制形式輸出無符號整數(不輸出符號)c輸出單個字符2021/02/251211.格式字符串格式符意義d以十進制形式輸出有符號整數(正數不s輸出字符串f以小數形式輸出單、雙精度實數e以指數形式輸出單、雙精度實數g以%f和%e中較短寬度輸出單、雙精度標志:有-、+、#、0四種標志意義-輸出結果左對齊,右邊補空格+輸出符號(正號或負號)#對c,s,d,u無影響;對o在輸出時加前綴0;對x在輸出時加ox;0輸出結果右對齊時,左邊空格用0代替2021/02/25122s輸出字符串f以小數形式輸出單、雙精度實數e以指數形式輸出單輸出最小寬度:用十進制正整數來表示輸出的最小位數,若實際位數多于定義的寬度,則按實際位數輸出,若實際位數少于定義的寬度則補以空格或0。精度:以“.”開頭,后跟十進制正整數,如果輸出實數,則表示小數的位數;如果輸出字符串,則表示輸出字符的寬度,若實際小數位數大于所定義的精度數,要截去超過的部分。長度:格式符“l”表示按長整型輸出。2021/02/25123輸出最小寬度:用十進制正整數來表示輸出的最小位數,若實際位數例3.4main(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}結果:a=-1,177777,ffff,65535b=-2,177776,fffe,655342021/02/25124例3.4main()結果:a=-1,177777,ffff,
例3.5字符串的輸出main(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“china”,“china”,“china”,”china”);}結果:china,ch,chin,chi2021/02/25125例3.5字符串的輸出main()結果:china,例3.6輸出實數時指定小數位數main(){floatf=123.456;printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);}結果:123.456001123.456001123.46
123.46
123.462021/02/25126例3.6輸出實數時指定小數位數main()結果:2021/03.2.2格式輸入函數(scanf)scanf函數作用是按用戶指定的格式從鍵盤上把數據輸入到指定的變量中。其一般形式為:scanf(“格式控制字符串”,地址表列);格式控制字符串是用來指定要輸入的數據的格式,地址表列給出要賦值的各變量的地址,地址由地址運算符“&”后加變量名構成,如&a表示變量a的地址。2021/02/251273.2.2格式輸入函數(scanf)scanf1.格式字符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉鎮勞動教學計劃
- 文創產品銷售顧客接待標準服務流程
- 地下電纜敷設安裝施工方案與技術措施
- 校本課程中的德育實施計劃
- 大型施工現場安全治安保衛計劃
- “雙減”政策促進學生心理健康的心得體會
- 成人高考語文作文范文結構優化
- 合作社資本運作職責
- 【中考模擬】2025年浙江省寧波七中教育集團中考數學適應性試卷(含解析)
- 輕鋼龍骨隔墻吊頂施工工藝及流程
- 中醫院人才引進績效考核方案
- 2024年中級經濟師考試經濟基礎知識必考重點總結全覆蓋
- 一年級期末家長會
- 轉崗人員安全知識培訓
- 2024年黑龍江省齊齊哈爾市初中學業考試地理試題含答案
- 完整版2024年注安法規真題及答案(85題)
- 員工工資表范本
- 過戶摩托車委托書
- 小學五年級下、六年級上年級數學口算天天練20以內分數加減乘除法隨機1000道-第1套
- 序篇 不忘初心 作品鑒賞 不忘初心 課件-2023-2024學年高中音樂人音版(2019)必修音樂鑒賞
- 鐵嶺三支一扶真題2023
評論
0/150
提交評論