c++中信息的表達與數(shù)據(jù)運算(2016.5.21)_第1頁
c++中信息的表達與數(shù)據(jù)運算(2016.5.21)_第2頁
c++中信息的表達與數(shù)據(jù)運算(2016.5.21)_第3頁
c++中信息的表達與數(shù)據(jù)運算(2016.5.21)_第4頁
c++中信息的表達與數(shù)據(jù)運算(2016.5.21)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

0西安交通大學(xué)計算機教學(xué)實驗中心

2013.9第2章信息的表達與數(shù)據(jù)運算C++程序設(shè)計教程內(nèi)容提要信息如何在程序中表示數(shù)據(jù)類型、常量、變量、數(shù)組、字符串數(shù)據(jù)如何運算運算符、表達式、賦值各種運算符、運算符的優(yōu)先級混合運算不同數(shù)據(jù)類型、不同運算12.1信息的表達信息在程序設(shè)計中的表達2.1.1數(shù)據(jù)類型與常量已知距離6km,行駛時間為5分鐘,計算行駛速度。數(shù)學(xué)算式:6÷(5.0÷60.0)=72(km/小時)cout<<6/(5.0/60.0));直接寫出的數(shù)據(jù)是常量,6是整數(shù),60.0是實數(shù)1.基本數(shù)據(jù)類型與字面常量整型int5長整型longint5L浮點型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ù)。編寫程序,顯示整型、長整型、字符型、邏輯型、浮點型和雙精度型數(shù)據(jù)的類型名稱和所占字節(jié)數(shù)。【問題分析】sizeof(),它計算括號中的類型、變量或表達式結(jié)果占的字節(jié)數(shù)?!舅惴枋觥繖z查不同類型的數(shù)據(jù)在內(nèi)存中占的字節(jié)數(shù)。①輸出字符串’int’;②用sizeof(int)計算整型數(shù)占的字節(jié)數(shù)n;③輸出n;④將整型依次改為長整型、字符型、邏輯型、浮點型和雙精度型重復(fù)①~③3【源程序】/*example2-1Bytesofdatatype*///程序注釋#include<iostream>//包含基本輸入輸出庫頭文件usingnamespacestd;//使用名字空間

