A基本數(shù)據(jù)運(yùn)算與輸入輸出.ppt
第2章基本數(shù)據(jù)運(yùn)算與輸入輸出(A),C+程序設(shè)計(jì),2,主要內(nèi)容,如何用計(jì)算機(jī)計(jì)算圓面積(2.1-2.4)標(biāo)識(shí)符(2.5)基本數(shù)據(jù)類型(2.9)變量定義(2.6)常量(2.8,2.9.1)I/O流控制(3.12)小結(jié)及作業(yè),C+程序設(shè)計(jì),3,2.1如何用計(jì)算機(jī)計(jì)算圓面積,問題描述計(jì)算機(jī)從鍵盤讀入圓的半徑,輸出其面積程序?qū)⑹褂米兞勘4姘霃胶兔娣e,并用一個(gè)表達(dá)式計(jì)算面積解決思路讀入半徑利用圓面積公式計(jì)算面積輸出面積,C+程序設(shè)計(jì),4,2.1如何用計(jì)算機(jī)計(jì)算圓面積,程序主函數(shù)框架程序清單,intmain()/Step1:Readinradius/Step2:Computearea/Step3:Displaythearea,#includeusingnamespacestd;intmain()/Step1:Readinradiusdoubleradius;cout>radius;/Step2:Computeareadoublearea=radius*radius*3.14159;/Step3:Displaytheareacout<<"Theareais"<<area<<endl;return0;,consolein/out,C+程序設(shè)計(jì),5,2.2標(biāo)識(shí)符,字符集字符是指計(jì)算機(jī)中使用的字母、數(shù)字、單詞和符號(hào)用于構(gòu)造有意義語句的一組字符,這也是任何一種語言的特點(diǎn)C+程序的字符集26個(gè)大、小寫字母:az,AZ10數(shù)字:09其他符號(hào):+-*/%,C+程序設(shè)計(jì),6,2.2標(biāo)識(shí)符,標(biāo)識(shí)符由字符集元素組成的一串字符,為變量、常量及函數(shù)等程序?qū)嶓w命名分為系統(tǒng)預(yù)定義標(biāo)識(shí)符(如預(yù)編譯指令)和用戶自定義標(biāo)識(shí)符(如變量名,函數(shù)名)標(biāo)志符命名規(guī)則由字母、下劃線、數(shù)字組成,且第一個(gè)符號(hào)不能是數(shù)字中間不能有空格C+是大小寫敏感,即大寫和小寫字母是不同的最好使用英文單詞或其組合,切忌使用漢字或漢語拼音不能使用保留字作為標(biāo)志符(參見附錄A)采用見名思義的原則:sum、name、sex,不要太長(zhǎng),一般以不超過31個(gè)字符為宜,C+程序設(shè)計(jì),7,2.2標(biāo)識(shí)符,保留字又稱關(guān)鍵字(Keyword),是預(yù)先定義好的標(biāo)識(shí)符,對(duì)C+編譯程序有特殊含義在程序中用到的其他名字(標(biāo)識(shí)符)不能與C+的關(guān)鍵字相同關(guān)鍵字也不能重新定義不同開發(fā)環(huán)境如VC、BC會(huì)對(duì)保留字有不同擴(kuò)充C/C+保留字參見教材附錄AC+關(guān)鍵字(P492),C+程序設(shè)計(jì),8,2.3基本數(shù)據(jù)類型,中學(xué)階段數(shù)學(xué)課學(xué)習(xí)的數(shù)據(jù)類型及運(yùn)算實(shí)數(shù)(R)、復(fù)數(shù)(C)355.5,76.8有序?qū)崝?shù)對(duì):2+3i整數(shù)(I)、小數(shù)35,-683.5,0.8自然數(shù)(N),正整數(shù)(Z)0,1,2,3,有理數(shù)、無理數(shù)正數(shù)、負(fù)數(shù)常數(shù):,e,C+程序設(shè)計(jì),9,2.3基本數(shù)據(jù)類型,C+語言中的數(shù)據(jù)類型,C+程序設(shè)計(jì),10,2.3基本數(shù)據(jù)類型,C+語言中數(shù)據(jù)為什么要區(qū)分類型?不同類型的數(shù)據(jù)代表不同的數(shù)據(jù)表示形式合法的取值范圍可參與的運(yùn)算種類占用內(nèi)存空間大小對(duì)程序當(dāng)中所用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類型從基本數(shù)據(jù)類型到抽象數(shù)據(jù)類型無數(shù)據(jù)類型void基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型抽象數(shù)據(jù)類型,C+程序設(shè)計(jì),11,2.3基本數(shù)據(jù)類型,基本數(shù)據(jù)類型:系統(tǒng)事先規(guī)定了的數(shù)據(jù)類型(內(nèi)置類型)int,整數(shù),在目前絕大多數(shù)機(jī)器上占4個(gè)字節(jié)float,單精度浮點(diǎn)數(shù),一般是4個(gè)字節(jié)長(zhǎng),VC內(nèi)缺省顯示為6位有效數(shù)字double,雙精度浮點(diǎn)數(shù),一般是8個(gè)字節(jié)長(zhǎng),VC內(nèi)缺省顯示為14位有效數(shù)字char字符,一般是1個(gè)字節(jié)長(zhǎng)用來表示256個(gè)ASCII字符,或者0255的整數(shù),注意,數(shù)據(jù)類型標(biāo)識(shí)符為小寫字母int大小范圍與機(jī)器有關(guān),C+程序設(shè)計(jì),12,2.3基本數(shù)據(jù)類型,基本數(shù)據(jù)類型修飾符:short、long、signed、unsignedshortshortint,短整數(shù),一般2個(gè)字節(jié)長(zhǎng),通常簡(jiǎn)寫為shortlonglongint,長(zhǎng)整數(shù),VC中一般是4個(gè)字節(jié)長(zhǎng),通常簡(jiǎn)寫為longlongdouble,長(zhǎng)雙精度(高精度)浮點(diǎn)數(shù),一般是10個(gè)字節(jié)長(zhǎng)。signed用來修飾char、int、short和long,說明他們是有符號(hào)的整數(shù)(正整數(shù)、0和負(fù)整數(shù)),一般缺省都是有符號(hào)的,所以這個(gè)修飾符通常省略u(píng)nsigned用來修飾char、int、short和long,說明他們是無符號(hào)的整數(shù)(正整數(shù)和0),C+程序設(shè)計(jì),13,一、無符號(hào)的整型數(shù)據(jù)大于或等于零的正整數(shù),無符號(hào)的短整型,分類,無符號(hào)的基本整型,無符號(hào)的長(zhǎng)整型,unsignedshortint,標(biāo)識(shí)符,unsignedint,unsignedlongint,2,對(duì)應(yīng)內(nèi)存空間的大小,4,4,0216-1,取值范圍,同上,0232-1,注意,1、的含義2、標(biāo)識(shí)符為小寫字母3、int與機(jī)器有關(guān),2.3基本數(shù)據(jù)類型,C+程序設(shè)計(jì),14,二、有符號(hào)的整型數(shù)據(jù)包括負(fù)整數(shù)、零、正整數(shù),有符號(hào)的短整型,分類,有符號(hào)的基本整型,有符號(hào)的長(zhǎng)整型,signedshortint,標(biāo)識(shí)符,signedint,signedlongint,2,對(duì)應(yīng)內(nèi)存空間的大小,4,4,取值范圍-215215,2.3基本數(shù)據(jù)類型,-231231,同上,有符號(hào)整數(shù)在計(jì)算機(jī)內(nèi)存中是以補(bǔ)碼形式存儲(chǔ),C+程序設(shè)計(jì),15,1.求整數(shù)的補(bǔ)碼規(guī)則,例如:(10)補(bǔ)=(-10)補(bǔ)=,2.由補(bǔ)碼推出原碼,2.3基本數(shù)據(jù)類型,下面以一個(gè)字節(jié)存儲(chǔ)有符號(hào)整數(shù)為例分析其取值范圍,C+程序設(shè)計(jì),16,補(bǔ)碼,原碼,取值范圍,-128127,-2727-1,2.3基本數(shù)據(jù)類型,C+程序設(shè)計(jì),17,三、實(shí)型:一律作為有符號(hào)的數(shù)據(jù)使用,2.3基本數(shù)據(jù)類型,分類標(biāo)志符字節(jié)數(shù)缺省有效精度,單精度實(shí)數(shù)float46位,雙精度實(shí)數(shù)double814位,實(shí)數(shù)作為有符號(hào)的數(shù)據(jù)使用,可表示為小數(shù)形式和指數(shù)形式,但在計(jì)算機(jī)內(nèi)部都用浮點(diǎn)方式來實(shí)現(xiàn)存儲(chǔ)定點(diǎn)小數(shù):小數(shù)點(diǎn)位置固定,位于符號(hào)位和第一個(gè)數(shù)值位之間,如-0.34,表示的是純小數(shù);浮點(diǎn)數(shù):小數(shù)點(diǎn)的位置是可以浮動(dòng)的數(shù),如,浮點(diǎn)數(shù)通用表示是將實(shí)數(shù)分為階碼和尾數(shù)兩部分:S為尾數(shù)(正負(fù)均可),一般規(guī)定用純小數(shù)形式,r為基數(shù),對(duì)二進(jìn)制而言,r=2,j為階碼(正負(fù)均可),但必須是整數(shù),C+程序設(shè)計(jì),18,2.3基本數(shù)據(jù)類型,理論上浮點(diǎn)數(shù)在計(jì)算機(jī)中的存儲(chǔ)格式為,C+程序設(shè)計(jì),19,浮點(diǎn)數(shù)在VC6中實(shí)際的存儲(chǔ)方式為float型,2.3基本數(shù)據(jù)類型,double型,階碼:決定數(shù)的大小,對(duì)應(yīng)浮點(diǎn)數(shù):2-1282127,尾數(shù):決定數(shù)的精度,C+程序設(shè)計(jì),20,例:float71.3125轉(zhuǎn)換為二進(jìn)制為:1000111.0101,將其規(guī)范化之后成為:1.000111010126,這里的規(guī)范化是指移動(dòng)小數(shù)點(diǎn)使小數(shù)點(diǎn)的左邊只有一個(gè)“1”。內(nèi)存里實(shí)際存儲(chǔ)實(shí)數(shù)的三部分信息:符號(hào)(如+)、指數(shù)(如6)和尾數(shù)(即小數(shù)點(diǎn)右邊的位,如000111010100),而小數(shù)點(diǎn)左邊的1并不存儲(chǔ)。01000010100011101010000000000000(428EA000),2.3基本數(shù)據(jù)類型,符號(hào)位指數(shù)位小數(shù)部分指數(shù)偏移量單精度浮點(diǎn)數(shù)1位318位30-2323位22-00127雙精度浮點(diǎn)數(shù)1位6311位62-5252位51-001023,尾數(shù)部分占的位數(shù)愈多,實(shí)數(shù)的有效數(shù)字愈多,即有效精度愈高。指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。實(shí)數(shù)在操作中存在誤差,例如:把111111.111作為float型數(shù)據(jù),輸出的結(jié)果是111111.109,C+程序設(shè)計(jì),21,四、字符型采用ASCII碼字符集,即用1個(gè)字節(jié)存放字符的ASCII碼值,2.3基本數(shù)據(jù)類型,分類標(biāo)志符內(nèi)存空間取值范圍,有符號(hào)字符型signedchar1-128127,無符號(hào)字符型unsignedchar10255,C+程序設(shè)計(jì),22,2.3基本數(shù)據(jù)類型,C+程序設(shè)計(jì),23,2.4變量,變量:在程序運(yùn)行中其值可以改變的量變量是存儲(chǔ)信息的單元,它對(duì)應(yīng)某個(gè)內(nèi)存空間變量名代表其存儲(chǔ)空間,程序能在變量中存儲(chǔ)值和取出值變量的定義:數(shù)據(jù)類型變量名1=初值,變量名2=初值,;例:floatr1=1.5f,r2=0.5f,r3;charch=A;變量的初始化:為變量賦初值的過程,用賦值運(yùn)算符“=”進(jìn)行定義的同時(shí)進(jìn)行初始化單獨(dú)進(jìn)行初始化,inta,b;unsignedlongsum;a=123,sum=0;b=a;,C+程序設(shè)計(jì),24,2.4變量,變量名的含義表示分配給變量的存儲(chǔ)空間表示內(nèi)存空間中存儲(chǔ)的數(shù)據(jù):變量的值每個(gè)變量都有一個(gè)名字、一個(gè)數(shù)據(jù)類型和一個(gè)值注意變量名與變量值的區(qū)別,C+程序設(shè)計(jì),25,2.4變量,變量名命名規(guī)定由字母、下劃線、數(shù)字組成,且第一個(gè)符號(hào)不能是數(shù)字不要與關(guān)鍵字、保留字重名;中間不能有空格C+是大小寫敏感,即大寫和小寫字母是不同的變量名中不能包含”.;,“+-”之類特殊符號(hào)變量名不要與C+中的庫(kù)函數(shù)、類名和對(duì)象名相同不要使用易混淆的字母某些功能的變量采用習(xí)慣命名,如循環(huán)變量習(xí)慣用i,j,k采用見名思義的原則:sum、name、sex,不要太長(zhǎng),一般以不超過31個(gè)字符為宜最好使用英文單詞或其組合,切忌使用漢字或漢語拼音,C+程序設(shè)計(jì),26,2.4變量,變量名命名風(fēng)格下劃線和大小寫通常用來增強(qiáng)可讀性Unix風(fēng)格:variable_nameWindows風(fēng)格(匈牙利命名法):chName,strName,指出下列命名的正確性,錯(cuò)誤的指出原因x_y,x1,X1,x,y姓名2xvarname,指出下列命名的正確性,錯(cuò)誤的指出原因_y1Case,51select,Alot,-vvSin,cin,cout,stringD6Xy,C+程序設(shè)計(jì),27,2.4變量,匈牙利命名法標(biāo)識(shí)符的名字以一個(gè)或者多個(gè)小寫字母開頭,用這些字母來指定數(shù)據(jù)類型在標(biāo)識(shí)符內(nèi),前綴以后就是一個(gè)或者多個(gè)第一個(gè)字母大寫的單詞,這些單詞指出程序中該對(duì)象的用途常用的數(shù)據(jù)類型的標(biāo)準(zhǔn)前綴ch字符(char)n整數(shù)(integer)bBOOLl長(zhǎng)整數(shù)(long)hHANDLE(無符號(hào)int)m_類成員變量fn函數(shù)(function)例如,nCount表示一個(gè)計(jì)數(shù)器的變量,數(shù)據(jù)類型是整型。,C+程序設(shè)計(jì),28,#includeusingnamespacestd;intmain()intprice=30;intnum,total;/定義變量,在內(nèi)存中開辟區(qū)間num=10;/變量賦值,10為常量total=num*price;cout<<"total="<<total;/輸出結(jié)果return0;,其中:num=10total=num*PRICE,是賦值號(hào),不同于數(shù)學(xué)意義上的等號(hào)!,num,total,10,300,2.4變量,C+程序設(shè)計(jì),29,2.5常量,在程序運(yùn)行時(shí)保持不變的值,稱為常量根據(jù)常量的數(shù)據(jù)類型,常量可分為整型常量、實(shí)型常量、字符常量、字符串常量、枚舉常量根據(jù)常量的聲明,常量可分為文字常量和自定義常量文字常量:在程序中出現(xiàn)的、代表數(shù)據(jù)的文字整型文字常量十進(jìn)制:78,-132八進(jìn)制:以數(shù)字0開頭,后跟一串八進(jìn)制數(shù)字(注意:數(shù)字0),如012(),03256(),0128()十六進(jìn)制:以0 x開頭,后跟09、AF或af(數(shù)字0,字母x),如0 x123(),0 xabc(),01bc()10進(jìn)制數(shù)有正負(fù)之分,8進(jìn)制、16進(jìn)制只能表示無符號(hào)整數(shù),C+程序設(shè)計(jì),30,2.5常量,整型文字常量長(zhǎng)整型常量123l、123L、123456l、123456L無符號(hào)型常量123u、123U實(shí)型文字常量小數(shù)形式,例如:0.123,-5.6,.123,2.0,2.指數(shù)形式(科學(xué)記數(shù)法)1.5610-31.56E-3,1.561081.56E8,1.56e+8注意實(shí)數(shù)一律用十進(jìn)制表示:0 x2.5E的左右必須要有數(shù)字:E2(1E2),2E(2E+1、2E1)指數(shù)部分必須為整數(shù):2.5E+2.5,C+程序設(shè)計(jì),31,#includeusingnamespacestd;intmain()intint10,int8,int16;/定義3個(gè)整型變量int10=10;/默認(rèn)為十進(jìn)制int8=010;/八進(jìn)制int16=0 x10;/十六進(jìn)制cout<<"int10="<<int10<<endl;cout<<"int8="<<int8<<endl;cout<<"int16="<<int16<<endl;return0;,輸出int10=10int8=8int16=16,2.5常量,C+程序設(shè)計(jì),32,2.5常量,實(shí)型文字常量單精度float:一般在內(nèi)存中占4個(gè)字節(jié),提供7位有效數(shù)字雙精度double:一般在內(nèi)存中占8個(gè)字節(jié),提供15位有效數(shù)字長(zhǎng)雙精度longdouble:一般在內(nèi)存中占10個(gè)字節(jié),提供19位有效數(shù)字在C+中,一個(gè)實(shí)型常數(shù)如果沒有任何說明,表示double型;若要表示float型數(shù),則必須在實(shí)數(shù)后加上f或F;若要表示longdouble型數(shù),則必須在實(shí)數(shù)后加上l或L,34.5f/float型34.5/double型(系統(tǒng)默認(rèn)表示)34.5L/longdouble型34.5l/longdouble型34.5e23f/float型,34.5e23/double型(系統(tǒng)默認(rèn)表示)34.5e23L/longdouble型34.523l/longdouble型34.5e400/longdouble型(范圍超過double表示),C+程序設(shè)計(jì),33,#includeusingnamespacestd;intmain()floata,b;doublec,d;a=0.01;b=3.45678e-2;c=3.45678e-2;d=9.7654e-5;cout<<"a="<<a<<t<<"b="<<b<<endl;cout<<"c="<<c<<t<<"d="<<d<<endl;return0;,a=0.01b=0.0345678c=0.0345678d=9.7654e-005Pressanykeytocontinue,2.5常量,C+程序設(shè)計(jì),34,2.5常量,字符文字常量用一對(duì)英文單引號(hào)括起來的單個(gè)字符或轉(zhuǎn)義序列單個(gè)字符:如a,x,$轉(zhuǎn)義序列:以開頭后跟一個(gè)字符或幾個(gè)數(shù)字n回車鍵,ttab鍵ddd1-3位8進(jìn)制數(shù)所代表的字符:101與A、65表示同一個(gè)字符,不需以0開頭,表示范圍為000377(0255)xhh1-2位16進(jìn)制數(shù)所代表的字符:x41與A、65表示同一個(gè)字符,242、362、xF2表示,必須用x或X引導(dǎo),表示范圍為x00xff(0255)將一個(gè)字符常量賦值給字符變量,實(shí)際上并不是把該字符本身放到內(nèi)存單元中,而是將該字符的相應(yīng)ASCII碼(整型數(shù))存入,即在內(nèi)存中字符數(shù)據(jù)以ASCII存儲(chǔ),即以整數(shù)表示,C+程序設(shè)計(jì),35,2.5常量,字符文字常量例:charchVar=b,chVar1=ncharchVar2=007;/1-3位8進(jìn)制數(shù)charchVar3=xff;/1-2位16進(jìn)制數(shù)charchVar4=97;C+中字符數(shù)據(jù)和整型數(shù)據(jù)之間可以相互賦值,但要注意其表示的范圍合理性inta=b;/Ok給一個(gè)整型變量賦一個(gè)字符值charb=97;/Ok給一個(gè)字符變量賦一個(gè)整型值cout<<a<<endl;結(jié)果為98cout<<b<<endl;結(jié)果為a0與0的區(qū)別常用轉(zhuǎn)義字符:一些特殊字符(無法從鍵盤輸入或者另有它用)用轉(zhuǎn)義字符表示,C+程序設(shè)計(jì),36,#includeusingnamespacestd;intmain()charc1,c2,c3,c4;charn1,n2;c1=a;/字符常量c2=97;/十進(jìn)制c3=x61;/轉(zhuǎn)義字符c4=0141;/八進(jìn)制cout<<"c1="<<c1<<t<<"c2="<<c2<<endl;cout<<"c3="<<c3<<t<<"c4="<<c4<<endl;n1=n;/轉(zhuǎn)義字符:回車n2=t;/轉(zhuǎn)義字符:下一個(gè)輸出區(qū)(Tab)cout<<"使用轉(zhuǎn)義字符n"cout<<"c1="<<c1<<n2<<"c2="<<c2<<n1;cout<<"c3="<<c3<<n2<<"c4="<<c4<<n1;return0;,輸出:c1=ac2=ac3=ac4=a使用轉(zhuǎn)義字符c1=ac2=ac3=ac4=a,2.5常量,C+程序設(shè)計(jì),37,2.5常量,字符串文字常量用一對(duì)雙引號(hào)括起來的一個(gè)或多個(gè)字符序列,如:"China","CLanguage",""hello!""字符串的存儲(chǔ):在內(nèi)存中,依次存放組成字符串的每個(gè)字符的ASCII碼值,并且把空字符0(ASCII碼值為0)加到字符串的尾部,作為字符串的結(jié)束標(biāo)志。字符串的長(zhǎng)度:等于字符的個(gè)數(shù)字符串存儲(chǔ)時(shí)占內(nèi)存的大小:字符串的長(zhǎng)度+1不能將字符串常量賦值給字符變量,如charch="abcd"一個(gè)字符占一個(gè)內(nèi)存單元,含有一個(gè)字符的字符串占2個(gè)內(nèi)存單元,區(qū)分"A"與A,0、"0"與0,C+程序設(shè)計(jì),38,2.5常量,用戶自定義常量若希望變量的內(nèi)容自初始化后一直保持不變,此時(shí)可以定義一常量若程序中多處都要用到一個(gè)常數(shù),此時(shí)應(yīng)定義一常量以避免常數(shù)值的不一致性constfloatpi=3.14159;常量定義時(shí)必須初始化,此后程序中對(duì)其只能讀不能修改常量名不能放在賦值語句的左邊constfloatpi;pi=3.14159;常量在編譯時(shí)求值constintnSize=100*sizeof(int);constintnMax=fnMax(15,23);/fnMax用戶自定義函數(shù),C+程序設(shè)計(jì),39,2.5常量,用戶自定義常量#defineC+為兼容C而保留#define稱為編譯預(yù)定義指令,其語法格式為#define常量名字符串#definePI3.1415926常量名與字符串之間用空格分隔,行末不用分號(hào),在編譯預(yù)處理階段進(jìn)行字符串直接替換在C+編程中,常量定義應(yīng)使用const不用define,C+程序設(shè)計(jì),40,#includeusingnamespacestd;#definePI3.1415926/自定義常量intmain()constintPRICE=30;/自定義常量,在程序中保持不變intnum,total;/定義變量,在內(nèi)存中開辟區(qū)間num=10;/變量賦值,10為文字常量total=num*PRICE;cout<<"total="<<total;/輸出結(jié)果floatfR,fArea;/定義變量,在內(nèi)存中開辟區(qū)間fR=3.5f;/變量賦值,3.5f為文字常量fArea=fR*fR*PI;cout<<"Area="<<fArea;/輸出結(jié)果return0;,num,total,10,300,2.5常量,C+程序設(shè)計(jì),41,#includeusingnamespacestd;#definePI3.14156#defineS"China"intmain()constfloatpi=3.14156;/變量作為常量使用cout<<"PI="<<PI<<endl;cout<<"10*PI="<<10*PI<<endl;cout<<S<<endl;/PI=PI+3;/pi=pi+4;cout<<"PI="<<PI<<endl;cout<<"pi="<<pi<radius;/Step2:Computeareadoublearea=radius*radius*PI;/Step3:Displaytheareacout<<"Theareais"<<area<>a>>b;/程序運(yùn)行至此停下,等待從鍵盤輸入變量值,鍵盤輸入:35或:35均可。,輸入語句自動(dòng)過濾空白字符!,3,鍵盤,5,鍵盤,輸入語句:cin輸入十進(jìn)制整數(shù)和實(shí)數(shù):cin>>>>.,2.6I/O流控制,C+程序設(shè)計(jì),45,floatc,d;cin>>c>>d;,charch1,ch2;cin>>ch1>>ch2;,若輸入:ab則ch1為a,ch2為b。,若輸入:ab則ch1為a,ch2為b。,字符型變量過濾空白字符,cin格式過濾空白字符!,輸入語句:cin浮點(diǎn)型數(shù)據(jù)同整型數(shù)據(jù)一樣字符型數(shù)據(jù),2.6I/O流控制,C+程序設(shè)計(jì),46,floata;inti1,i2;charch1,ch2;cin>>i1>>a>>i2>>ch1>>ch2;,輸入:345.6781ab,i2:1,在缺省的情況下,cin自動(dòng)跳過輸入的空格,換言之,cin不能將輸入的空格賦給字符型變量;回車鍵也是作為輸入字符之間的分隔符,也不能將輸入的回車鍵字符賦給字符型變量。,a:5.578,i1:34,ch1:a,ch2:b,2.6I/O流控制,輸入語句:cin不同類型數(shù)據(jù)混合輸入,C+程序設(shè)計(jì),47,若要把從鍵盤上輸入的每一個(gè)字符,包括空格和回車鍵都作為一個(gè)輸入字符賦給字符型變量時(shí),必須使用函數(shù)cin.get(),其格式為:cin.get();,cin.get()從輸入行中取出一個(gè)字符,并將它賦給字符型變量,該語句一次只能從輸入行中提取一個(gè)字符。,charc1;cin.get(c1);,charch1,ch2,ch3;cin.get(ch1);cin.get(ch2);cin.get(ch3);,則:ch1:A,ch2:空格,ch3:B,輸入:AB,并且在輸入緩沖區(qū)中保留回車鍵!,2.6I/O流控制,C+程序設(shè)計(jì),48,輸入語句:cin輸入十六進(jìn)制或八進(jìn)制數(shù)據(jù):缺省情況下,系統(tǒng)約定輸入的整型數(shù)是十進(jìn)制數(shù)據(jù);當(dāng)要求按八進(jìn)制或十六進(jìn)制輸入數(shù)據(jù)時(shí),在cin中必須指明相應(yīng)的數(shù)據(jù)類型:hex為十六進(jìn)制,oct為八進(jìn)制,dec為十進(jìn)制。,inti,j,k,l;cin>>hex>>i;/指明輸入為十六進(jìn)制數(shù)cin>>oct>>j;/指明輸入為八進(jìn)制數(shù)cin>>k;/輸入仍為八進(jìn)制數(shù)cin>>dec>>l;/指明輸入為十進(jìn)制數(shù)當(dāng)執(zhí)行到語句cin時(shí),若輸入的數(shù)據(jù)為:11111212,結(jié)果:i:17,j:9,k:10,l:12,2.6I/O流控制,C+程序設(shè)計(jì),49,2.6I/O流控制,輸入語句:cin使用非十進(jìn)制數(shù)輸入時(shí),要注意以下幾點(diǎn)八進(jìn)制或十六進(jìn)制數(shù)的輸入,只能適用于整型變量,不適用于字符型變量,實(shí)型變量當(dāng)在cin中指明使用的數(shù)制輸入后,則所指明的數(shù)制一直有效,直到在接著的cin中指明輸入時(shí)所使用的另一數(shù)制為止。如上例中,輸入k的值時(shí),仍為八進(jìn)制。輸入數(shù)據(jù)的格式、個(gè)數(shù)和類型必須與cin中所列舉的變量類型一一對(duì)應(yīng)。一旦輸入出錯(cuò),不僅使當(dāng)前的輸入數(shù)據(jù)不正確,而且使得后面的提取數(shù)據(jù)也不正確。,cin>>ab;,cin>>ab;,inta,b;,cin>>a>>b;,C+程序設(shè)計(jì),50,輸出語句:cout與輸入cin對(duì)應(yīng)的輸出是cout輸出流當(dāng)要輸出一個(gè)表達(dá)式的值時(shí),可使用cout來實(shí)現(xiàn),其一般格式為:cout.;其中運(yùn)算符“<<”稱為插入運(yùn)算符,它將緊跟其后的表達(dá)式的值,輸出到顯示器當(dāng)前光標(biāo)的位置。,2.6I/O流控制,C+程序設(shè)計(jì),51,inta=6;floatf1=12.4;chars1="abcd"cout<<a<<t<<f1<<t<<s1<<endl;,t為轉(zhuǎn)義字符Tab,endl為回車或n,顯示器,顯示器,顯示器,6,12.4,abcd,2.6I/O流控制,C+程序設(shè)計(jì),52,cout將雙引號(hào)中的字符串常量按其原樣輸出,charch1=a,ch2=b;cout<<"c1="<<ch1<<t<<"c2="<<ch2<<endl;,c1=a,c2=b,inti1=4,i2=5;floata=3.5;cout<<"a*i1="<<a*i1<<endl<<"a*i2="<<a*i2<<endl;,a*i1=14a*i2=17.5,2.6I/O流控制,C+程序設(shè)計(jì),53,2.6I/O流控制,使用控制符用于對(duì)I/O流的格式進(jìn)行控制在頭文件iomanip.h中定義的對(duì)象可以直接將控制符插入流中,C+程序設(shè)計(jì),54,2.6I/O流控制,輸出語句:cout輸出八進(jìn)制或十六進(jìn)制數(shù):控制符是hex,oct和dec,分別對(duì)應(yīng)16進(jìn)制、8進(jìn)制和10進(jìn)制數(shù)的顯示當(dāng)在cout中指明使用的數(shù)制輸出后,則所指明的數(shù)制一直有效,直到在接著的cout中指明輸出時(shí)所使用的另一數(shù)制為止,如下例中,輸出j的值時(shí),仍為八進(jìn)制。,cout<<dec<<i<<endl;cout<<hex<<i<<endl;cout<<oct<<i<<endl;cout<<j<<endl;,10013e91751,inti=1001,j=127;cout<<dec<<i<<endl;cout<<hex<<i<<endl;cout<<oct<<i<<endl;,10013e91751177,C+程序設(shè)計(jì),55,2.6I/O流控制,輸出語句:cout設(shè)置值的輸出寬度:在輸出的數(shù)據(jù)項(xiàng)之間進(jìn)行隔開的另一種辦法是指定輸出項(xiàng)的寬度setw(6)指明其后的輸出項(xiàng)占用的字符寬度為6,即括號(hào)中的值指出緊跟其后的輸出項(xiàng)占用的字符位置個(gè)數(shù),并向右對(duì)齊,setw是“setwidth”的縮寫,inti=4,j=12,m=7,k=2;cout<<setw(6)<<i<<setw(10)<<j<<endl;cout<<setw(5)<<m<<setw(10)<<j*k<<endl;,_4_12_7_24,C+程序設(shè)計(jì),56,使用setw()應(yīng)注意以下三點(diǎn):1、在程序的開始位置必須包含頭文件iomanip.h,即在程序的開頭增加:#include2、括號(hào)中必須給出一個(gè)表達(dá)式(值為正整數(shù)),它指明緊跟其后輸出項(xiàng)的寬度。3、該設(shè)置僅對(duì)其后的一個(gè)輸出項(xiàng)有效。一旦按指定的寬度輸出其后的輸出項(xiàng)后,又回到原來的缺省輸出方式,2.6I/O流控制,C+程序設(shè)計(jì),57,2.6I/O流控制,輸出語句:cout控制浮點(diǎn)數(shù)值顯示setprecision(n)控制輸出流顯示浮點(diǎn)數(shù)的數(shù)字個(gè)數(shù),C+默認(rèn)的流輸出數(shù)值有效位是6setprecision(n)與setiosflags(ios:fixed)聯(lián)合控制小數(shù)點(diǎn)右邊的數(shù)字個(gè)數(shù)setprecision(n)與setiosflags(ios:scientific)聯(lián)合控制指數(shù)表示法的小數(shù)位數(shù)VC6中setiosflags(ios:scientific)與setiosflags(ios:fixed)不能連續(xù)使用,否則后者失效,doublefSum=22.0/7;cout<<fSum<<endl;cout<<setprecision(0)<<fSum<<endl;cout<<setprecision(2)<<fSum<<endl;cout<<setiosflags(ios:fixed)<<setprecision(4)<<fSum<<endl;cout<<setiosflags(ios:scientific)<<setprecision(6)<<fSum<<endl;,C+程序設(shè)計(jì),58,2.6I/O流控制,輸出語句:cout設(shè)置填充字符:缺省時(shí)流使用空格符來保證字符間的正確間隔,setfill用于設(shè)置非空字符來填充,inti=4,j=12,m=7,k=2;cout<<setfill(*);cout<<setw(6)<<i<<setw(10)<<j<<endl;cout<<setw(5)<<m<<setw(10)<<j*k<<endl;cout<<setfill();,C+程序設(shè)計(jì),59,2.6I/O流控制,輸出語句:cout強(qiáng)制顯示小數(shù)點(diǎn)和符號(hào):要強(qiáng)制顯示小數(shù)點(diǎn),用setiosflags(ios:showpoint)標(biāo)志要強(qiáng)制顯示正數(shù)前的正號(hào),用setiosflags(ios:showpos)標(biāo)志,floatfSum=10.0/5;cout<<fSum<<endl;cout<<setiosflags(ios:showpoint)<<fSum<<endl;cout<<setiosflags(ios:showpos)<<fSum<<endl;,pos:positive,C+程序設(shè)計(jì),60,2.6I/O流控制,輸出語句:coutios:right,ios:leftios:uppercase,ios:lowercaseios:skipws忽略前導(dǎo)空白printf與scanfC語言中的標(biāo)準(zhǔn)輸入輸出函數(shù)包含在頭文件stdio.h中C+語言中已被I/O流完全替代,C+程序設(shè)計(jì),61,2.6I/O流控制,printf與scanfprintf的簡(jiǎn)單使用%d或%i:輸出用十進(jìn)制表示的int型數(shù)據(jù)%u:輸出用十進(jìn)制表示的unsigned型數(shù)據(jù)%o:輸出用八進(jìn)制表示的unsigned型數(shù)據(jù)%x:輸出用十六進(jìn)制表示的unsigned型數(shù)據(jù)%f:以小數(shù)形式輸出實(shí)數(shù),并且自動(dòng)按四舍五入形式保留6位小數(shù);如果輸出的實(shí)數(shù)本身不足6位小數(shù),則在小數(shù)后面自動(dòng)補(bǔ)數(shù)字0,以湊足6位。%e或%E:以指數(shù)形式輸出實(shí)數(shù)%g:以小數(shù)或指數(shù)形式最合適的方式輸出浮點(diǎn)數(shù)%c:輸出一個(gè)字符%s:輸出字符串,C+程序設(shè)計(jì),62,2.6I/O流控制,#includeintmain()inta=10,b=-1;unsignedx=65535;printf("a=%dta=%it",a,a);printf("a=%ota=%xta=%Xn",a,a,a);printf("b=%dtb=%in",b,b);printf("x=%utx=%otx=%xtx=%Xn",x,x,x,x);printf("b=%otb=%xtb=%Xtx=%dn",b,b,b,x);return0;,C+程序設(shè)計(jì),63,小結(jié)與作業(yè),這一節(jié)我們主要學(xué)習(xí)了。C+語言中的保留字基本數(shù)據(jù)類型變量常量I/O流作業(yè)教材P46:習(xí)題2.12.4,2.12,2.172.19,2.24教材P72:習(xí)題3.24,3.26預(yù)習(xí)實(shí)驗(yàn)指導(dǎo)書實(shí)驗(yàn)二預(yù)習(xí)教材第2章:2.92.15,