版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課前訓(xùn)練編程:求兩個(gè)數(shù)的乘積本章重點(diǎn)常量和變量的概念和表現(xiàn)形式基本數(shù)據(jù)類型及其運(yùn)算整數(shù)類型()字符類型()浮點(diǎn)類型()數(shù)據(jù)的輸入和輸出Scanf格式和使用方法Printf格式和使用方法第3章最簡(jiǎn)單的C程序設(shè)計(jì)3.1順序程序設(shè)計(jì)舉例3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.3C語(yǔ)句3.4數(shù)據(jù)的輸入輸出3.1順序程序設(shè)計(jì)舉例
例3.1有人用溫度計(jì)測(cè)量出用華氏法表示的溫度(如F),今要求把它轉(zhuǎn)換為以攝氏法表示的溫度(如C)。解題思路:找到二者間的轉(zhuǎn)換公式f代表華氏溫度,c代表攝氏溫度3.1順序程序設(shè)計(jì)舉例算法:輸入f的值輸出c的值
例3.1有人用溫度計(jì)測(cè)量出用華氏法表示的溫度(如F),今要求把它轉(zhuǎn)換為以攝氏法表示的溫度(如C)。N-S圖3.1順序程序設(shè)計(jì)舉例#include<stdio.h>intmain(){
floatf,c;f=64.0;c=(5.0/9)*(f-32);
printf("f=%f\nc=%f\n",f,c);
return0;}定義f和c為單精度浮點(diǎn)型變量指定f的值計(jì)算c的值輸出f和c的值思考:任意給定一個(gè)f值,輸出c的值scanf("%f",&f);3.1順序程序設(shè)計(jì)舉例C語(yǔ)言程序的執(zhí)行流程C語(yǔ)言程序都是從main()函數(shù)的第一條指令開(kāi)始執(zhí)行,到main()函數(shù)的最后一條指令結(jié)束,其他的函數(shù)通過(guò)main()函數(shù)直接或者間接調(diào)用,才得以執(zhí)行。順序程序一個(gè)不拉掉,每條指令從前往后逐條執(zhí)行學(xué)習(xí)實(shí)踐:輸入三角形的三邊長(zhǎng),求三角形面積。例
輸入三角形的三邊長(zhǎng),求三角形面積。假設(shè):三個(gè)邊長(zhǎng)a,b,c能構(gòu)成三角形。已知面積公式:area=s=(a+b+c)*0.5開(kāi)始輸入三邊長(zhǎng)計(jì)算s計(jì)算面積結(jié)束思路和算法
#include<stdio.h>
#include<math.h>
intmain()
{
float
a,b,c,s,area;
scanf(“%f,%f,%f”,&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);
printf(“area=%7.2f\n”,area);
return0;}數(shù)學(xué)函數(shù)庫(kù)因?yàn)橐玫狡渲械那笃椒礁鵶qrt函數(shù)面向機(jī)器的程序設(shè)計(jì)程序設(shè)計(jì)的主體對(duì)象是機(jī)器程序設(shè)計(jì)人員首先要考慮機(jī)器的特性:不能直接和人交流因此在程序中首先需要有數(shù)據(jù)的交代。也就是提供原始數(shù)據(jù)然后要將自己的思路用機(jī)器能接受的方式表達(dá)出來(lái),也就是要將自己的解題步驟細(xì)化,不能太跳躍(可以先從簡(jiǎn)單程序開(kāi)始模仿起)逐步掌握這個(gè)思維模式。引發(fā)的思考和解決的程序上例中求三角形的面積,就可以讓我們想到很多相關(guān)的程序,比如:長(zhǎng)方形的面積和周長(zhǎng),圓的面積和周長(zhǎng),圓球的體積,或者將角度值轉(zhuǎn)換成弧度值等。這些都只需要在程序中先提供長(zhǎng)寬或者半徑等原始數(shù)據(jù),然后利用現(xiàn)成數(shù)學(xué)公式進(jìn)行計(jì)算(數(shù)據(jù)處理),最后輸出計(jì)算結(jié)果(結(jié)果輸出)模仿編寫(xiě)這些程序總結(jié):程序的三部曲提供原始數(shù)據(jù)數(shù)據(jù)處理處理結(jié)果輸出3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1
數(shù)據(jù)類型3.2.2
常量3.2.3變量3.2.4
算術(shù)運(yùn)算符及其表達(dá)式3.2.5賦值運(yùn)算符標(biāo)識(shí)符是C語(yǔ)言中的詞匯,包含系統(tǒng)保留字和用戶自定義標(biāo)識(shí)符。系統(tǒng)保留字:int,float,for等用戶自定義標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須為字母或下劃線,且不能是系統(tǒng)保留字
合法的標(biāo)識(shí)符:sum,average,_total,Class,day,BASIC,li_ling
不合法:
M.D.John,¥123,#33,3D64,a>b預(yù)備知識(shí)——標(biāo)識(shí)符數(shù)據(jù)類型基本類型
派生類型
整型類型浮點(diǎn)類型
基本整型(int)短整型(shortint)長(zhǎng)整型(longint)字符型(char)布爾型(bool)單精度型(float)雙精度型(double)
復(fù)數(shù)浮點(diǎn)指針(*)數(shù)組([])結(jié)構(gòu)體(struct)共用體(union)函數(shù)3.2.1數(shù)據(jù)類型
C語(yǔ)言使用的數(shù)據(jù)類型枚舉(enum)空類型(void)問(wèn)題:為什么要分?jǐn)?shù)據(jù)類型(1)如同學(xué)生入校后要先分專業(yè)一樣,不同的專業(yè)開(kāi)設(shè)的課程不一樣,進(jìn)行不同方向的培養(yǎng);那么不同的事件或者任務(wù),涉及的數(shù)據(jù)不一樣,能進(jìn)行的操作也不一樣,比如成績(jī),是數(shù)值,而姓名是字符,它們的在內(nèi)存里的保存方法不同,能進(jìn)行的運(yùn)算也不一樣。(2)可以將問(wèn)題簡(jiǎn)單化。撇掉不需要的環(huán)節(jié),只在小范圍內(nèi)考慮問(wèn)題(3)不是自然界的每一樣?xùn)|西都能直接用數(shù)字表示,可能需要轉(zhuǎn)化或者變通。類型相同的數(shù)據(jù)有相同的表示形式、存儲(chǔ)格式以及相關(guān)的操作;
程序中使用的所有數(shù)據(jù)和函數(shù)都必定屬于某一種數(shù)據(jù)類型.C語(yǔ)言程序可以在不同的編譯系統(tǒng)下開(kāi)發(fā)調(diào)試程序,但是它們規(guī)定各類數(shù)據(jù)的精度、數(shù)值范圍和在內(nèi)存中所占的具體字節(jié)數(shù)不同,如果未經(jīng)說(shuō)明,本課程以VC6.0編譯系統(tǒng)為準(zhǔn),講解C語(yǔ)言中各類數(shù)據(jù)的數(shù)據(jù)精度、數(shù)值范圍和在內(nèi)存中所占用的字節(jié)數(shù)來(lái)(45頁(yè)第5行,可以略看)先講常用的數(shù)據(jù)類型1.整型類型標(biāo)識(shí)符類型字節(jié)數(shù)范圍int基本整型4-2147483648~2147483647unsignedint無(wú)符號(hào)基本整型40~4294967295short短整型2-32768~32767unsignedshort無(wú)符號(hào)短整型20~65535long長(zhǎng)整型4-2147483648~2147483647記住類型的英文單詞、說(shuō)明及所占用的字節(jié)數(shù)以及大致范圍就行了還有好幾種整型相關(guān)的類型,詳細(xì)見(jiàn)書(shū)45頁(yè)表3.2一般用得多的還是基本整型int,足夠滿足需要,占用存儲(chǔ)空間也不太多例如:整數(shù)13在內(nèi)存中實(shí)際存放的情況:數(shù)據(jù)在內(nèi)存都以補(bǔ)碼形式存在,整數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼,以短整型為例。舉例2:無(wú)符號(hào)短整型(unsignedshort),占2個(gè)字節(jié),16個(gè)二進(jìn)制位,最高位為數(shù)值位11111111111111110000000000000000(與216-1,即65535)(0)舉例1:短整型(short),占2個(gè)字節(jié),16個(gè)二進(jìn)制位11111111
1111
1111
補(bǔ)碼00000000
0000
0000
求反00000000
00000001加11轉(zhuǎn)換為十進(jìn)制數(shù)-1補(bǔ)符號(hào)負(fù)號(hào)11111111111111110000000000000001(-1)(-32768)負(fù)數(shù)11111111111111100000000000000000(與215-1,即32767)(0)正數(shù)100000000000
0000
補(bǔ)碼011111111111
1111
求反100000000000
0000
加132768轉(zhuǎn)換為十進(jìn)制數(shù)-32768補(bǔ)符號(hào)負(fù)號(hào)2.字符型占一個(gè)字節(jié),8bit,存放字符的Ascii碼,例如字符‘a(chǎn)’,存放的是97D,也就是01100001B,如果將其按數(shù)值輸出,結(jié)果是97,因此它可以和數(shù)值進(jìn)行加減運(yùn)算,例如:‘a(chǎn)’+1:得到’b’的ascii編碼98D‘a(chǎn)’-’b’:-1類型標(biāo)識(shí)符類型字節(jié)數(shù)數(shù)值范圍[signed]char字符型1-128~+127unsignedchar無(wú)符號(hào)字符型10~25501100001說(shuō)明:[]包含的部分可以缺省。用得多的是char。3.浮點(diǎn)類型又稱為實(shí)數(shù)類型,都是有符號(hào)(有正負(fù))的,float,提供6位有效數(shù)字,其他是隨機(jī)的double,提供15位有效數(shù)字,其他隨機(jī);表示范圍比f(wàn)loat大,精確度也更高些longdouble
,與double同書(shū)50頁(yè)表3.4VC++6.0長(zhǎng)雙精度只分配8個(gè)字節(jié),實(shí)際上用不到長(zhǎng)雙精度型類型字節(jié)
數(shù)的范圍(絕對(duì)值)有效數(shù)字float4
0,1.2*10-38~3.4*10386~7位double型8
0,2.3*10-308~1.7*1030815~16位longdouble8/12
18~19位總結(jié)與習(xí)題1.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是A)均占4個(gè)字節(jié)
B)根據(jù)數(shù)據(jù)的大小來(lái)決定所占內(nèi)存的字節(jié)數(shù)C)由用戶自己定義
D)由C語(yǔ)言編譯系統(tǒng)決定2.例3.1中有哪些數(shù)據(jù)類型3.2.2常量主要內(nèi)容:常量概念的理解直接常量整數(shù)類型常量浮點(diǎn)類型常量字符類型常量字符串常量符號(hào)常量3.2.2常量常量的理解:在程序運(yùn)行過(guò)程中,其值不能被改變的量。常量在程序運(yùn)行時(shí),不分配存儲(chǔ)空間。直接常量(1)整型常量:(一般按int處理,分配4個(gè)字節(jié)。)
如1000,12345,0,-345
八進(jìn)制整數(shù),前面加0,例如:0123
十六進(jìn)制整數(shù),前面加0x,例如:0x9a
長(zhǎng)整型在數(shù)據(jù)后加L或者l書(shū)51頁(yè)整型常量3.2.2常量常量的理解:在程序運(yùn)行過(guò)程中,其值不能被改變的量。常量在程序運(yùn)行時(shí),不分配存儲(chǔ)空間。直接常量(1)整型常量:(一般按int處理,分配4個(gè)字節(jié)。)
如1000,12345,0,-345書(shū)51頁(yè)整型常量(2)實(shí)型常量:(一般按照double處理存放)十進(jìn)制小數(shù)形式:如0.34-56.790.0指數(shù)形式:如12.34e3(代表12.34103)(3)字符常量(char)①普通字符常量用單引號(hào)括起來(lái)的單個(gè)字符,例如‘a(chǎn)’,‘K’等;注意單引號(hào)不是其組成部分存儲(chǔ):占一個(gè)字節(jié),存其Ascii碼。‘1’‘1’和1是有區(qū)別的②轉(zhuǎn)義字符“\”開(kāi)頭的字符序列。見(jiàn)書(shū)40頁(yè)表3.1例如::’\n’——換行符;’\0’——空操作符;’\x41’——’a’,‘\101’——‘A’轉(zhuǎn)義字符也可以用在字符串中011000010011000100000000
00000001只能包括一個(gè)字符,如’AB‘是不合法的。(3)字符常量:用單引號(hào)定界直接字符:如’?’轉(zhuǎn)義字符:如’\n’,詳細(xì)見(jiàn)書(shū)40頁(yè)表3.1只能包括一個(gè)字符,如’AB‘是不合法的。例1(轉(zhuǎn)義字符)分析程序運(yùn)行結(jié)果:#include<stdio.h>intmain(){printf("\x07operation\tsystem\n");printf("\101\tA\012");return0;}響鈴,等價(jià)于\a橫向跳一制表符換行字符'A'的ASCII碼,與'A'等價(jià)例2(轉(zhuǎn)義字符)分析程序運(yùn)行結(jié)果:#include<stdio.h>int
main(){printf("\"123\"\\\"456\"\t\101\a\a\a\n\'abc\'\\\'def\'\t\x42\n");
return0;}輸出結(jié)果:“123”\”456”A(三聲響鈴)‘a(chǎn)bc’\’def’BC中常用轉(zhuǎn)義字符
名稱字符形式ASCII值空字符(Null)\00響鈴(Bell)\a7退格(BackSpasc)\b8水平制表(HorizontalTab)\t9換行(NewLine)\n10換頁(yè)(FormFeed)\f12回車(CarriageReturn)\r13雙引號(hào)(doublequote)\〞34單引號(hào)(singlequote)
\′39問(wèn)號(hào)(questionmark)\?63反斜杠(backslash)\\921~3八進(jìn)制所代表的字符\ddd與數(shù)值常量區(qū)別1~2十六進(jìn)制所代表的字符\xdd
注意:①字符型數(shù)據(jù)在內(nèi)存中以ASCII碼存儲(chǔ)②‘\0’表示ASCII碼為0的字符,‘0’是ASCII碼為48的數(shù)字字符③回車符’\r’與換行符’\n’的區(qū)別(4)字符串常量:用雙引號(hào)定界,如”boy”用雙引號(hào)括起來(lái)的部分就是字符串常量,如″abc″,″Hello!″,″a+b″,″123″字符串存儲(chǔ)時(shí)在末尾自動(dòng)加上‘\0’——標(biāo)志字符串的結(jié)束。如字符串”abc”為:在內(nèi)存中占4個(gè)字節(jié)(而不是3個(gè)字節(jié))在存儲(chǔ)時(shí),存放字符串中每個(gè)字符的ASCII碼值。如字符串”abc”為:注意:1.區(qū)分字符常量與字符串常量。如:‘a(chǎn)’只占一個(gè)字節(jié),是字符常量,而”a”占二個(gè)字節(jié),是字符串常量。2.沒(méi)有字符串類型,只有字符類型,字符串要用其他方式定義,例如:字符數(shù)組來(lái)存放,見(jiàn)第6章數(shù)組;3.轉(zhuǎn)義字符也可以出現(xiàn)在字符串中abc\0979899\0例:常量輸出#include<stdio.h>intmain(){
printf("%d%d\n",123,-123);printf("%f%f%e\n",0.34,-56.79,0.000000123);
printf("%c%s\n",'q',"QQ");return0;}123-1230.340000-56.7900001.230000e-007qQQPressanykeytocontinue符號(hào)常量:#definePI3.1416用一個(gè)符號(hào)名代表一個(gè)常量,稱為符號(hào)常量定義:#define
常量標(biāo)識(shí)符常量——
稱為宏定義(通常用大寫(xiě)字符表示常量標(biāo)識(shí)符)//計(jì)算圓周長(zhǎng)及面積#definePI3.141593#include<stdio.h>intmain(){doubler,l,s;r=3.0;l=2.0*PI*r;s=PI*r*r;printf("l=%f\n",l);printf("s=%f\n",s);return0;}定義符號(hào)常量PI程序中用預(yù)處理命令#define指定PI在本程序單位中代表常量3.141593,此后凡在本程序單位中出現(xiàn)的PI都代表3.141593,可以和常量一樣進(jìn)行運(yùn)算。請(qǐng)注意符號(hào)常量雖然有名字,但它不是變量。它的值在其作用域(在本例中為主函數(shù))內(nèi)是不能改變的,也不能被賦值。如用賦值語(yǔ)句“PI=4;”給PI賦值是錯(cuò)誤的。使用符號(hào)常量的好處是:(1)含義清楚。(2)在需要改變一個(gè)常量時(shí)能做到“一改全改”。如:#definePI3.1416注意:該語(yǔ)句后面沒(méi)有分號(hào)怎樣確定常量的類型字符常量:由單撇號(hào)括起來(lái)的單個(gè)字符或轉(zhuǎn)義字符整型常量:不帶小數(shù)點(diǎn)的數(shù)值系統(tǒng)根據(jù)數(shù)值的大小確定int型還是long型等浮點(diǎn)型常量:凡以小數(shù)形式或指數(shù)形式出現(xiàn)的實(shí)數(shù)C編譯系統(tǒng)把浮點(diǎn)型常量都按雙精度處理分配8個(gè)字節(jié)常量總結(jié)數(shù)據(jù)的表示方法:在C語(yǔ)言中,數(shù)據(jù)可以用常量(常數(shù))、變量、函數(shù)、表達(dá)式表示。常量:值不能改變的,分為直接常量和符號(hào)常量?jī)深?,在?nèi)存中不占用存儲(chǔ)空間。直接常量:直接參與計(jì)算符號(hào)常量:編譯前要進(jìn)行替換常量的習(xí)題1.以下所列的C語(yǔ)言常量中,錯(cuò)誤的是(B)。
A)0xFF
B)1.2e0.5
C)2L
D)‘\72’2.以下選項(xiàng)中合法的字符常量是(B)。
A)“B”
B)‘\010’
C)68
D)D3.已知大寫(xiě)字母A的ASCII碼值是65,小寫(xiě)字母a的ASCII碼是97,則用八進(jìn)制表示的字符常量‘\101’是()。
A)字符AB)字符a
C)字符e
D)非法的常量
4.以下選項(xiàng)中不能作為合法常量是(B)浮點(diǎn)型指數(shù)形式
A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e03.2.3變量主要內(nèi)容:變量概念的理解變量的定義變量的初始化和賦值常變量1.變量概念的理解變量的理解:在程序運(yùn)行期間,變量的值是可以改變的變量必須先定義,后使用定義變量時(shí)指定該變量的名字和類型變量名和變量值是兩個(gè)不同的概念變量是存儲(chǔ)單元。一個(gè)變量名代表一個(gè)存儲(chǔ)空間,使用變量名,方便在程序中訪問(wèn)和使用。從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)2.變量的定義變量必須先定義后使用——以便給變量分配對(duì)應(yīng)的存儲(chǔ)單元——在C/C++語(yǔ)言中,不同類型的變量占據(jù)的內(nèi)存的大小不同,通過(guò)變量定義,計(jì)算機(jī)可以根據(jù)變量的類型確定分配給該變量的內(nèi)存單元大小。例1:floata,b,c,d,e;//定義a,b,c,d,e為單精度型變量例2:floata=83.5,b,c=64.5,d=81.2,e;
//對(duì)變量a,c,d指定了初值,b和e未指定初值定義格式:數(shù)據(jù)類型變量名表;intcharfloatdouble等各變量名之間用“,”分隔常量與變量區(qū)別程序中,所有數(shù)據(jù)以常量形式出現(xiàn)或存放在變量中常量,是程序運(yùn)行中保持不變的數(shù)據(jù)量變量,是程序中可訪問(wèn)的內(nèi)存單元變量的幾個(gè)要素:(舉例,看前面的程序)每一個(gè)變量都有一個(gè)由程序員給出的變量名,以此識(shí)別每一個(gè)變量。變量的名字必須遵循標(biāo)識(shí)符的命名規(guī)則。每一個(gè)變量又具有一個(gè)特定的數(shù)據(jù)類型。在定義變量時(shí),還可以給這個(gè)變量賦一個(gè)初始值(稱位初始化,不是必須這樣作),系統(tǒng)在編譯時(shí)就會(huì)分配給該變量一個(gè)存儲(chǔ)空間。3.為變量賦初值允許在定義變量時(shí)對(duì)它賦予一個(gè)初值,這稱為變量初始化。初值可以是常量,也可以是一個(gè)有確定值的表達(dá)式。如floata,b=5.78*3.5,c=2*sin(2.0);解釋:定義a,b,c為單精度浮點(diǎn)型變量,對(duì)b初始化為5.78*3,對(duì)c初始化為2*sin(2.0),在編譯連接后,從標(biāo)準(zhǔn)函數(shù)庫(kù)得到正弦函數(shù)sin(2.0)的值,因此變量c有確定的初值。變量a未初始化。如果對(duì)變量未賦初值,則該變量的初值是一個(gè)不可預(yù)測(cè)的值,即該存儲(chǔ)單元中當(dāng)時(shí)的內(nèi)容是不知道的。例如,若未對(duì)a和b賦值,執(zhí)行輸出語(yǔ)句
printf(“%d,%d”,a,b);輸出結(jié)果可能為(視分配到的存儲(chǔ)空間使用前存儲(chǔ)的值)對(duì)多個(gè)變量賦予同一初值,必須分別指定,不能寫(xiě)成
floata=b=c=4.5;(×)而應(yīng)寫(xiě)成floata=4.5,b=4.5,c=4.5;(√)或floata,b,c=4.5;a=b=c;(√)注意字符變量只能賦一個(gè)字符常量值舉例:charc;//定義了一個(gè)字符變量cc=‘a(chǎn)’;//正確c=“a”;//錯(cuò)誤,c只能容納一個(gè)字符
我們目前可以定義的變量數(shù)據(jù)類型有:整型、浮點(diǎn)型和字符類型(常用的如:int
float
double
char)c語(yǔ)言沒(méi)有字符串類型,因此就不能定義字符串類型的變量思考:字符類型的變量能否存放漢字?(1)整型變量定義示例#include<stdio.h>intmain(){
int
a,b,c,d;/*指定a、b、c、d為整型變量*/unsignedu;/*指定u為無(wú)符號(hào)整型變量*/a=12;b=-24;u=10;c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);return0;}定義變量其實(shí)就是按變量的類型為其申請(qǐng)存儲(chǔ)空間運(yùn)行結(jié)果:
a+u=22,b+u=-14
說(shuō)明:可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算(2)浮點(diǎn)型變量定義示例#include<stdio.h>intmain(){floatx;/*指定x為單精度型浮點(diǎn)型變量*/
doubley;/*指定y為雙精度型浮點(diǎn)型變量*/x=12.3456789;y=
-2.4e12;printf("x=%f\n",x);printf("y=%f\n",y);
return0;}浮點(diǎn)數(shù)的有效數(shù)字為6位。雙精度數(shù)Q 有效位數(shù)為15位1(3)字符變量定義示例1例1
將字符賦給整型變量。#include<stdio.h>intmain(){inti,j;//
i和j是整型變量i=‘A’;//
將一個(gè)字符常量賦給整型變量i,i的值為’a’的ascii碼,41H,就是65j=‘B’;//
將一個(gè)字符常量賦給整型變量jprintf("i=%d,j=%d\n",i,j);//輸出整型變量i和j的值return0;}字符數(shù)據(jù)是以ASCII碼值存儲(chǔ)的,它的存儲(chǔ)形式與整數(shù)的存儲(chǔ)形式類似。01000001字母’A’(3)字符變量定義示例2在一定條件下,字符型數(shù)據(jù)和整型數(shù)據(jù)是可以通用的。但是應(yīng)注意字符數(shù)據(jù)只占一個(gè)字節(jié),它只能存放0~255范圍內(nèi)的整數(shù)例2.
將整型數(shù)賦給字符變量。#include<stdio.h>intmain(){
char
c1,c2;//c1和c2是字符變量
c1=‘A’;
//輸入字符的ASCII碼
c2=65;
//輸入十進(jìn)制數(shù)
printf("%c%c\n",c1,c2);
//輸出字符變量c1和c2的值
return0;}輸出結(jié)果:AAc1和c2兩變量在內(nèi)存中的表示均是相同的0100000101000001c1c2(3)字符變量定義示例3例3.定義字符變量。#include<stdio.h>intmain(){
charc1;//定義c1是字符變量c1=‘A’;printf("%c\n",c1);//輸出字符變量c1的值return0;}注意:字符數(shù)據(jù)的存儲(chǔ)形式與短整數(shù)的存儲(chǔ)形式相同,只是只占用一個(gè)字節(jié)。字符數(shù)據(jù)是以ASCII碼存儲(chǔ)的,字符A的ASCII碼為65,在內(nèi)存中表示為:010000010100000100000000短整數(shù)65在內(nèi)存中表示為:例2.2
字符數(shù)據(jù)與整數(shù)進(jìn)行算術(shù)運(yùn)算。下面程序的作用是將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母。#include<stdio.h>int
main(){charc1,c2;c1='a';c2='b';printf("%c,%c\n",c1,c2);/*變化后*/c1=c1-32;c2=c2-32;printf("%c,%c\n",c1,c2);return0;}運(yùn)行結(jié)果為:AB(a的ASCII碼為97,b為98)。C1=‘a(chǎn)’-32=65C2=‘b’-32=66(A的ASCII碼為65,B為66)由于c1,c2是字符變量,因此用cout輸出c1,c2時(shí),得到字符A和B。字符變量定義示例4思考題:#include<stdio.h>intmain(){
inti;charc;i='a';c=97;
printf("i=%d\n",i);
printf("c=%c\n",c);
return0;}友情提示:?jiǎn)蝹€(gè)字符的字符串不能賦給字符變量。
例:charc;c="a";是錯(cuò)誤的。非法4.常變量及其定義常變量理解:有變量的特點(diǎn)要分配存儲(chǔ)空間,又象常量一樣,其存放的數(shù)值在本程序內(nèi)一直保持不變常變量的定義:(在變量定義前加const)
const數(shù)據(jù)類型變量名=值
舉例:constinta=3;值不會(huì)發(fā)生改變的變量在定義常變量時(shí)必須同時(shí)對(duì)它初始化(即指定其值),此后它的值不能再改變。常變量不能出現(xiàn)在賦值號(hào)的左邊。C++中基本不用符號(hào)常量,多使用常變量。//舉例:計(jì)算圓周長(zhǎng)及面積#include<stdio.h>intmain(){constdoublePI=3.141593doubler,l,s;r=3.0;l=2.0*PI*r;s=PI*r*r;printf("l=%f\n",l);printf("s=%f\n",s);return0;}定義常變量PI定義常變量PI,要分配存儲(chǔ)空間,且它的值只能是3.141593,在程序中不能改變。變量總結(jié)變量的三要素:變量名、變量類型和變量的取值。變量名的命名規(guī)則必須和標(biāo)識(shí)符一致變量的類型可以是:整型、浮點(diǎn)型和字符型變量的取值和類型保持一致變量代表一個(gè)存儲(chǔ)空間,其字節(jié)數(shù)由變量類型決定變量要先定義后使用常變量:是變量,但是它的值要保持不變#include<stdio.h>int
main(){
chara='T',b;b='to';c="K";
printf("c++%c,%c,%c,a,b,c);return0;}練習(xí)1.閱讀程序,指出程序中的錯(cuò)誤#include<stdio.h>intmain(){
inta=10
,
b,c;b=-17;c=a+b;
b=c-b;
printf(“%d,%d,%d\n”,a,b,c);return0;}練習(xí)2.閱讀程序,指出程序中哪條語(yǔ)句是變量的定義哪些變量進(jìn)行了初始化變量的數(shù)據(jù)類型是什么變量所占用的存儲(chǔ)空間是多大?每個(gè)存儲(chǔ)空間最終的值是多少?inta=10
,
b,c;定義變量的語(yǔ)句定義a的時(shí)候給了一個(gè)值,因此只有變量a進(jìn)行了初始化所有變量都是int所有變量都占用4個(gè)字節(jié)的空間a存儲(chǔ)空間的值為10,b存儲(chǔ)空間的值為10,c存儲(chǔ)空間的值為-7,三種類型數(shù)據(jù)總結(jié)——整數(shù)類型1111111111111111常用的整數(shù)類型有:intshortlong有符號(hào)是把最高位當(dāng)符號(hào)位,其他位為數(shù)值。無(wú)符號(hào)是把所有位都看做是數(shù)值。這些都必須變成二進(jìn)制形式才能理解1111111111111111有符號(hào)無(wú)符號(hào)-165535三種類型數(shù)據(jù)總結(jié)——浮點(diǎn)型數(shù)據(jù)(1)1.浮點(diǎn)型常量的表示方法兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e
三種類型數(shù)據(jù)總結(jié)——浮點(diǎn)型數(shù)據(jù)(2)規(guī)范化的指數(shù)形式:
在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)前的數(shù)字為0、小數(shù)點(diǎn)后第一位數(shù)字不為零。
例如:
123.456可以表示為:
123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e
其中的0.123456e3稱為“規(guī)范化的指數(shù)形式”,用于存儲(chǔ)?!皹?biāo)準(zhǔn)化指數(shù)形式”用于輸出:1.234560e+002三種類型數(shù)據(jù)總結(jié)——浮點(diǎn)型數(shù)據(jù)(3)(1)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式
一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。三種類型數(shù)據(jù)總結(jié)——浮點(diǎn)型數(shù)據(jù)(4)類型字節(jié)
數(shù)的范圍(絕對(duì)值)有效數(shù)字float4
0,1.2*10-38~3.4*10386~7位double型8
0,2.3*10-308~1.7*1030815~16位longdouble8/12
18~19位(2)浮點(diǎn)型變量的分類
浮點(diǎn)型變量分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度型(longdouble)三類形式。正確結(jié)果:a+b=123456789020.000000運(yùn)行結(jié)果:
a+b=123456790548.000000例:浮點(diǎn)型數(shù)據(jù)的舍入誤差
#include<stdio.h>intmain(){floata,b;a=12345.6789e7;b=a+20;printf("a+b=%f\n",b);
return0;}說(shuō)明:一個(gè)浮點(diǎn)型變量只能保證7位有效數(shù)字,后面的數(shù)字是無(wú)意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)。doublea,b;三種類型數(shù)據(jù)總結(jié)——字符型數(shù)據(jù)(1)字符是按其ASCII碼(整數(shù))形式存儲(chǔ)的C把字符型數(shù)據(jù)作為整數(shù)類型的一種1.字符常量(1)用單引號(hào)包含的一個(gè)字符是字符型常量(2)只能包含一個(gè)字符‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”
三種類型數(shù)據(jù)總結(jié)——字符型數(shù)據(jù)(2)2.字符變量字符型變量用來(lái)存放字符常量,注意只能放一個(gè)字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語(yǔ)句對(duì)c1,c2賦值:
c1=’a’;c2=’b’;一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。
三種類型數(shù)據(jù)總結(jié)——字符型數(shù)據(jù)(3)將一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII碼存儲(chǔ)到變量存儲(chǔ)單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:
一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。c1=‘a(chǎn)’;c2=‘b’;三種類型數(shù)據(jù)總結(jié)——字符型數(shù)據(jù)(4)字符’1’和整數(shù)1是不同的概念:字符’1’只是代表一個(gè)形狀為’1’的符號(hào),在需要時(shí)按原樣輸出,在內(nèi)存中以ASCII碼形式存儲(chǔ),占1個(gè)字節(jié)整數(shù)1是以整數(shù)存儲(chǔ)方式(二進(jìn)制補(bǔ)碼方式)存儲(chǔ)的,占2個(gè)或4個(gè)字節(jié)001100010000000000000001文字在計(jì)算機(jī)內(nèi)是以代碼的形式進(jìn)行存儲(chǔ)。西文字符:ASCII碼七位二進(jìn)制表示的ASCII碼
128種符號(hào)八位二進(jìn)制表示的ASCII碼256種符號(hào)(附錄B)中文漢字:國(guó)標(biāo)碼,每個(gè)漢字占2字節(jié)類型說(shuō)明字節(jié)范圍字符型[signed]char1字節(jié)-128~+127無(wú)符號(hào)字符型unsignedchar1字節(jié)0~255思考:字符類型的變量能否存放漢字?三種類型數(shù)據(jù)總結(jié)——字符型數(shù)據(jù)(5)希望通過(guò)這樣的贅述,讓大家能記住這些類型和使用規(guī)則,首先了解在程序中什么是常量,什么是變量,然后掌握變量怎么用,最后掌握什么時(shí)候用常量,什么時(shí)候用變量,什么時(shí)候用常變量!水滴石穿3.2.4
算術(shù)運(yùn)算符及其表達(dá)式算術(shù)運(yùn)算符+-*/%++--關(guān)系運(yùn)算符><==>=<=!=邏輯運(yùn)算符!&&||位運(yùn)算符<<>>~|^&賦值運(yùn)算符=及擴(kuò)展的復(fù)合運(yùn)算符條件運(yùn)算符?:逗號(hào)運(yùn)算符,指針運(yùn)算符*&求字節(jié)運(yùn)算符sizeof強(qiáng)制類型轉(zhuǎn)換符類型成員運(yùn)算符.->下標(biāo)運(yùn)算符[]其他()::newdelete運(yùn)算符是以簡(jiǎn)潔的方式表達(dá)對(duì)數(shù)據(jù)操作的符號(hào)(書(shū)378頁(yè))C的運(yùn)算符十分豐富,運(yùn)算十分靈活方便。主要內(nèi)容1.算術(shù)運(yùn)算符與算術(shù)表達(dá)式2.變量的自增和自減運(yùn)算符3.表達(dá)式中各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算強(qiáng)制類型轉(zhuǎn)換運(yùn)算符求字節(jié)數(shù)運(yùn)算符sizeof1.算術(shù)運(yùn)算符與算術(shù)表達(dá)式算術(shù)表達(dá)式由算術(shù)運(yùn)算符和操作數(shù)組成,結(jié)果值是算術(shù)值,基本算術(shù)運(yùn)算符有:+-*/(除)%(取余)-(求反,單目)運(yùn)算順序:低高結(jié)合性:從左至右(左結(jié)合)(1)運(yùn)算符“/”5/22(商)
5.0/22.5
規(guī)定,+,-,*/中:運(yùn)算分量(操作數(shù))均為整型,結(jié)果為整型。運(yùn)算分量(操作數(shù))中,只要一個(gè)為實(shí)型,結(jié)果為實(shí)型。(2)運(yùn)算符“%”“%”:取余運(yùn)算符,即求兩個(gè)整數(shù)相除后所得到的余數(shù)(余數(shù)的符號(hào)與被除數(shù)相同),要求運(yùn)算符的前后均為整數(shù)。如:例1:5%21例2:27%43
例3:12%(-7)
5例4:-12%7-5(3)-(單目運(yùn)算符),類似于求相反數(shù)例:
-5.263+60.737應(yīng)用舉例:假設(shè)有P個(gè)人和B條相同的小船P/B:求每條小船可以搭乘的人數(shù)P%B:求還有多少人將被留下算術(shù)表達(dá)式:用算術(shù)運(yùn)算符連接起來(lái)的式子,C的數(shù)學(xué)表達(dá)式的寫(xiě)法與普通數(shù)學(xué)式子有區(qū)別,要求寫(xiě)在一行內(nèi),如:在寫(xiě)復(fù)雜的算術(shù)表達(dá)式時(shí),應(yīng)遵循“從整體到局部”、“由粗到細(xì)”的原則;在表達(dá)式中只能用圓括號(hào)改變優(yōu)先級(jí),圓括號(hào)可以嵌套使用例1:寫(xiě)出下列數(shù)學(xué)式的C表達(dá)式1.2.log(fabs(
(sin(x)-cos(x))/(sin(x)+cos(x))
)
)
/2.0解1.(a+b)/(c+(d+e)/(f+g))解2.在表達(dá)式中只能用圓括號(hào),圓括號(hào)可以嵌套使用求實(shí)數(shù)的絕對(duì)值例2:在C語(yǔ)言中無(wú)乘冪運(yùn)算——使用數(shù)學(xué)函數(shù)計(jì)算xy
:見(jiàn)書(shū)384頁(yè)附錄F
用pow(x,y)函數(shù)。
如:xypow(x,y)2.變量的自增和自減運(yùn)算程序設(shè)計(jì)中,常對(duì)變量進(jìn)行如下操作:
i=i+1 i=i-1他們的作用是使變量的值增1或減1此時(shí),變量i稱為計(jì)數(shù)器
格式⑴前置運(yùn)算:++/--變量⑵后置運(yùn)算:變量++/--
功能⑴前置運(yùn)算:先自增或自減(即先改變變量的值),然后使用該變量⑵后置運(yùn)算:先使用該變量,然后自增或自減(即后改變變量的值);舉例:(1)前置運(yùn)算:先自增或自減(即先改變變量的值),然后使用該變量inti=3;++i:先自增,i值+1,i=4,再使用i值,4--i:先自減,i值-1,i=2,再使用i值,2(2)后置運(yùn)算:先使用該變量,然后自增或自減i++:先使用i值,3,再自增,i值+1,i=4i--:先使用i值,3,再自減,i值-1
,i=3同理:––i,i––,均使i值–1,但:例1:#include<stdio.h>intmain(){inti=3;intj=3;intx,y;x=++i;y=--j;
printf("i=%d,x=%d\n",i,x);printf("j=%d,y=%d\n",j,y);return0;}––i:先使i值–1,再使用i值;i––:先使用i值,再使i值–1結(jié)果:i=4,x=4j=2,y=2同理:––i,i––,均使i值–1,但:例2:#include<stdio.h>intmain(){inti=3;intj=3;intx,y;x=i++;y=j--;printf("i=%d,x=%d\n",i,x);printf("j=%d,y=%d\n",j,y);return0;}––i:先使i值–1,再使用i值;i––:先使用i值,再使i值–1結(jié)果:i=4,x=3j=2,y=3注意:(1)++和––運(yùn)算法只能用于變量,不得用于常量和表達(dá)式.(2)
適當(dāng)加一些括號(hào),更明確如:5++,(a+b)++均為不合法.如:–i++相當(dāng)于
–(i++)如:i+++j理解上有二義性但語(yǔ)句不錯(cuò)改寫(xiě)為(i++)+j
或者i+(++j)(3)
自增和自減運(yùn)算可以提高表達(dá)式的運(yùn)算速度,提高代碼的質(zhì)量,但是容易出錯(cuò),初學(xué)者慎用3.表達(dá)式中各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算在表達(dá)式中常遇到不同類型數(shù)據(jù)之間進(jìn)行運(yùn)算,如10+’a’+i*f-d/e在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。
轉(zhuǎn)換的規(guī)則規(guī)律:低精度向高精度轉(zhuǎn)換,占用字節(jié)少的向占用字節(jié)數(shù)多的轉(zhuǎn)換inti;floatf;doubled;longe;10+’a’+i*f-d/e運(yùn)算次序?yàn)椋孩龠M(jìn)行10+’a’的運(yùn)算,先將’a’轉(zhuǎn)換成整數(shù)97,運(yùn)算結(jié)果為107。②進(jìn)行i*f的運(yùn)算。先將i與f都轉(zhuǎn)換成double型,運(yùn)算結(jié)果為double型。③整數(shù)107與i*f的積相加。先將整數(shù)107轉(zhuǎn)換成雙精度數(shù)(小數(shù)點(diǎn)后加若干個(gè)0,即107.000…00),結(jié)果為double型。④將變量e轉(zhuǎn)換成double型,d/e結(jié)果為double型。⑤將10+′a′+i*f的結(jié)果與d/e的商相減,結(jié)果為double型。上述的類型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的,用戶了解即可。4.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符在表達(dá)式中不同類型的數(shù)據(jù)會(huì)自動(dòng)地轉(zhuǎn)換類型,以進(jìn)行運(yùn)算。有時(shí)程序編制者還可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。
用類型符對(duì)表達(dá)式值轉(zhuǎn)換成所需類型,一般形式為:
(類型)(表達(dá)式)
或 類型(表達(dá)式)例如:(int)(x+y) //把x+y的結(jié)果轉(zhuǎn)換成整型(char)70 //把整數(shù)70轉(zhuǎn)換成字符'F'(float)(2/4)
//結(jié)果為0(int)(x+y)和(int)x+y是有區(qū)別的想一想,為什么?強(qiáng)制類型轉(zhuǎn)換對(duì)原來(lái)變量的類型沒(méi)有影響,例如:doublex=3.67;(int)x;是將x的值轉(zhuǎn)換為int進(jìn)行使用,3,但是x仍然是原類型double賦值時(shí)類型不同也需要進(jìn)行轉(zhuǎn)換例如:
inta=2.516; //a的值為2例1強(qiáng)制類型轉(zhuǎn)換。#include<stdio.h>intmain(){floatx;
inti;x=3.6;i=(int)x;
printf("x=%f,i=%d",x,i);return0;}運(yùn)行結(jié)果如下:x=3.600000,i=3x的型仍為float型,值仍等于3.6例2:強(qiáng)制類型轉(zhuǎn)換。#include<stdio.h>intmain(){inta=7,b=2;floatx;x=a/b;printf("x=%f\n",x);x=(float)a/b;printf("x=%f\n",x);x=(float)(a)/b;printf("x=%f\n",x);x=(float)(a/b);printf("x=%f\n",x);x=a/(float)b;printf("x=%f\n",x);return0;}//x為3.000000//x為3.500000//x為3.500000//x為3.000000//x為3.500000總結(jié)以上類型轉(zhuǎn)換,有二種:
1.
強(qiáng)制另:
強(qiáng)制類型轉(zhuǎn)換運(yùn)算優(yōu)先于算術(shù)運(yùn)算符.2.系統(tǒng)自動(dòng)如:
若x為float,則x%3不合法。但可用(int)x%3來(lái)解決。(附錄III介紹了優(yōu)先級(jí))5.求字節(jié)數(shù)運(yùn)算符sizeof()求類型、變量或者表達(dá)式運(yùn)算結(jié)果所對(duì)應(yīng)的類型占用的字節(jié)數(shù)#include<stdio.h>intmain(){
intx=123.456;doubley=(double)78;
printf("%d,%d,%d\n",sizeof(x),sizeof(y),sizeof(x+y));return0;}結(jié)果:488表達(dá)式寫(xiě)出下列公式的表達(dá)式C=5.0/9*(F-32)q=sqrt(b*b-4*a*c)
C的表達(dá)式sqrt
求平方根函數(shù)1.設(shè)有intx=11;則表達(dá)式(x++*1/3)的值是()。
A)3
B)4
C)11
D)122.C語(yǔ)言中運(yùn)算對(duì)象必須是整型的運(yùn)算符是()。
A)%
B)/C)=
D)*3.若有定義:inta=8,b=5,C;,執(zhí)行語(yǔ)句C=a/b+0.4;后,c的值為()。
A)1.4
B)1
C)2.0
D)24.下列程序的輸出結(jié)果是()。
A)3B)3.2C)0D)3.07
intmain()
{doubled=3.2;
int
x,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);return0;
}運(yùn)算符總結(jié)(1)算術(shù)運(yùn)算符
(+-*/%++--)(2)關(guān)系運(yùn)算符
(><==>=<=?。剑?3)邏輯運(yùn)算符
(!&&||)(4)位運(yùn)算符
(<<>>~|∧&)(5)賦值運(yùn)算符
(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符
(?:)(7)逗號(hào)運(yùn)算符
(,)(8)指針運(yùn)算符
(*和&)(9)求字節(jié)數(shù)運(yùn)算符
(sizeof())(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符
((類型))(11)成員運(yùn)算符
(.->)(12)下標(biāo)運(yùn)算符
([
])(13)其他
(如函數(shù)調(diào)用運(yùn)算符())3.3C語(yǔ)句3.3.1C語(yǔ)句的作用和分類3.3.2最基本的語(yǔ)句----賦值語(yǔ)句
3.3C語(yǔ)句
3.3C語(yǔ)句一個(gè)C程序可以有若干個(gè)源程序文件組成一個(gè)源文件可以有若干個(gè)函數(shù)和預(yù)處理命令以及全局變量聲明部分組成一個(gè)函數(shù)有函數(shù)首部和函數(shù)體組成函數(shù)體由數(shù)據(jù)聲明和執(zhí)行語(yǔ)句組成C語(yǔ)句分為5類控制語(yǔ)句函數(shù)調(diào)用語(yǔ)句表達(dá)式語(yǔ)句空語(yǔ)句復(fù)合語(yǔ)句
3.3.1C語(yǔ)句的作用和分類(一)控制語(yǔ)句,完成一定的控制功能
1.if()~else條件語(yǔ)句6.break間斷語(yǔ)句
2.for()~循環(huán)語(yǔ)句7.
switch()開(kāi)關(guān)語(yǔ)句
3.while()~循環(huán)語(yǔ)句8.return返回語(yǔ)句
4.do~while();循環(huán)語(yǔ)句9.
goto
轉(zhuǎn)向語(yǔ)句
5.continue繼續(xù)語(yǔ)句3.3.1 C語(yǔ)句的作用和分類C語(yǔ)句分為以下5類:(1)控制語(yǔ)句:if、switch、for、while、do…while、continue、break、return、goto等(2)函數(shù)調(diào)用語(yǔ)句:printf("x=%f\n",x);
(3)表達(dá)式語(yǔ)句:賦值語(yǔ)句
(4)空語(yǔ)句(5)復(fù)合語(yǔ)句3.3.2最基本的語(yǔ)句----賦值語(yǔ)句主要內(nèi)容
賦值運(yùn)算符賦值表達(dá)式復(fù)合賦值運(yùn)算符賦值過(guò)程中的類型轉(zhuǎn)換賦值表達(dá)式的作用是把數(shù)據(jù)值寫(xiě)入變量,修改對(duì)象的值一般形式為: 變量=表達(dá)式
例intx=10,y=20;x=y;y=x;
printf("x=%d,y=%d\n",x,y);輸出的結(jié)果是:2020=就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如“a=3”的作用是執(zhí)行一次賦值操作(或稱賦值運(yùn)算)。把常量3賦給變量a。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。1.賦值運(yùn)算符計(jì)算表達(dá)式的結(jié)果,寫(xiě)入變量所代表的存儲(chǔ)空間變量賦值運(yùn)算符
表達(dá)式
例:典型的兩數(shù)交換#include<stdio.h>intmain(){inta=90;intb=75;intt=b;b=a;a=t;printf("a=%d\n",a);printf("b=%d\n",b);return0;}9075abt759075①②③思考:x,y變量的值交換,中間變量為z③①②賦值運(yùn)算符和賦值表達(dá)式c=(a+b)/2;計(jì)算表達(dá)式的結(jié)果,向變量c賦值。所賦的值被保存到這個(gè)變量占用的存儲(chǔ)區(qū)域中,存儲(chǔ)區(qū)域中原有的內(nèi)容被取代,也就是變量原有的值完全消失,人們通常稱之為“新來(lái)舊去”。以后,程序中要使用這個(gè)變量的值時(shí),就從這塊區(qū)域讀取,只要不發(fā)生新的賦值,就可以任意次地得到同樣的值,人們通常稱之為“取之不盡”。由賦值運(yùn)算符連接起來(lái)的式子稱為“賦值表達(dá)式”。每個(gè)賦值表達(dá)式都有一個(gè)值,這個(gè)值就是通過(guò)賦值得到的左邊變量的值。
在賦值符“=”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。 它的主要操作是賦值。以“a+=3”為例來(lái)說(shuō)明,先使a加3,再賦給a。例如:a+=3等價(jià)于a=a+(3)x*=y+8等價(jià)于x=x*(y+8)x%=3等價(jià)于x=x%(3)2.
復(fù)合的賦值運(yùn)算符E1OP=E2:可以寫(xiě)成E1=E1OP
(E2)凡是二元(二目)運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。C語(yǔ)言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
C之所以采用這種復(fù)合運(yùn)算符,一是為了簡(jiǎn)化程序,使程序精煉,二是為了提高編譯效率(這樣寫(xiě)法與“逆波蘭”式一致,有利于編譯,能產(chǎn)生質(zhì)量較高的目標(biāo)代碼)。專業(yè)的程序員在程序中常用復(fù)合運(yùn)算符。2.復(fù)合的賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符為便于記憶,可以這樣理解:①a+=b(其中a為變量,b為表達(dá)式)②a+=b(將有下劃線的“a+”移到“=”右側(cè))
|_↑③a=a+b(在“=”左側(cè)補(bǔ)上變量名a)
注意:如果b是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào)。如:
①x%=y+3
②x%=(y+3)|_↑
③x=x%(y+3)(不要錯(cuò)寫(xiě)成x=x%y+3)習(xí)題
由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為“賦值表達(dá)式”。
對(duì)賦值表達(dá)式求解的過(guò)程是:①求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值;②賦給賦值運(yùn)算符左側(cè)的變量。賦值構(gòu)成一個(gè)表達(dá)式,因而它具有值.
賦值表達(dá)式的值為賦值符右邊表達(dá)式的值。例如:賦值表達(dá)式“a=3*5”的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。3.賦值表達(dá)式<變量><賦值運(yùn)算符><表達(dá)式><變量><賦值運(yùn)算符><表達(dá)式>
x=10為一賦值表達(dá)式,其中<表達(dá)式>又可以是一個(gè)賦值表達(dá)式。例如:a=(b=5)分析:括弧內(nèi)的“b=5”是一個(gè)賦值表達(dá)式,它的值等于5。執(zhí)行表達(dá)式“a=(b=5)”相當(dāng)于執(zhí)行“b=5”和“a=b”兩個(gè)賦值表達(dá)式。賦值運(yùn)算符按照“自右而左”的結(jié)合順序,因此,“(b=5)”
外面的括弧可以不要,即“a=(b=5)”和“a=b=5”
等價(jià)。a=b=c=5(賦值表達(dá)式值為5,a,b,c值均為5)a=5+(c=6)(表達(dá)式值為11)a=(b=4)+(c=6)(表達(dá)式值為10)a=(b=10)/(c=2)(表達(dá)式值為5)3.賦值表達(dá)式
賦值運(yùn)算的優(yōu)先級(jí)很低第14級(jí)賦值運(yùn)算的右結(jié)合性
賦值運(yùn)算符的優(yōu)先級(jí)和結(jié)合性賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。
如:a+=a-=a*a分析:
a的初值為12此賦值表達(dá)式的求解步驟如下∶①先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于a=a-a*a,12-144=-132,a的值為132。②再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于a=a+(-132),a的值為(-132)+(-132)=-264。右結(jié)合的原則習(xí)題4.賦值過(guò)程中類型轉(zhuǎn)換當(dāng)賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同時(shí),在賦值前會(huì)自動(dòng)把右邊表達(dá)式的值轉(zhuǎn)換為與左邊變量類型一致,再執(zhí)行賦值操作。如:inti;i=3.56;
結(jié)果是i的值為整數(shù)3
floatf=23;結(jié)果是f的值為整數(shù)23.0000doubled=123.456789e100;
f=d;
出現(xiàn)溢出,超過(guò)單精度浮點(diǎn)數(shù)的范圍
i=‘y’;結(jié)果是i的值為整數(shù)121將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(即截?cái)啵?。例如:inti=289;charc=′a′;c=i;“!”的ASCII碼為33,C顯示為”!”.賦值情況:#include<stdio.h>intmain(){
inti=289;charc='a';c=i;
printf("c=%c\n",c);return0;}不同類型的整型數(shù)據(jù)間的賦值歸根結(jié)底就是一條:按存儲(chǔ)單元中的存儲(chǔ)形式直接傳送。3.3.2最基本的語(yǔ)句----賦值語(yǔ)句
例3.4給出三角形的三邊長(zhǎng),求三角形面積。3.3.2最基本的語(yǔ)句----賦值語(yǔ)句解題思路:假設(shè)給定的三個(gè)邊符合構(gòu)成三角形的條件關(guān)鍵是找到求三角形面積的公式公式為:其中s=(a+b+c)/2#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);return0;}對(duì)邊長(zhǎng)a、b、c賦值計(jì)算s計(jì)算area#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);return0;}數(shù)學(xué)函數(shù),計(jì)算平方根調(diào)用數(shù)學(xué)函數(shù)加此行#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);return0;}轉(zhuǎn)義字符,使輸出位置跳到下一個(gè)tab位置調(diào)用數(shù)學(xué)函數(shù)加此行歸納總結(jié):1.賦值運(yùn)算符“=”是賦值運(yùn)算符作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符在賦值符“=”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符a+=3
等價(jià)于
a=a+3歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符3.賦值表達(dá)式一般形式為:
變量
賦值運(yùn)算符
表達(dá)式對(duì)賦值表達(dá)式求解的過(guò)程:求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值賦給賦值運(yùn)算符左側(cè)的變量歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符3.賦值表達(dá)式賦值表達(dá)式“a=3*5”的值為15,對(duì)表達(dá)式求解后,變量a的值和表達(dá)式的值都是15“a=(b=5)”和“a=b=5”等價(jià)“a=b”和“b=a”含義不同歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符3.賦值表達(dá)式4.賦值過(guò)程中的類型轉(zhuǎn)換兩側(cè)類型一致時(shí),直接賦值兩側(cè)類型不一致,但都是算術(shù)類型時(shí),自動(dòng)將右側(cè)的類型轉(zhuǎn)換為左側(cè)類型后賦值定義變量時(shí)要防止數(shù)據(jù)溢出歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符3.賦值表達(dá)式4.賦值過(guò)程中的類型轉(zhuǎn)換5.賦值表達(dá)式和賦值語(yǔ)句賦值表達(dá)式的末尾沒(méi)有分號(hào),而賦值語(yǔ)句有分號(hào)一個(gè)表達(dá)式可以包含賦值表達(dá)式,但決不能包含賦值語(yǔ)句歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符3.賦值表達(dá)式4.賦值過(guò)程中的類型轉(zhuǎn)換5.賦值表達(dá)式和賦值語(yǔ)句6.變量賦初值inta=3,b=3,c;inta=3;相當(dāng)于inta;a=3;學(xué)習(xí)實(shí)踐3.4數(shù)據(jù)的輸入輸出3.4.1輸入輸出舉例(暫不講)3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念3.4.3用printf函數(shù)輸出數(shù)據(jù)3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.4.5字符數(shù)據(jù)的輸入輸出3.4.1輸入輸出舉例(暫不講)例3.5求
方程的根。a、b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝職業(yè)培訓(xùn)學(xué)校制度
- 藥廠包裝工崗位培訓(xùn)制度
- 感染科專科培訓(xùn)制度
- 落實(shí)網(wǎng)格員培訓(xùn)制度
- 武漢應(yīng)急培訓(xùn)及演練制度
- 組織部對(duì)干部培訓(xùn)制度
- 家政培訓(xùn)教學(xué)管理制度
- 休閑會(huì)所培訓(xùn)管理制度
- 培訓(xùn)過(guò)程安全管理制度
- 培訓(xùn)講師選聘管理制度
- 2026年藥店培訓(xùn)計(jì)劃試題及答案
- 2026春招:中國(guó)煙草真題及答案
- 物流鐵路專用線工程節(jié)能評(píng)估報(bào)告
- 2026河南省氣象部門(mén)招聘應(yīng)屆高校畢業(yè)生14人(第2號(hào))參考題庫(kù)附答案
- 2026天津市南開(kāi)區(qū)衛(wèi)生健康系統(tǒng)招聘事業(yè)單位60人(含高層次人才)備考核心試題附答案解析
- 2025江蘇無(wú)錫市宜興市部分機(jī)關(guān)事業(yè)單位招聘編外人員40人(A類)備考筆試試題及答案解析
- 卵巢過(guò)度刺激征課件
- 漢服行業(yè)市場(chǎng)壁壘分析報(bào)告
- 重瞼手術(shù)知情同意書(shū)
- 2026華潤(rùn)燃?xì)庑@招聘(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案解析
- 九師聯(lián)盟2026屆高三上學(xué)期12月聯(lián)考英語(yǔ)(第4次質(zhì)量檢測(cè))(含答案)
評(píng)論
0/150
提交評(píng)論