intmain()//主函數(shù){ intn;//說明用n表示整數(shù) n=sizeof(shortint);//計算類型大小,將所占字節(jié)數(shù)賦值給符號n cout<<"shortint"<<n<<endl;//顯示 n=sizeof(int);//整型 cout<<"int"<<n<<endl;4 n=sizeof(longint);//長整型 cout<<"longint"<<n<<endl; n=sizeof(char);//字符串 cout<<"char"<<n<<endl; n=sizeof(bool);//邏輯型(布爾型) cout<<"bool"<<n<<endl; n=sizeof(float);//浮點型 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是序號,以后要依次替換為2,3,4…10;中間的\n是轉(zhuǎn)義字符,以后依次換為\r,\t,\f等。【思路擴展】輸出9個大小不等的整數(shù),分3行、3列輸出,要求每列的數(shù)據(jù)對齊,如何實現(xiàn)?62.符號常量const<數(shù)據(jù)類型><標識符>=<數(shù)值>;constdoublePI=3.1415926;constintN=3,M=5;行末有分號★#define<標識符><數(shù)值>#definePAI3.1415926行末無分號★用符號常量是編程的好習(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單項特征的表達——變量1.變量的定義inti,j,k;//定義三個整型變量doubleradius,area; //定義兩個雙精度型變量charc1,c2; //定義兩個字符型變量boolflag; //定義一個布爾型變量2.變量的初始化inta=5*2;//復(fù)制初始化inta(5*2);//直接初始化9變量的賦值和使用doublelength,width,area; //變量的定義length=6.0; //變量的賦值width=3.2; //變量的賦值area=length*width; //表達式中使用變量,結(jié)果賦給變量areacout<<area; //area在表達式中被使用變量:定義、賦值、使用★10【例2-3】說明下列程序中的錯誤之處/*example2-3findingerror*///程序注釋#include<iostream>//包含基本輸入輸出庫頭文件usingnamespacestd;//使用名字空間intmain()//主函數(shù){ doublePI=3.1415926; doubler;doublearea; area=PI*r*r; cin>>r; cout<<"area\t"<<area<<endl; return0; //程序結(jié)束,}112.1.3多個相同類型的特征的表示——數(shù)組一個變量表示一個事物的單個特征數(shù)組表示一組相同類型的特征1.向量的表示——一維數(shù)組的定義的使用一維數(shù)組的定義<類型><標識符>[<大小>];constintN=100,M=20;//定義兩個整型常量N和Mdoublelength[30],width[30];//定義兩個數(shù)組length和width,intscore[N*M];//定義數(shù)組score,大小用常量表達式表示,實際大小為200doubleaverage[N]; //定義數(shù)組average,大小用符號常量表示12一維數(shù)組的使用數(shù)組中的元素,下標,下標越界intx[30]; //定義數(shù)組intsum; //定義變量x[0]=1; //將數(shù)組x的第1個元素設(shè)置為1x[1]=3; //將數(shù)組x的第2個元素設(shè)置為3x[2]=5; //將數(shù)組x的第3個元素設(shè)置為5sum=x[0]+x[1]+x[2]; //對數(shù)組的前三個元素求和cout<<sum<<endl; //輸出和cin>>x[0]>>x[1]>>x[2]; //輸入數(shù)組的前三個元素sum=x[0]+x[1]+x[2]; //再次對數(shù)組的前三個元素求和cout<<x[0]<<“”<<x[1]<<“”<<x[2]<<“\n”;//輸出三個元素,用空格隔開,用\n控制換行,與endl效果相同cout<<sum<<endl; //再次輸出和。由于輸入會改變x[0],x[1],x[2]的值,所以這次的和可能會與前面的和不同了13數(shù)組不能整體輸入、輸出intlength[10],width[10]; //定義兩個數(shù)組,中間用逗號隔開cin>>length; //錯誤,數(shù)組不能整體輸入cin>>length[10]; //錯誤,下標超界。使用length[-1]也是錯誤的width=length; //錯誤,數(shù)組不能整體賦值cout<<length; //錯誤,數(shù)組不能整體輸出14一維數(shù)組的初始化<類型><數(shù)組名>[<常量表達式>]={<表達式1>,<表達式2>,...};doublea=11.2,b=21.7;//定義兩個雙精度變量并初始化doubleaverage[30]={21.0,2012.7,7.5+2.3,a*b};//定義數(shù)組并初始化,數(shù)據(jù)項有常量和表達式doubleroom[]={401,402,403,404,405,606,407,408,409,411};一維數(shù)組在內(nèi)存中的存儲按2行存儲(行優(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ù)組,實際只用了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];//對角元素求和cout<<A[0][0]<<""<<A[1][1]<<""<<A[2][2]<<""<<sum<<endl;17二維數(shù)組初始化<類型><數(shù)組名>[<行數(shù)>][<列數(shù)>]={<表達式1>,<表達式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文字信息的表達——字符串1.用字符數(shù)組表示字符串【例2-4】用戶從鍵盤輸入一個四個小寫字母組成的英文單詞,將其轉(zhuǎn)換為大寫,然后顯示到屏幕上?!舅惴ā繉㈤L度為4的小寫字母的單詞轉(zhuǎn)換為大寫。①用字符數(shù)組str表示字符串。②輸入字符串str。③將str的每個元素減去32。④輸出字符串。20【源程序】將長度為4的小寫字母的單詞轉(zhuǎn)換為大寫#include<iostream>//包含需要的頭文件usingnamespacestd;//名字空間intmain()//主函數(shù){ charstr[5];//定義字符數(shù)組用于存放字符串 constintc=32;//定義常量,表示大小寫字母的ASCII值的差 cin>>str;//輸入字符串 str[0]=str[0]-c;//轉(zhuǎn)換第1個字母 str[1]=str[1]-c;//轉(zhuǎn)換第2個字母 str[2]=str[2]-c;//轉(zhuǎn)換第3個字母 str[3]=str[3]-c;//轉(zhuǎn)換第4個字母 cout<<str<<endl;//輸出字符串 return0;}21字符、字符數(shù)組在內(nèi)存中的存儲字符、字符數(shù)組、字符串的聯(lián)系與區(qū)別用字符數(shù)組存儲的字符串可以整體輸入、整體輸入,但不能整體賦值222.用string類型的“變量”表示字符串包含頭文件stringstring<對象1>,<對象2>,...;stringtext1,text2;//定義兩個對象text1="SluicegatesatThreeGorgesDamopenedtodischargewater.";//text2="07-07-201209:04BJT";//使用“=”號為對象賦值stringtext3("HeavyrainsacrosssouthernChinaarepushingwaterlevelsattheThreeGorgesDambeyondthefloodlevellimit.");23使用成員函數(shù)對字符串進行操作<對象>.<函數(shù)名>(<參數(shù)列表>);【例2-5】使用string進行字符串的操作。設(shè)有兩個句子:Heavyrainsarepushingwaterlevelsbeyondthelimit.SluicegatesatThreeGorgesDamopenedtodischargewater.開始由兩個符號表示,請將它們合并為一段文字,然后查找其中的“Heavy”替換為“Strong”,最后顯示處理過的文本。24【源程序】#include<iostream>//包含需要的頭文件#include<string>//使用string類需要包含頭文件stringusingnamespacestd;//名字空間intmain()//主函數(shù){ //定義并初始化字符串對象text1 stringtext1("Heavyrainsarepushingwaterlevelsbeyondthelimit."); stringtext2,text3;//定義但沒有初始化話對象text2,text3 intk;//定義整型變量k25//為對象text2賦值 text2="SluicegatesatThreeGorgesDamopenedtodischargewater."; text3=text1+text2;//使用“+”運算合并兩個字符串,并賦值給text3 k=text3.find(“Heavy”); //在text3中查找“Heavy”,將得到的位置賦給k//將text3中k開始的sizeof("Heavy")-1)個字符刪除//sizeof("Heavy")是計算Heavy占的字節(jié)數(shù),為6,減1是字符個數(shù)text3.erase(k,sizeof("Heavy")-1); //刪除Heavy text3.insert(k,"Strong"); //將在text3中位置k處插入字符串"String" cout<<text3<<endl; //顯示合并、替換后的字符串 return0;}262.2數(shù)據(jù)的運算運算符(操作符)、運算數(shù)(操作數(shù))、表達式表達式可以嵌套2.2.1算術(shù)運算1.算術(shù)運算符、算術(shù)表達式2.算術(shù)符合運算符a+=b;//等價于a=a+b

