高級語言程序設計(CC++版) 課件 第2章 順序結構_第1頁
高級語言程序設計(CC++版) 課件 第2章 順序結構_第2頁
高級語言程序設計(CC++版) 課件 第2章 順序結構_第3頁
高級語言程序設計(CC++版) 課件 第2章 順序結構_第4頁
高級語言程序設計(CC++版) 課件 第2章 順序結構_第5頁
已閱讀5頁,還剩16頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章

順序結構目錄常量運算符與表達式數據類型轉換scanf/printf輸入輸出本章實例216:121.常量在C++語言中,數據分為常量和變量兩大類。常量和變量均有類型之分,常量按照不同的數據類型可分為整型常量、浮點型常量、字符常量以及字符串常量等。1.整型常量:1、0、-1、0b1011(二進制)、012(八進制)、0x12(十六進制)等。2.實型常量:實型常量存在小數形式和指數形式兩種形式。(1)小數形式,由數字和小數點組成,如1.23、0.2、.2、2.、0.0、-3.45等。(2)指數形式,如1.234e5(表示1.234*105)、2E9(2*109)、-3.45E-6(-3.45*10-6)等。3.字符常量:字符常量含有普通字符和轉義字符兩種形式。(1)普通字符,只能用英文單引號括起來的一個字符。如'A'、'a'、'0'、'#'、'*'等。(2)轉義字符,所有的ASCII碼均可用'\ddd'(1~3位八進制數字)形式來表示。4.字符串常量:由雙引號括起來的0個或者多個字符序列,如"china"、"123"等。常量可使用常變量的方式實現,定義常變量的一般格式為:const變量類型標識符=初始值;3返回轉義字符字符含義輸出效果\'一個單引號輸出單引號\"一個雙引號輸出雙引號\?一個問號輸出問號\\一個反斜杠輸出反斜杠\a警告發出警告聲音\b退格光標后退一個字符\n換行光標移至下一行開頭\r回車光標移至本行開頭\t水平制表符光標移至下一個TAB位置\v垂直制表符光標移至下一個垂直制表對齊位\ddd1~3位八進制數與該八進制對應ASCII碼的字符輸出對應ASCII碼的字符\xhh1~2位十六進制數與該十六進制對應ASCII碼的字符輸出對應ASCII碼的字符16:12在C語言中,合法的實型常數是_________。A.5E2.0 B.E-3 C.2E0 D.1.3E在C語言中,合法的實型常數是__________。A.1.2E0.5 B.3.14E C.5E-3 D.E15以下選項中合法的用戶標識符是__________。A.long B._2Test C.3Dmax D.A.dat在C語言中,非法的字符常量是__________。A.‘\t’ B.‘\17’ C."\n" D.‘\xaa’以下不合法的字符常量是__________。A.‘\018’ B.‘\"’ C.‘\\’ D.‘\xcc’416:122.運算符與表達式常用的運算符包括算術運算符、比較運算符、位運算符、邏輯運算符、賦值運算符、自增和自減運算符等。由運算符、操作數和括號構成的式子稱為表達式。算術運算符與算術表達式:由常量、變量、函數、圓括號和算術運算符+、-、*、/、%等組成的式子。一個常量、一個變量(已賦過值)、一個函數都是合法的表達式。賦值運算符與賦值表達式:“=”的作用是將某一數值賦給某個變量。由“=”將一個變量和一個表達式連接起來的式子稱為賦值表達式,賦值表達式的末尾加上分號就構成賦值語句。賦值表達式的值就是執行賦值操作后的變量取值。自增運算符與自減運算符:“++”為自增運算符,其作用是使變量的值加1,“--”為自減運算符,其作用是使變量的值減1。此兩種運算符只能用于數值類型的變量,不能用于非數值類型變量、常量、表達式和函數調用。++可以置于變量之前,也可放在變量之后。“++i”指“i自增1后再參與其它運算”;“i++”則指“i參與運算后其值再自增1”。5返回16:12位運算符位運算符用來對二進制位進行操作,其操作數只能為整型和字符型數據。位運算符中,除“~”以外,其余均為雙目運算符。1.按位與運算&:雙目運算符,參加運算的兩個數以補碼形式按二進制位進行“與”運算。運算規則:0&0=0;0&1=0;1&0=0;1&1=1;即兩位同時為1結果才為1,否則為0。例如:3&5=1,即00000011&00000101=00000001。常用于保留或清零指定位。2.按位或運算|:雙目運算符,參加運算的兩個數以補碼形式按二進制位進行“或”運算。運算規則:0|0=0;0|1=1;1|0=1;1|1=1;即兩位只要有一個為1結果為1,否則為0。例如:3|5=7,即00000011|00000101=00000111。常用于對某些指定位置1。

