




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
0西安交通大學(xué)計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心
2013.9第2章信息的表達(dá)與數(shù)據(jù)運(yùn)算C++程序設(shè)計(jì)教程內(nèi)容提要信息如何在程序中表示數(shù)據(jù)類型、常量、變量、數(shù)組、字符串?dāng)?shù)據(jù)如何運(yùn)算運(yùn)算符、表達(dá)式、賦值各種運(yùn)算符、運(yùn)算符的優(yōu)先級(jí)混合運(yùn)算不同數(shù)據(jù)類型、不同運(yùn)算12.1信息的表達(dá)信息在程序設(shè)計(jì)中的表達(dá)2.1.1數(shù)據(jù)類型與常量已知距離6km,行駛時(shí)間為5分鐘,計(jì)算行駛速度。數(shù)學(xué)算式:6÷(5.0÷60.0)=72(km/小時(shí))cout<<6/(5.0/60.0));直接寫出的數(shù)據(jù)是常量,6是整數(shù),60.0是實(shí)數(shù)1.基本數(shù)據(jù)類型與字面常量整型int5長(zhǎng)整型longint5L浮點(diǎn)型float5.0f雙精度型double
5.0,1.0E-5字符char‘a(chǎn)’字符串chars[21];stringstr;“char”邏輯型booltruefalse轉(zhuǎn)意字符\\n,\t,\’,\”,\02【例2-1】檢查不同類型的數(shù)據(jù)在內(nèi)存中占的字節(jié)數(shù)。編寫程序,顯示整型、長(zhǎng)整型、字符型、邏輯型、浮點(diǎn)型和雙精度型數(shù)據(jù)的類型名稱和所占字節(jié)數(shù)?!締栴}分析】sizeof(),它計(jì)算括號(hào)中的類型、變量或表達(dá)式結(jié)果占的字節(jié)數(shù)。【算法描述】檢查不同類型的數(shù)據(jù)在內(nèi)存中占的字節(jié)數(shù)。①輸出字符串’int’;②用sizeof(int)計(jì)算整型數(shù)占的字節(jié)數(shù)n;③輸出n;④將整型依次改為長(zhǎng)整型、字符型、邏輯型、浮點(diǎn)型和雙精度型重復(fù)①~③3【源程序】/*example2-1Bytesofdatatype*///程序注釋#include<iostream>//包含基本輸入輸出庫(kù)頭文件usingnamespacestd;//使用名字空間
intmain()//主函數(shù){ intn;//說明用n表示整數(shù) n=sizeof(shortint);//計(jì)算類型大小,將所占字節(jié)數(shù)賦值給符號(hào)n cout<<"shortint"<<n<<endl;//顯示 n=sizeof(int);//整型 cout<<"int"<<n<<endl;4 n=sizeof(longint);//長(zhǎng)整型 cout<<"longint"<<n<<endl; n=sizeof(char);//字符串 cout<<"char"<<n<<endl; n=sizeof(bool);//邏輯型(布爾型) cout<<"bool"<<n<<endl; n=sizeof(float);//浮點(diǎn)型 cout<<"float"<<n<<endl; n=sizeof(double);//雙精度型 cout<<"double"<<n<<endl; return0; //程序結(jié)束,}5【例2-2】以下列格式使用前面列出的10種轉(zhuǎn)義字符,看得到什么效果。 cout<<"1abcde\n#12345\n";其中,字符串常量中開頭1是序號(hào),以后要依次替換為2,3,4…10;中間的\n是轉(zhuǎn)義字符,以后依次換為\r,\t,\f等?!舅悸窋U(kuò)展】輸出9個(gè)大小不等的整數(shù),分3行、3列輸出,要求每列的數(shù)據(jù)對(duì)齊,如何實(shí)現(xiàn)?62.符號(hào)常量const<數(shù)據(jù)類型><標(biāo)識(shí)符>=<數(shù)值>;constdoublePI=3.1415926;constintN=3,M=5;行末有分號(hào)★#define<標(biāo)識(shí)符><數(shù)值>#definePAI3.1415926行末無分號(hào)★用符號(hào)常量是編程的好習(xí)慣74.字符和整數(shù)的關(guān)系‘a(chǎn)’,字符,內(nèi)存中存的數(shù)值是97‘1’,字符,內(nèi)存中存的數(shù)值是491,整數(shù),內(nèi)存中存的數(shù)值是1cout<<97;cout<<(char)97;?結(jié)果怎樣?Cout<<‘a(chǎn)’;Cout<<(int)’a’;?結(jié)果怎樣?Charc;C=57;cout<<‘|’<<c<<‘|’;?結(jié)果怎樣?C=9;cout<<‘|’<<c<<‘|’;?結(jié)果怎樣?82.1.2單項(xiàng)特征的表達(dá)——變量1.變量的定義inti,j,k;//定義三個(gè)整型變量doubleradius,area; //定義兩個(gè)雙精度型變量charc1,c2; //定義兩個(gè)字符型變量boolflag; //定義一個(gè)布爾型變量2.變量的初始化inta=5*2;//復(fù)制初始化inta(5*2);//直接初始化9變量的賦值和使用doublelength,width,area; //變量的定義length=6.0; //變量的賦值width=3.2; //變量的賦值area=length*width; //表達(dá)式中使用變量,結(jié)果賦給變量areacout<<area; //area在表達(dá)式中被使用變量:定義、賦值、使用★10【例2-3】說明下列程序中的錯(cuò)誤之處/*example2-3findingerror*///程序注釋#include<iostream>//包含基本輸入輸出庫(kù)頭文件usingnamespacestd;//使用名字空間intmain()//主函數(shù){ doublePI=3.1415926; doubler;doublearea; area=PI*r*r; cin>>r; cout<<"area\t"<<area<<endl; return0; //程序結(jié)束,}112.1.3多個(gè)相同類型的特征的表示——數(shù)組一個(gè)變量表示一個(gè)事物的單個(gè)特征數(shù)組表示一組相同類型的特征1.向量的表示——一維數(shù)組的定義的使用一維數(shù)組的定義<類型><標(biāo)識(shí)符>[<大小>];constintN=100,M=20;//定義兩個(gè)整型常量N和Mdoublelength[30],width[30];//定義兩個(gè)數(shù)組length和width,intscore[N*M];//定義數(shù)組score,大小用常量表達(dá)式表示,實(shí)際大小為200doubleaverage[N]; //定義數(shù)組average,大小用符號(hào)常量表示12一維數(shù)組的使用數(shù)組中的元素,下標(biāo),下標(biāo)越界intx[30]; //定義數(shù)組intsum; //定義變量x[0]=1; //將數(shù)組x的第1個(gè)元素設(shè)置為1x[1]=3; //將數(shù)組x的第2個(gè)元素設(shè)置為3x[2]=5; //將數(shù)組x的第3個(gè)元素設(shè)置為5sum=x[0]+x[1]+x[2]; //對(duì)數(shù)組的前三個(gè)元素求和cout<<sum<<endl; //輸出和cin>>x[0]>>x[1]>>x[2]; //輸入數(shù)組的前三個(gè)元素sum=x[0]+x[1]+x[2]; //再次對(duì)數(shù)組的前三個(gè)元素求和cout<<x[0]<<“”<<x[1]<<“”<<x[2]<<“\n”;//輸出三個(gè)元素,用空格隔開,用\n控制換行,與endl效果相同cout<<sum<<endl; //再次輸出和。由于輸入會(huì)改變x[0],x[1],x[2]的值,所以這次的和可能會(huì)與前面的和不同了13數(shù)組不能整體輸入、輸出intlength[10],width[10]; //定義兩個(gè)數(shù)組,中間用逗號(hào)隔開cin>>length; //錯(cuò)誤,數(shù)組不能整體輸入cin>>length[10]; //錯(cuò)誤,下標(biāo)超界。使用length[-1]也是錯(cuò)誤的width=length; //錯(cuò)誤,數(shù)組不能整體賦值cout<<length; //錯(cuò)誤,數(shù)組不能整體輸出14一維數(shù)組的初始化<類型><數(shù)組名>[<常量表達(dá)式>]={<表達(dá)式1>,<表達(dá)式2>,...};doublea=11.2,b=21.7;//定義兩個(gè)雙精度變量并初始化doubleaverage[30]={21.0,2012.7,7.5+2.3,a*b};//定義數(shù)組并初始化,數(shù)據(jù)項(xiàng)有常量和表達(dá)式doubleroom[]={401,402,403,404,405,606,407,408,409,411};一維數(shù)組在內(nèi)存中的存儲(chǔ)按2行存儲(chǔ)(行優(yōu)先)152.矩陣的表示——二維數(shù)組16用一維數(shù)組表示矩陣?intM[9]={2,7,6,8,1,3,10,5,4};M[i*3+j]=A[i][j];M[i*N+j]=A[i][]j,N為矩陣A的列數(shù)二維數(shù)組<類型><數(shù)組名>[<行數(shù)>][<列數(shù)>;intA[5][5]; //定義5行*5列的二維數(shù)組,實(shí)際只用了3行3列intsum;A[0][0]=2; //為第1行第1列元素賦值A(chǔ)[0][1]=7; //為第1行第2列元素賦值A(chǔ)[0][2]=6; //為第1行第3列元素賦值…A[2][0]=10; //為第3行第1列元素賦值A(chǔ)[2][1]=5; //為第3行第2列元素賦值A(chǔ)[2][2]=4; //為第3行第3列元素賦值sum=A[0][0]+A[1][1]+A[2][2];//對(duì)角元素求和cout<<A[0][0]<<""<<A[1][1]<<""<<A[2][2]<<""<<sum<<endl;17二維數(shù)組初始化<類型><數(shù)組名>[<行數(shù)>][<列數(shù)>]={<表達(dá)式1>,<表達(dá)式2>,...};inta=9;intB[3][3]={a+1,a+2,a+3,a+4,a+5,a+6,a+7,a+8,a+9};/intA[5][4]={2,7,6,8,1,3,10,5,4};intA[][3]={2,7,6,8,1,3,10,5,4};intA[3][3]={{2,7,6},{8,1,3},{10,5,4}};intA[3][3]={{2,7},{8,1},{10,5}};183.多維數(shù)組intA[5][4][3];//定義三維數(shù)組doubleB[3][4][5][6];//定義4維數(shù)組19思考題什么問題的表示用數(shù)組更方便2.1.4文字信息的表達(dá)——字符串1.用字符數(shù)組表示字符串【例2-4】用戶從鍵盤輸入一個(gè)四個(gè)小寫字母組成的英文單詞,將其轉(zhuǎn)換為大寫,然后顯示到屏幕上。【算法】將長(zhǎng)度為4的小寫字母的單詞轉(zhuǎn)換為大寫。①用字符數(shù)組str表示字符串。②輸入字符串str。③將str的每個(gè)元素減去32。④輸出字符串。20【源程序】將長(zhǎng)度為4的小寫字母的單詞轉(zhuǎn)換為大寫#include<iostream>//包含需要的頭文件usingnamespacestd;//名字空間intmain()//主函數(shù){ charstr[5];//定義字符數(shù)組用于存放字符串 constintc=32;//定義常量,表示大小寫字母的ASCII值的差 cin>>str;//輸入字符串 str[0]=str[0]-c;//轉(zhuǎn)換第1個(gè)字母 str[1]=str[1]-c;//轉(zhuǎn)換第2個(gè)字母 str[2]=str[2]-c;//轉(zhuǎn)換第3個(gè)字母 str[3]=str[3]-c;//轉(zhuǎn)換第4個(gè)字母 cout<<str<<endl;//輸出字符串 return0;}21字符、字符數(shù)組在內(nèi)存中的存儲(chǔ)字符、字符數(shù)組、字符串的聯(lián)系與區(qū)別用字符數(shù)組存儲(chǔ)的字符串可以整體輸入、整體輸入,但不能整體賦值222.用string類型的“變量”表示字符串包含頭文件stringstring<對(duì)象1>,<對(duì)象2>,...;stringtext1,text2;//定義兩個(gè)對(duì)象text1="SluicegatesatThreeGorgesDamopenedtodischargewater.";//text2="07-07-201209:04BJT";//使用“=”號(hào)為對(duì)象賦值stringtext3("HeavyrainsacrosssouthernChinaarepushingwaterlevelsattheThreeGorgesDambeyondthefloodlevellimit.");23使用成員函數(shù)對(duì)字符串進(jìn)行操作<對(duì)象>.<函數(shù)名>(<參數(shù)列表>);【例2-5】使用string進(jìn)行字符串的操作。設(shè)有兩個(gè)句子:Heavyrainsarepushingwaterlevelsbeyondthelimit.SluicegatesatThreeGorgesDamopenedtodischargewater.開始由兩個(gè)符號(hào)表示,請(qǐng)將它們合并為一段文字,然后查找其中的“Heavy”替換為“Strong”,最后顯示處理過的文本。24【源程序】#include<iostream>//包含需要的頭文件#include<string>//使用string類需要包含頭文件stringusingnamespacestd;//名字空間intmain()//主函數(shù){ //定義并初始化字符串對(duì)象text1 stringtext1("Heavyrainsarepushingwaterlevelsbeyondthelimit."); stringtext2,text3;//定義但沒有初始化話對(duì)象text2,text3 intk;//定義整型變量k25//為對(duì)象text2賦值 text2="SluicegatesatThreeGorgesDamopenedtodischargewater."; text3=text1+text2;//使用“+”運(yùn)算合并兩個(gè)字符串,并賦值給text3 k=text3.find(“Heavy”); //在text3中查找“Heavy”,將得到的位置賦給k//將text3中k開始的sizeof("Heavy")-1)個(gè)字符刪除//sizeof("Heavy")是計(jì)算Heavy占的字節(jié)數(shù),為6,減1是字符個(gè)數(shù)text3.erase(k,sizeof("Heavy")-1); //刪除Heavy text3.insert(k,"Strong"); //將在text3中位置k處插入字符串"String" cout<<text3<<endl; //顯示合并、替換后的字符串 return0;}262.2數(shù)據(jù)的運(yùn)算運(yùn)算符(操作符)、運(yùn)算數(shù)(操作數(shù))、表達(dá)式表達(dá)式可以嵌套2.2.1算術(shù)運(yùn)算1.算術(shù)運(yùn)算符、算術(shù)表達(dá)式2.算術(shù)符合運(yùn)算符a+=b;//等價(jià)于a=a+b
;a-=b;//等價(jià)于a=a-b
;a*=b;//等價(jià)于a=a*b
;a/=b;//等價(jià)于a=a/b
;a%=b;//等價(jià)于a=a%b
;272.2.2關(guān)系運(yùn)算>(大于)>=(大于等于)<(小于)<=(小于等于)==(等于)!=(不等于)關(guān)系表達(dá)式5>3,2+5<4,a+b>c,'a'<'b‘表達(dá)式的值bool型,值true,flasetrue,false與1,0,非零,其他表達(dá)式值的關(guān)系282.2.3邏輯運(yùn)算符和表達(dá)式&&(與)、||(或)、?。ǚ牵岸搪非笾怠保╯hort-circuitevaluation)【例2-7】判斷閏年。用戶輸入年份,如果為閏年輸出1;如果不是,輸出0。判斷閏年的規(guī)則為:(1)能被4整除且不能被100整除的為閏年。(如2004年是,1900年不是);(2)能被400整除的是閏年。(如2000年是,1900年不是)。29【源程序】#include<iostream> //包含需要的頭文件usingnamespacestd; //名字空間intmain() //主函數(shù){ intyear; //定義整型變量表示年份 boolresult; //定義邏輯變量表示判斷結(jié)果 cout<<"請(qǐng)輸入年份:"; //提示信息 cin>>year; //輸入年份 result=(year%4==0&&year%100!=0)||(year%400==0);//計(jì)算邏輯表達(dá)式,結(jié)果賦給邏輯變量result cout<<“閏年判斷結(jié)果:”<<result<<endl;//打印結(jié)果,result為true顯示1,//result為false顯示0 return0;}30【思路擴(kuò)展】(1)能根據(jù)運(yùn)行結(jié)果判斷兩個(gè)年份是否閏年嗎?(2)看程序的輸出行,其中輸出的是result這個(gè)變量,這個(gè)變量的值是邏輯值,true或false,而運(yùn)行結(jié)果卻是1或0。事實(shí)上,條件、邏輯表達(dá)式的計(jì)算結(jié)果實(shí)際為一個(gè)整數(shù)值,或者為1或者為0。反過來,整數(shù)0可以表示fasle,非0可以表示!false即true。這也是信息的表示問題,是約定。(3)編程判斷用戶輸入的數(shù)是否滿足
,是則顯示1,不是則顯示0。312.2.4自增運(yùn)算符和自減運(yùn)算符++,--單目運(yùn)算inti;++i;i++;【例2-8】請(qǐng)分析下列程序每個(gè)語句執(zhí)行后i,j的值是多少?inti=0,j=0;j=++i;j=i++;322.2.5位運(yùn)算符和位運(yùn)算表達(dá)式1.按位與intx=11,y=7,z;z=x&y
;11的二進(jìn)制表示:000000000000000000000000000010117的二進(jìn)制表示:0000000000000000000000000000011100000000000000000000000000001011&00000000000000000000000000000111--------------------------------------------------------------00000000000000000000000000000011則,z=x&y的結(jié)果十進(jìn)制表示為3。33【思考題】能否通過“與”運(yùn)算使一個(gè)數(shù)的指定位為1或?yàn)??如果不能為什么?如果能,如何實(shí)現(xiàn),請(qǐng)舉例說明。342.按位或intx=11,y=7,z;z=x|y
;00000000000000000000000000001011|00000000000000000000000000000111
---------------------------------------------------------00000000000000000000000000001111則,z=x|y的結(jié)果的十進(jìn)制表示為15。按位或運(yùn)算可以方便地將一個(gè)數(shù)的某些二進(jìn)制位設(shè)置為1。如果兩個(gè)數(shù)代表兩個(gè)集合,則“或”運(yùn)算相當(dāng)于它們的“并”運(yùn)算353.按位異或intx=11,y=7,z;z=x^y
;00000000000000000000000000001011^00000000000000000000000000000111
----------------------------------------------------------00000000000000000000000000001100則,z=x^y的結(jié)果十進(jìn)制表示為12。在同一數(shù)據(jù)上兩次異或一個(gè)值,結(jié)果變回原來的值364.按位取反intx=11,z;z=~x
;~00000000000000000000000000001011-----------------------------------------------------------z11111111111111111111111111110100375.左移位運(yùn)算intx=179,z;z=x<<4;00000000000000000000000010110011<<400000000000000000000101100110000結(jié)果z的十進(jìn)制形式為2864。一個(gè)數(shù)每左移一位,相當(dāng)于將這個(gè)數(shù)乘以2。左移運(yùn)算常和按位或運(yùn)算一起使用,用于將兩個(gè)數(shù)的內(nèi)容拼接在一起。386.右移位運(yùn)算intx=179,z;z=x>>3;00000000000000000000000010110011>>300000000000000000000000000010110結(jié)果z的十進(jìn)制形式為22。一個(gè)數(shù)每右移一位,相當(dāng)于將這個(gè)數(shù)除以2。右移運(yùn)算常和按位與運(yùn)算一起使用,用于從一個(gè)數(shù)中分離出某些二進(jìn)制位。例如,取x的第三個(gè)字節(jié),可以將其右移八位,和0x00FF做“與”運(yùn)算。39【例2-9】判斷文件屬性的模擬。用戶從鍵盤輸入[0,63]內(nèi)的整數(shù),表示一個(gè)文件的屬性,從低位開始,它的每個(gè)二進(jìn)制位一次表示只讀位、隱藏位、系統(tǒng)位、卷標(biāo)位、子目錄位、歸檔位。請(qǐng)判斷該文件具有哪些屬性,不具有哪些屬性。有用1表示,沒有用0表示。40【源程序】//例2-9判斷文件屬性的模擬#include<iostream> //包含需要的頭文件usingnamespacestd; //名字空間intmain() //主函數(shù){ intattribute;//定義整型變量,表示屬性字節(jié)的值 inta0=1,a1=2,a2=4,a3=8,a4=16,a5=32;//定義6個(gè)變量并初始化,//表示各屬性位的位權(quán) cin>>attribute; //輸入屬性字節(jié)的十進(jìn)制值41 //"與"運(yùn)算保留了相應(yīng)位的值。"=="運(yùn)算比較是否與該位為1時(shí)的值相等。 //相等表示該屬性有效,結(jié)果為true,顯示效果為1; //不相等表示該位無效,結(jié)果為fasle,顯示效果為0。cout<<"只讀:"<<((attribute&a0)==a0)<<endl;cout<<"隱藏:"<<((attribute&a1)==a1)<<endl; cout<<"系統(tǒng):"<<((attribute&a2)==a2)<<endl; cout<<"卷標(biāo):"<<((attribute&a3)==a3)<<endl; cout<<"目錄:"<<((attribute&a4)==a4)<<endl; cout<<"歸檔:"<<((attribute&a5)==a5)<<endl; cout<<endl; return0;}42【程序驗(yàn)證】題目要求輸入的數(shù)在0-63之間,但程序中并沒有體現(xiàn)這一限制。如果輸入167,也能輸出結(jié)果,這一結(jié)果是怎么計(jì)算出來的呢?如果輸入負(fù)數(shù)呢?怎么解決這一問題呢?怎樣讓用戶知道輸入是否正確呢?【思路擴(kuò)展】一個(gè)變量表示一個(gè)數(shù)或字符。一個(gè)位可以表示兩種狀態(tài)事物的一種狀態(tài),例如開關(guān)的“開”或“關(guān)”狀態(tài)。如果用一位表示一個(gè)開關(guān),控制一盞燈,那么一個(gè)字節(jié)就可以控制8盞等,一個(gè)整型變量就可以控制32盞等。用多個(gè)整型變量就可以控制更多的等。請(qǐng)同學(xué)們想一想,位運(yùn)算還可以用在什么地方呢?437.復(fù)合位運(yùn)算符442.2.6三目條件運(yùn)算符45<邏輯表達(dá)式>
?<表達(dá)式1>
:<表達(dá)式2>doublet
;inty
;y=(t>=0
?1
:0);【例2-10】100以內(nèi)整數(shù)加法練習(xí)系統(tǒng)。編寫程序,自動(dòng)產(chǎn)生兩個(gè)小于100的整數(shù),顯示給用戶,并讓用戶輸入它們的和。如果用戶計(jì)算正確,顯示“正確,祝賀!”,如果不正確,顯示“錯(cuò)誤,加油啊”。?自動(dòng)產(chǎn)生小于100的整數(shù)?46【源程序】#include<iostream>//包含頭文件cout,cin需要#include<cmath>//包含頭文件,rand()需要usingnamespacestd;//名字空間intmain()//主函數(shù){ inta,b,c;//分別表示兩個(gè)數(shù)及它們的和 intinput;//存放用戶輸入的和 charright[]="正確,祝賀!";//保存字符串 charwrong[]="錯(cuò)誤,加油??!";//保存字符串 a=rand()%100;//產(chǎn)生小于100的隨機(jī)數(shù) b=rand()%100;//產(chǎn)生小于100的隨機(jī)數(shù)47 c=a+b;//計(jì)算和 cout<<a<<"+"<<b<<"=?";//顯示兩個(gè)數(shù)并提示用戶輸入 cin>>input;//用戶輸入的和 cout<<(input==c?right:wrong);//根據(jù)正確與否顯示不同的信息 input==c?cout<<right:cout<<wrong;// cout<<endl; return0;}?隨機(jī)數(shù),偽隨機(jī)數(shù),隨機(jī)數(shù)種子#include<ctime>srand(time(0));rand();482.2.7運(yùn)算符的優(yōu)先級(jí)小括號(hào)、下標(biāo)、訪問對(duì)象單目運(yùn)算算術(shù)運(yùn)算比較運(yùn)算邏輯運(yùn)算?號(hào)運(yùn)算符合運(yùn)算表2-3結(jié)合方向好習(xí)慣:運(yùn)用小括號(hào)492.2.8不同類型數(shù)據(jù)的混合運(yùn)算char→int→unsigned→long→unsignedlong→float→double相同類型數(shù)據(jù)的運(yùn)算強(qiáng)制類型轉(zhuǎn)換inta;charb;a=65;b='a';cout<<(char)a<<int(b);502.3程序設(shè)計(jì)實(shí)例【例2-11】海倫公式計(jì)算三角形的面積。用戶輸入三角形的三條邊長(zhǎng)a,b,c,用海倫公式計(jì)算三角形的面積。
其中,,三邊長(zhǎng)可能為實(shí)數(shù)。提示:?51【算法描述】海倫公式計(jì)算三角形的面積用a,b,c表示三角形的三個(gè)邊長(zhǎng)。①輸入a,b,c三個(gè)數(shù);②計(jì)算s=(a+b+c)/2;③計(jì)算面積
;④輸入面積A。52【源程序】#include<iostream>//包含基本輸入輸出庫(kù)頭文件#include<cmath>usingnamespacestd;//使用名字空間
intmain()//主函數(shù){ doublea,b,c;//定義雙精度變量 doubles,A; cout<<"Pleaseinputthreeedgesa,b,c=";//輸入提示 cin>>a>>b>>c; //輸入 s=(a+b+c)/2.0; //計(jì)算s A=sqrt(s*(s-a)*(s-b)*(s-c)); //計(jì)算面積 cout<<"Theareais"<<A<<endl; //打印面積return0; //程序結(jié)束,}53【思考題】①計(jì)算s的右邊的表達(dá)式注意什么問題,還可以怎樣書寫?②程序中怎么有兩個(gè)a(一個(gè)大寫A,一個(gè)小寫a)呢?54【例2-12】構(gòu)造一個(gè)5位數(shù)的反序數(shù)。例如,用戶輸入12345,構(gòu)造出54321并輸出。【算法描述】構(gòu)造5位的反序數(shù)。用n表示輸入的原5位數(shù),用m表示構(gòu)造出的新5位數(shù)。①輸入五位數(shù)n;②依次分離出個(gè)位、十位、百位、千位和萬位,分別用a,b,c,d,e表示;③用式子(((a*10+b)*10+c)*10+d)*10+e構(gòu)造新的五位整數(shù);④輸出新數(shù)。55【源程序】#include<iostream>//包含基本輸入輸出庫(kù)頭文件#include<cmath>usingnamespacestd;//使用名字空間
intmain()//主函數(shù){ intn,m;//n,m表示輸入的數(shù)和反序后的數(shù) chara,b,c,d,e;//分別表示原數(shù)的個(gè)、十、百、千、萬位 cout<<"Pleaseinputafive-digitnumber";//輸入提示 cin>>n;//輸入一個(gè)五位整數(shù) a=n%10;//分離個(gè)位 n=n/10; b=n%10; //分離個(gè)十位56n=n/10; c=n%10; //分離百位 n=n/10; d=n%10; //分離千位 n=n/10; e=n%10; //分離萬位 m=(((a*10+b)*10+c)*10+d)*10+e;//構(gòu)造新數(shù) cout<<"Theinversednunberis"<<m<<endl;//輸出return0;//程序結(jié)束,}57【思路擴(kuò)展】(1)e和最后的n有什么關(guān)系?最后的求余有必要嗎?(2)本例中,不用n=n/10;這種方式,分離十位還可以寫成b=n/10%10,類似地,分離其他位呢?(3)有興趣的同學(xué)可以考慮:用戶任意輸入一個(gè)數(shù),構(gòu)造其反序數(shù)并輸出。(4)如果一個(gè)數(shù)的反序數(shù)與它相等,那么這就是一個(gè)回文數(shù)。修改上面的程序,判斷用戶輸入的數(shù)是不是回文數(shù)。58【例2-13】一位數(shù)的整數(shù)形式和ASCII形式的轉(zhuǎn)換。編寫程序,用戶輸入一位數(shù),存入整型變量,然后將其轉(zhuǎn)換為字符存入字符型變量,打印字符變量及其代表字符的ASCII值。整型轉(zhuǎn)換為字符型是什么意思?1整型——1,字符型——49用途:例如輸入一句話“西安城墻景區(qū)門票目前為40元,擬上漲至55元,問上漲的百分比是多少?”請(qǐng)自動(dòng)計(jì)算注意,在句子中“40”,“50”是字符型的59【源程序】#include<iostream>//包含基本輸入輸出庫(kù)頭文件usingnamespacestd;//使用名字空間
intmain()//主函數(shù){ intn; //聲明整型變量 charc; //聲明字符型變量 cout<<"Pleaseinputadigit";//輸入提示 cin>>n; //輸入 c=n+'0'; //數(shù)字轉(zhuǎn)換為字符 cout<<c<<"ASCII"<<(int)c<<endl;//以字符和數(shù)值形式打印return0;//程序結(jié)束,}60【思考題】(1)編寫程序,將數(shù)字字符轉(zhuǎn)換為數(shù)值(將一個(gè)字符型的數(shù)字,轉(zhuǎn)換為一個(gè)整型的數(shù)字)。(2)使用集成環(huán)境的跟蹤功能,觀察int和char型數(shù)據(jù)在內(nèi)存中的值。612.3.4啟閉指定設(shè)備【例2-14】大型超市中,在顧客不是很多時(shí),收銀臺(tái)經(jīng)常是隔一個(gè)打開一個(gè)。設(shè)這些收銀臺(tái)除操作員密碼外,還由控制室統(tǒng)一控制,只有控制室打開該設(shè)備后操作員才能使用。設(shè)每個(gè)設(shè)備用一個(gè)二進(jìn)制位表示,1表示開啟,0表示關(guān)閉。用戶輸入一個(gè)無符號(hào)整數(shù)表示初始的狀態(tài),編寫程序分別將這個(gè)數(shù)的二進(jìn)制的奇數(shù)位置成0和置成1(從最低位開始為第1位),以十六進(jìn)制形式打印設(shè)置后的兩個(gè)數(shù)。62【算法描述】①輸入無符號(hào)整數(shù)a②設(shè)奇數(shù)位為0的數(shù)為odd0=0x55555555,奇數(shù)位為1的數(shù)為odd1=0xAAAAAAA③將a分別與odd0,odd1做“與”運(yùn)算和“或”運(yùn)算,結(jié)果用a0,a1表示;④輸出a0,a1的十六進(jìn)制形式。63#include<iostream>//包含基本輸入輸出庫(kù)頭文件usingnamespacestd;//使用名字空間
intmain()//主函數(shù){ unsignedinta; //聲明無符號(hào)整型變量,保存原數(shù) unsignedintodd0=0x55555555;//奇數(shù)位0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)環(huán)磷酰胺一水物行業(yè)市場(chǎng)分析及投資價(jià)值評(píng)估前景預(yù)測(cè)報(bào)告
- 2025年甘肅慶陽(yáng)西峰數(shù)字服務(wù)就業(yè)中心招聘100人考前自測(cè)高頻考點(diǎn)模擬試題有完整答案詳解
- 2025江西招收勞務(wù)派遣制工作人員3人模擬試卷及答案詳解(典優(yōu))
- 2025年中國(guó)化妝品級(jí)卡拉膠行業(yè)市場(chǎng)分析及投資價(jià)值評(píng)估前景預(yù)測(cè)報(bào)告
- 2025福建漳州城市職業(yè)學(xué)院招聘38人模擬試卷及完整答案詳解1套
- 2025年福建省泉州市豐澤區(qū)部分公辦學(xué)校專項(xiàng)公開編制內(nèi)17人考前自測(cè)高頻考點(diǎn)模擬試題參考答案詳解
- 2025年上半年江蘇無錫市新吳區(qū)新瑞醫(yī)院(上海交通大學(xué)醫(yī)學(xué)院附屬瑞金醫(yī)院無錫分院)招聘32人模擬試卷(含答案詳解)
- 2025北京市海淀區(qū)錦秋學(xué)校招聘考前自測(cè)高頻考點(diǎn)模擬試題及完整答案詳解1套
- 2025年金華蘭溪市衛(wèi)健系統(tǒng)面向普通高校第二批招聘醫(yī)學(xué)類應(yīng)屆畢業(yè)生27人考前自測(cè)高頻考點(diǎn)模擬試題及參考答案詳解
- 2025安徽工程大學(xué)碩士專職輔導(dǎo)員招聘8人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(奪冠系列)
- 班次調(diào)度沖突解決
- 管理會(huì)計(jì)學(xué) 第10版 課件 第1、2章 管理會(huì)計(jì)概論、成本性態(tài)與變動(dòng)成本法
- 領(lǐng)導(dǎo)科學(xué)之領(lǐng)導(dǎo)用人(經(jīng)典)
- HGT4134-2022 工業(yè)聚乙二醇PEG
- 大米先生管理制度
- 手術(shù)室儀器設(shè)備管理PPT
- 高中政治課程標(biāo)準(zhǔn)解讀
- GB/T 42695-2023紡織品定量化學(xué)分析木棉與某些其他纖維的混合物
- YY/T 1617-2018血袋用聚氯乙烯壓延薄膜
- 尿動(dòng)力學(xué)檢查操作指南2023版
- 五星領(lǐng)導(dǎo)人課件
評(píng)論
0/150
提交評(píng)論