;a-=b;//等價于a=a-b

;a*=b;//等價于a=a*b

;a/=b;//等價于a=a/b

;a%=b;//等價于a=a%b

;272.2.2關(guān)系運算>(大于)>=(大于等于)<(小于)<=(小于等于)==(等于)!=(不等于)關(guān)系表達式5>3,2+5<4,a+b>c,'a'<'b‘表達式的值bool型,值true,flasetrue,false與1,0,非零,其他表達式值的關(guān)系282.2.3邏輯運算符和表達式&&(與)、||(或)、?。ǚ牵岸搪非笾怠保╯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<<"請輸入年份:"; //提示信息 cin>>year; //輸入年份 result=(year%4==0&&year%100!=0)||(year%400==0);//計算邏輯表達式,結(jié)果賦給邏輯變量result cout<<“閏年判斷結(jié)果:”<<result<<endl;//打印結(jié)果,result為true顯示1,//result為false顯示0 return0;}30【思路擴展】(1)能根據(jù)運行結(jié)果判斷兩個年份是否閏年嗎?(2)看程序的輸出行,其中輸出的是result這個變量,這個變量的值是邏輯值,true或false,而運行結(jié)果卻是1或0。事實上,條件、邏輯表達式的計算結(jié)果實際為一個整數(shù)值,或者為1或者為0。反過來,整數(shù)0可以表示fasle,非0可以表示!false即true。這也是信息的表示問題,是約定。(3)編程判斷用戶輸入的數(shù)是否滿足