3.按位異或運算^:雙目運算符,兩個數以補碼形式按二進制位進行“異或”運算。運算規則:0^0=0;0^1=1;1^0=1;1^1=0;即兩位相異結果為1,否則為0。例如:3^5=6,即00000011^00000101=00000110。常用于使特定位翻轉(對應位與1異或)。616:12位運算符(續)

4.按位取反運算~:單目運算符,用于對一個整數以補碼形式按二進制位取反,1變為0,0變為1。例如~9的運算為:~(00001001)=11110110。5.左移運算<<:雙目運算符,其功能是將運算符“<<”左邊的數按二進制位左移,參與運算的數以補碼形式參加左移運算。

“m<<n”表示把m按二進制位補碼形式左移n位。左移n位的時候,最左邊的n位將被丟棄,同時在最右邊補上n個0。如:00001010<<2=00101000,10001010<<3=01010000。6.右移運算>>:雙目運算符,其功能是將運算符“>>”左邊的數按二進制位右移,參與運算的數以補碼形式參加右移運算。“m>>n”表示把m按二進制位補碼形式右移n位。右移n位的時候,最右邊的n位將被丟棄。但右移時處理最左邊位的情形要稍微復雜一點:若m是一個正數或無符號數,則最左邊的n位用0填補;若m是一個有符號負數,則最左邊的n位補0還是補1取決于所用的計算機系統,補0的稱為“邏輯右移”(不保留符號),補1的稱為“算術右移”(保留符號)。以算術右移為例:00001010>>2=00000010,10001010>>3=11110001。716:12運算符的優先級8運算符及含義運算種類結合方向.(對象成員)->(指針)[](數組下標)()(函數調用)

從左向右++(自增)

--(自減)

(typecast)(強制類型轉換)sizeof(求類型長度)

~(按位取反)

!(邏輯非)

+(正號)

-(負號)

*(指針)

&(取地址)*(取值運算符)

&(取地址運算符)

newdelete單目運算從右向左*(乘法)/(除法)%(取余)雙目運算從左向右+(加法)-(減法)雙目運算從左向右<<(左移)>>(右移)雙目運算從左向右>(大于)<(小于)>=(大于等于)<=(小于等于)雙目運算從左向右==(判斷相等)!=(判斷不等)雙目運算從左向右&(按位與)雙目運算從左向右^(異或)雙目運算從左向右|(按位或)雙目運算從左向右&&(條件與)雙目運算從左向右||(條件或)雙目運算從左向右?:(條件運算符)三目運算從右向左=*=/=%=+=-=&=|=^=>>=<<=雙目運算從右向左,

從左向右16:123.數據類型轉換數據類型轉換就是將數據(變量、表達式的值)從一種數據類型轉換為另一種數據類型。數據類型轉換包括自動類型轉換和強制類型轉換兩種情形。自動類型轉換:在不同數據類型的混合運算中,編譯器會隱式地進行數據類型轉換,這種隱式進行的類型轉換稱為自動類型轉換。自動類型轉換遵循以下原則:(1)如果參與運算的數據類型不同,那么先轉換成同一類型再進行運算。(2)轉換朝著數據長度增加的方向進行,以保證精度不降低。(3)在賦值運算中,賦值號兩邊的數據類型不相同時,將把右邊表達式值的類型轉換為左邊變量的類型。若右邊表達式的數據類型長度比左邊長,則會丟失部分數據。(4)在賦值語句中,賦值號兩邊數據類型一定是相兼容的類型,否則編譯時會報錯。強制類型轉換:自動類型轉換不能實現目的時,可以利用強制類型轉換將一個表達式轉換成所需類型,這種顯式進行的類型轉換稱為強制類型轉換。一般形式為:(類型名)(表達式)9返回16:12例2.1:輸入一個字符,將其對應的ASCII碼值乘以2再輸出。#include<iostream>usingnamespacestd;intmain(){ charc; //字符數據以ASCII碼存儲,可看作是長度和范圍更小的整型。 cin>>c; inta=c; //字符變量c的值與整型兼容,可直接將該值賦給變量a cout<<a*2<<endl; return0;}1016:12例2.2:小明買了一箱蘋果共有n個,很不幸的是箱子里混進了一條蟲子。蟲子每x小時能吃掉一個蘋果,假設蟲子在吃完一個蘋果之前不會吃另一個,那么經過y小時后這箱蘋果中還有多少個蘋果沒有被蟲子吃過?#include<iostream>#include<cmath>usingnamespacestd;intmain(){ intn,x,y,eat_int,rest; cin>>n>>x>>y; doubleeat_dou=1.0*y/x;

//本句可改為:doubleeat_dou=(double)y/x; eat_int=ceil(eat_dou); if(eat_int<n)rest=n-eat_int; elserest=0; cout<<rest<<endl; return0;}1116:124.scanf/printf輸入輸出C++語言兼容C語言的基本語法語句,C++程序同樣可使用C中的scanf/printf語句完成數據的輸入輸出語句,其效率優于cin/cout方式的輸入輸出。對于不同數據類型變量和表達式的輸入輸出,scanf/printf語句有嚴格對應的配對格式控制,使用前需包含頭文件cstdio。printf格式輸出函數:用于向輸出設備輸出數據,printf函數調用的一般格式為:printf(格式控制字符串,輸出列表)其中,格式控制字符串是雙引號括起來的一個字符串,用于指定輸出格式,由格式字符串和非格式字符串組成。非格式字符串是在輸出時需要原樣輸出的字符串。格式字符串是以%開頭的字符串,%后跟著各種格式字符以說明輸出數據的類型、長度、小數位數等。scanf格式輸入函數:用于從輸入設備輸入數據,scanf函數調用的一般格式為:scanf(格式控制字符串,地址列表)其中,格式控制字符串的作用與printf函數相同;地址列表中給出各變量的地址,地址是由取地址符“&”后跟變量名組成。12返回16:12printf函數格式字符串和各輸出項在數量和類型上必須一一對應。printf函數的格式符見表2.4。格式字符串中,在%和上述格式字符間可以插入格式修飾符。常見的格式控制字符串用法舉例如下:(1)%5d:5位數,右對齊。不足5位用空格補齊,超過5位按實際位數輸出。(2)%-5d:5位數,左對齊。不足5位用空格補齊,超過5位按實際位數輸出。(3)%.2f:保留2位小數。如果小數部分超過2位就四舍五入,否則用0補全。(4)%8.2lf:以小數形式輸出雙精度浮點型數據,寬度為8精度為2。13printf(格式控制,輸出列表)printf("i=%d,c=%c\n",i,c)普通字符格式聲明格式控制

輸出列表格式符說明%d(或%i)輸出帶符號十進制整數(正數不輸出符號)%x(或%X)輸出無符號十六進制整數(不輸出前綴0x)%o輸出無符號八進整數(不輸出前綴0)%u輸出無符號十進制整數%f以十進制形式輸出單、雙精度實數(缺省保留6位小數)%e(或%E)以指數形式輸出單、雙精度實數(缺省保留6位小數)%g(或%G)自動選用%f或%e中較短的輸出寬度輸出單、雙精度實數%c輸出單個字符%s輸出字符串%%輸出%格式修飾符說明l長整型整數,可加在格式字符d、o、x、u之前m一個正整數,代表數據寬度(如“printf("%8.2lf",a)”中的m就是8)n對實數表示輸出的精度,對字符串表示截取的字符個數(上例中n是2)-向左對齊16:12若shortint類型占兩個字節,則以下程序輸出為(

)。