,是則顯示1,不是則顯示0。312.2.4自增運算符和自減運算符++,--單目運算inti;++i;i++;【例2-8】請分析下列程序每個語句執(zhí)行后i,j的值是多少?inti=0,j=0;j=++i;j=i++;322.2.5位運算符和位運算表達式1.按位與intx=11,y=7,z;z=x&y

;11的二進制表示:000000000000000000000000000010117的二進制表示:0000000000000000000000000000011100000000000000000000000000001011&00000000000000000000000000000111--------------------------------------------------------------00000000000000000000000000000011則,z=x&y的結(jié)果十進制表示為3。33【思考題】能否通過“與”運算使一個數(shù)的指定位為1或為0?如果不能為什么?如果能,如何實現(xiàn),請舉例說明。342.按位或intx=11,y=7,z;z=x|y

;00000000000000000000000000001011|00000000000000000000000000000111

---------------------------------------------------------00000000000000000000000000001111則,z=x|y的結(jié)果的十進制表示為15。按位或運算可以方便地將一個數(shù)的某些二進制位設(shè)置為1。如果兩個數(shù)代表兩個集合,則“或”運算相當于它們的“并”運算353.按位異或intx=11,y=7,z;z=x^y

;00000000000000000000000000001011^00000000000000000000000000000111

----------------------------------------------------------00000000000000000000000000001100則,z=x^y的結(jié)果十進制表示為12。在同一數(shù)據(jù)上兩次異或一個值,結(jié)果變回原來的值364.按位取反intx=11,z;z=~x