shortintk=-1;

printf(“%hd,%hu\n”,k,k);A.-1,-1 B.-1,65536 C.-1,32768 D.-1,655351416:12scanf函數其中,格式控制字符串的作用與printf函數相同;地址列表中給出各變量的地址,地址是由取地址符“&”后跟變量名組成。scanf函數的格式符及修飾符見表2.6和表2.7。15scanf(格式控制,地址列表)scanf("a=%f,b=%f,c=%f",&a,&b,&c);普通字符格式聲明格式控制

地址列表格式符說明%d(或%i)輸入有符號十進制整數%u輸入無符號十進制整數%o輸入無符號八進制整數%x(或%X)輸入無符號十六進制整數%c輸入單個字符%s輸入字符串到字符數組(非空格開始,第一個空格結束,附‘\0’為最后一個字符)%f輸入實數,可以用小數形式或指數形式輸入%e,%E,%g,%G與上同,此處e、g作用與f相同,且e、g不區分大小寫格式修飾符說明h輸入短整型數(可用%hd,%ho,%hx)l輸入長整型數(可用%ld,%lo,%lx,%lu),以及double型數(%lf,%le)m一個正整數,指定輸入數據所占寬度*表示本輸入項不賦給相應的變量16:12例2.4:輸入兩個浮點數a,b,輸出其相加、相減、相乘的結果。#include<iostream>usingnamespacestd;intmain(){ doublea,b; scanf("%lf%lf",&a,&b); printf("%.2lf\n",a+b); printf("%.2lf\n",a-b); printf("%.2lf\n",a*b); return0;}1616:12例2.5:輸入一個公民身份證號,輸出該公民的出生日期。輸入:公民身份證號。

輸出:年月日(YYYY-MM-DD)。樣例輸入樣例輸出:1979-04-06 #include<iostream>usingnamespacestd;intmain(){ intyear,month,day; scanf("%*6d%4d%2d%2d%*d",&year,&month,&day); printf("%04d-%02d-%02d",year,month,day); return0;}1716:12putchar函數:從計算機向顯示器輸出一個字符18putchar(c)【例】先后輸出BOY三個字符。解題思路:定義3個字符變量,分別賦以初值′B′,′O′,′Y′,然后用putchar函數輸出這3個字符變量的值。#include<stdio.h>intmain(){ chara='B',b='O',c='Y'; //定義3個字符變量并初始化

putchar(a); //向顯示器輸出字符B putchar(b); //向顯示器輸出字符O putchar(c); //向顯示器輸出字符Y putchar('\n'); //向顯示器輸出一個換行符

return0;}#include<stdio.h>intmain(){

inta=66,b=79,c=89;

putchar(a); putchar(b); putchar(c);

putchar('\n');

return0;}用putchar函數既可以輸出可顯示字符,也可以輸出控制字符和轉義字符。putchar(c)中的c可是字符常量、整型常量、字符變量或整型變量(其值在字符的ASCII代碼范圍內)。16:12getchar函數:向計算機輸入一個字符19getchar()【例】從鍵盤輸入BOY3個字符,然后將其輸出到屏幕。解題思路:用3個getchar函數先后從鍵盤向計算機輸入BOY3個字符,然后用putchar函數輸出。#include<stdio.h>intmain(){ chara,b,c; //定義字符變量a,b,c a=getchar(); //從鍵盤輸入一個字符,送給字符變量a b=getchar(); //從鍵盤輸入一個字符,送給字符變量b

溫馨提示

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

評論

0/150

提交評論