;~00000000000000000000000000001011-----------------------------------------------------------z11111111111111111111111111110100375.左移位運算intx=179,z;z=x<<4;00000000000000000000000010110011<<400000000000000000000101100110000結(jié)果z的十進制形式為2864。一個數(shù)每左移一位,相當于將這個數(shù)乘以2。左移運算常和按位或運算一起使用,用于將兩個數(shù)的內(nèi)容拼接在一起。386.右移位運算intx=179,z;z=x>>3;00000000000000000000000010110011>>300000000000000000000000000010110結(jié)果z的十進制形式為22。一個數(shù)每右移一位,相當于將這個數(shù)除以2。右移運算常和按位與運算一起使用,用于從一個數(shù)中分離出某些二進制位。例如,取x的第三個字節(jié),可以將其右移八位,和0x00FF做“與”運算。39【例2-9】判斷文件屬性的模擬。用戶從鍵盤輸入[0,63]內(nèi)的整數(shù),表示一個文件的屬性,從低位開始,它的每個二進制位一次表示只讀位、隱藏位、系統(tǒ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個變量并初始化,//表示各屬性位的位權(quán) cin>>attribute; //輸入屬性字節(jié)的十進制值41 //"與"運算保留了相應(yīng)位的值。"=="運算比較是否與該位為1時的值相等。 //相等表示該屬性有效,結(jié)果為true,顯示效果為1; //不相等表示該位無效,結(jié)果為fasle,顯示效果為0。cout<<"只讀:"<<((attribute&a0)==a0)<<endl;cout<<"隱藏:"<<((attribute&a1)==a1)<<endl; cout<<"系統(tǒng):"<<((attribute&a2)==a2)<<endl; cout<<"卷標:"<<((attribute&a3)==a3)<<endl; cout<<"目錄:"<<((attribute&a4)==a4)<<endl; cout<<"歸檔:"<<((attribute&a5)==a5)<<endl; cout<<endl; return0;}42【程序驗證】題目要求輸入的數(shù)在0-63之間,但程序中并沒有體現(xiàn)這一限制。如果輸入167,也能輸出結(jié)果,這一結(jié)果是怎么計算出來的呢?如果輸入負數(shù)呢?怎么解決這一問題呢?怎樣讓用戶知道輸入是否正確呢?【思路擴展】一個變量表示一個數(shù)或字符。一個位可以表示兩種狀態(tài)事物的一種狀態(tài),例如開關(guān)的“開”或“關(guān)”狀態(tài)。如果用一位表示一個開關(guān),控制一盞燈,那么一個字節(jié)就可以控制8盞等,一個整型變量就可以控制32盞等。用多個整型變量就可以控制更多的等。請同學(xué)們想一想,位運算還可以用在什么地方呢?437.復(fù)合位運算符442.2.6三目條件運算符45<邏輯表達式>

?<表達式1>

:<表達式2>doublet

;inty

;y=(t>=0

?1

:0);【例2-10】100以內(nèi)整數(shù)加法練習(xí)系統(tǒng)。編寫程序,自動產(chǎn)生兩個小于100的整數(shù),顯示給用戶,并讓用戶輸入它們的和。如果用戶計算正確,顯示“正確,祝賀!”,如果不正確,顯示“錯誤,加油啊”。?自動產(chǎn)生小于100的整數(shù)?46【源程序】#include<iostream>//包含頭文件cout,cin需要#include<cmath>//包含頭文件,rand()需要usingnamespacestd;//名字空間intmain()//主函數(shù){ inta,b,c;//分別表示兩個數(shù)及它們的和 intinput;//存放用戶輸入的和 charright[]="正確,祝賀!";//保存字符串 charwrong[]="錯誤,加油啊!";//保存字符串 a=rand()%100;//產(chǎn)生小于100的隨機數(shù) b=rand()%100;//產(chǎn)生小于100的隨機數(shù)47 c=a+b;//計算和 cout<<a<<"+"<<b<<"=?";//顯示兩個數(shù)并提示用戶輸入 cin>>input;//用戶輸入的和 cout<<(input==c?right:wrong);//根據(jù)正確與否顯示不同的信息 input==c?cout<<right:cout<<wrong;// cout<<endl; return0;}?隨機數(shù),偽隨機數(shù),隨機數(shù)種子#include<ctime>srand(time(0));rand();482.2.7運算符的優(yōu)先級小括號、下標、訪問對象單目運算算術(shù)運算比較運算邏輯運算?號運算符合運算表2-3結(jié)合方向好習(xí)慣:運用小括號492.2.8不同類型數(shù)據(jù)的混合運算char→int→unsigned→long→unsignedlong→float→double相同類型數(shù)據(jù)的運算強制類型轉(zhuǎn)換inta;charb;a=65;b='a';cout<<(char)a<<int(b);502.3程序設(shè)計實例【例2-11】海倫公式計算三角形的面積。用戶輸入三角形的三條邊長a,b,c,用海倫公式計算三角形的面積。

其中,,三邊長可能為實數(shù)。提示:?51【算法描述】海倫公式計算三角形的面積用a,b,c表示三角形的三個邊長。①輸入a,b,c三個數(shù);②計算s=(a+b+c)/2;③計算面積

;④輸入面積A。52【源程序】#include<iostream>//包含基本輸入輸出庫頭文件#include<cmath>usingnamespacestd;//使用名字空間

intmain()//主函數(shù){ doublea,b,c;//定義雙精度變量 doubles,A; cout<<"Pleaseinputthreeedgesa,b,c=";//輸入提示 cin>>a>>b>>c; //輸入 s=(a+b+c)/2.0; //計算s A=sqrt(s*(s-a)*(s-b)*(s-c)); //計算面積 cout<<"Theareais"<<A<<endl; //打印面積return0; //程序結(jié)束,}53【思考題】①計算s的右邊的表達式注意什么問題,還可以怎樣書寫?②程序中怎么有兩個a(一個大寫A,一個小寫a)呢?54【例2-12】構(gòu)造一個5位數(shù)的反序數(shù)。例如,用戶輸入12345,構(gòu)造出54321并輸出?!舅惴枋觥繕?gòu)造5位的反序數(shù)。用n表示輸入的原5位數(shù),用m表示構(gòu)造出的新5位數(shù)。①輸入五位數(shù)n;②依次分離出個位、十位、百位、千位和萬位,分別用a,b,c,d,e表示;③用式子(((a*10+b)*10+c)*10+d)*10+e構(gòu)造新的五位整數(shù);④輸出新數(shù)。55【源程序】#include<iostream>//包含基本輸入輸出庫頭文件#include<cmath>usingnamespacestd;//使用名字空間

intmain()//主函數(shù){ intn,m;//n,m表示輸入的數(shù)和反序后的數(shù) chara,b,c,d,e;//分別表示原數(shù)的個、十、百、千、萬位 cout<<"Pleaseinputafive-digitnumber";//輸入提示 cin>>n;//輸入一個五位整數(shù) a=n%10;//分離個位 n=n/10; b=n%10; //分離個十位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【思路擴展】(1)e和最后的n有什么關(guān)系?最后的求余有必要嗎?(2)本例中,不用n=n/10;這種方式,分離十位還可以寫成b=n/10%10,類似地,分離其他位呢?(3)有興趣的同學(xué)可以考慮:用戶任意輸入一個數(shù),構(gòu)造其反序數(shù)并輸出。(4)如果一個數(shù)的反序數(shù)與它相等,那么這就是一個回文數(shù)。修改上面的程序,判斷用戶輸入的數(shù)是不是回文數(shù)。58【例2-13】一位數(shù)的整數(shù)形式和ASCII形式的轉(zhuǎn)換。編寫程序,用戶輸入一位數(shù),存入整型變量,然后將其轉(zhuǎn)換為字符存入字符型變量,打印字符變量及其代表字符的ASCII值。整型轉(zhuǎn)換為字符型是什么意思?1整型——1,字符型——49用途:例如輸入一句話“西安城墻景區(qū)門票目前為40元,擬上漲至55元,問上漲的百分比是多少?”請自動計算注意,在句子中“40”,“50”是字符型的59【源程序】#include<iostream>//包含基本輸入輸出庫頭文件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ù)值(將一個字符型的數(shù)字,轉(zhuǎn)換為一個整型的數(shù)字)。(2)使用集成環(huán)境的跟蹤功能,觀察int和char型數(shù)據(jù)在內(nèi)存中的值。612.3.4啟閉指定設(shè)備【例2-14】大型超市中,在顧客不是很多時,收銀臺經(jīng)常是隔一個打開一個。設(shè)這些收銀臺除操作員密碼外,還由控制室統(tǒng)一控制,只有控制室打開該設(shè)備后操作員才能使用。設(shè)每個設(shè)備用一個二進制位表示,1表示開啟,0表示關(guān)閉。用戶輸入一個無符號整數(shù)表示初始的狀態(tài),編寫程序分別將這個數(shù)的二進制的奇數(shù)位置成0和置成1(從最低位開始為第1位),以十六進制形式打印設(shè)置后的兩個數(shù)。62【算法描述】①輸入無符號整數(shù)a②設(shè)奇數(shù)位為0的數(shù)為odd0=0x55555555,奇數(shù)位為1的數(shù)為odd1=0xAAAAAAA③將a分別與odd0,odd1做“與”運算和“或”運算,結(jié)果用a0,a1表示;④輸出a0,a1的十六進制形式。63#include<iostream>//包含基本輸入輸出庫頭文件usingnamespacestd;//使用名字空間

intmain()//主函數(shù){ unsignedinta; //聲明無符號整型變量,保存原數(shù) unsignedintodd0=0x55555555;//奇數(shù)位0

溫馨提示

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

評論

0/150

提交評論