C++高中信息學科競賽必備第2章基礎(chǔ)概念_第1頁
C++高中信息學科競賽必備第2章基礎(chǔ)概念_第2頁
C++高中信息學科競賽必備第2章基礎(chǔ)概念_第3頁
C++高中信息學科競賽必備第2章基礎(chǔ)概念_第4頁
C++高中信息學科競賽必備第2章基礎(chǔ)概念_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章第二章 基礎(chǔ)概念基礎(chǔ)概念第一節(jié)常量和變量第一節(jié)常量和變量第二節(jié)標準數(shù)據(jù)類型第二節(jié)標準數(shù)據(jù)類型第三節(jié)運算符和表達式第三節(jié)運算符和表達式第四節(jié)賦值語句第四節(jié)賦值語句第五節(jié)第五節(jié) 數(shù)據(jù)輸入輸出數(shù)據(jù)輸入輸出第一節(jié)常量和變量第一節(jié)常量和變量常量常量 一、常量常量是指在程序中使用的一些具體的數(shù)、字符。在程序運行過程中,其值不能被更改。如123,145.88,m,TRUE等。1、整型常量:如3、-5、0等。 整型常量是表示整數(shù)的常量。有三種表示形式: 1)十進制形式。如99、-1。 2)八進制形式。以數(shù)字0打頭,由0-7構(gòu)成,如012,表示八進制整數(shù)12,即(12)8。 3)十六進制形式。以0 x打頭

2、,如0 x12A,表示十六進制整數(shù)12A,即(12A)16。2、實型常量:日常表示法 如3.1 、-9.87、-30科學計數(shù)法 、-6.1E+2 例:請將下面的數(shù)用科學計數(shù)法表示 2600 0.045 -0.00863、字符常量:是用單引號括起來的字符,如 k 、5 、%。注意:a與a表示的含義是不同的,a表示一個字符常量,a表示一個字符串。常量常量 4、字符串常量: 字符串常量又稱字符串,是用一對雙引號(英文)括起來的字符序列。例如”hello world!”,”please input a = ”。小說明 :字符串和字符在內(nèi)存中的存儲形式不同,字符串除了按字符的順序存放之外,還會在末尾加上

3、符號0,用以表示字符串的結(jié)束。因此字符串在內(nèi)存中占有的字符數(shù)為字符個數(shù)+1。注意:字符串的長度仍然注意:字符串的長度仍然是包含字符的個數(shù)。是包含字符的個數(shù)。 5、布爾常量 布爾常量僅有兩個false和 true,即0和1;常量的定義常量的定義 一個常量可以直接調(diào)用(如124,A),也可以給常量取個名字用一個標識符代表它,這就是符號常量。其語法格式為: const 類型說明符 符號常量=常量字串;例如: const double PI=3.1415926;const int INFINITY = 65000;const char GOOD=A;const string SCHOOL=“sdshi

4、yan”;const bool FLAG = true;例2.5 輸入半徑r,求圓的周長及面積。#include /調(diào)用iostream庫,否則使用printf和scanf語句編譯出錯using namespace std; /這個程序可省略這行const double PI=3.1415926; /PI是符號常量。代表3.1415926int main() float r,c,s; /定義實型變量 printf(r=); /顯示提示符r= scanf(%f,&r); /輸入r的值,&符號不能漏掉 c=2*PI*r; /計算圓的周長 s=PI*r*r; /計算圓的面積 prin

5、tf(c=%.2f s=%.2fn,c,s); /顯示計算結(jié)果,結(jié)果保留2位小數(shù) 程序中定義的PI代表常量3.1415926,在編譯源程序時,遇到PI就用常量3.1415926代替,PI可以和常量一樣進行運算。C+語言規(guī)定,每個符號常量的定義占據(jù)一個書寫行,而且符號常量不能被再賦值。如果在例2.5中使用以下賦值語句是錯誤的。 PI=3.1415926; 習慣上,符號常量名用大寫,而變量名用小寫,以便于區(qū)別。使用符號常量的好處:1)增加了程序的可讀性。如看到例2.5程序中,見到PI就可知道它代表圓周率,定義符號常量名時應該盡量使用見名知意的常量名。2)增加了程序的易改性。如例2.5程序中,只需改

6、動一處,程序中的所有PI都會自動全部代換,做到“一改全改”。變量定義變量定義變量代表了一個存儲單元,其中的值是可以改變的,因此稱為變量。如游戲中玩家命的條數(shù)最初為3,當你死了一次,命減少一條,這里命的條數(shù)就是一個變量(或者說命的條數(shù)存儲在一個存儲單元中)。一個程序中可能要使用到若干個變量,為了區(qū)別不同的變量,必須給每個變量(存儲單元)取一個名(稱為變量名),該變量(存貯單元)存儲的值稱為變量的值,變量中能夠存儲值的類型為變量的類型。例如游戲中用于存儲“命”的變量,在游戲程序中的存儲命的變量名可取為life,它的類型為整型,游戲初始時這個變量的值為3。w變量名變量名 用一個合法的標識符代表一個變

7、量。如n,m,rot,total 等都是合法變量名。在程序中用到的變量要“先定義后使用”,變量名應遵循自定義標識符的命名規(guī)則,并建議使用“見名知義”的原則,即用一些有意義的單詞作為變量名。在C+語言,變量名大小寫有區(qū)別。用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標識符。C+語言規(guī)定,標識符只能由字母(包含下劃線“_”)開頭,后面的字符可以是字母或數(shù)字。對于標識符的長度,不同的C+語言編譯器有不同的規(guī)定,考慮到系統(tǒng)的可移植性,建議變量名的長度不要超過8個字符。例如:month、_age、s2為合法的標識符;m.k.jack、a=b、9y為不合法的標識符。 定義變

8、量的語法格式為:定義變量的語法格式為:數(shù)據(jù)類型數(shù)據(jù)類型 變量表變量表例如:int i=5,j,k; /定義i,j,k為整型變量, /i賦初值為,5j,k的初值未知。 char a,b,c; /定義a,b,c為字符變量 float x,y,z; /定義x,y,z為實型變量C+語言允許在定義變量的同時為變量賦初值。w變量的類型變量的類型 常量是有類型的數(shù)據(jù),變量在某一固定時刻用來存儲一個常量,因此也應有相應的類型。如整型變量用來存儲整數(shù),實型變量用來存儲實數(shù)。變量的類型,可以是標準數(shù)據(jù)類型int、short、long、float、double和char等,也可以是用戶自定義的各種類型。變量一經(jīng)定義

9、系統(tǒng)就在計算機內(nèi)存中為其分配一個存儲空間。在程序中使用到變量時,就在相應的內(nèi)存中存入數(shù)據(jù)或取出數(shù)據(jù),這種操作稱為變量的訪問。 第二節(jié)標準數(shù)據(jù)類型第二節(jié)標準數(shù)據(jù)類型C+語言提供了豐富的數(shù)據(jù)類型,本節(jié)介紹幾種基本的數(shù)據(jù)類型:整型、實型、字符型。它們都是系統(tǒng)定義的簡單數(shù)據(jù)類型,稱為標準數(shù)據(jù)類型。整型(整型(integer) 數(shù)據(jù)類型數(shù)據(jù)類型定義標識符定義標識符占字節(jié)數(shù)占字節(jié)數(shù)數(shù)值范圍數(shù)值范圍數(shù)值范圍數(shù)值范圍短整型短整型short intshort int2(162(16位位) )-32768-327683276732767-2-215152 21515-1-1整型整型long intlong int

10、4(324(32位位) )-2147483648-214748364821474836472147483647-2-231312 23131-1-1長整型長整型long intlong int4(324(32位位) )-2147483648-214748364821474836472147483647-2-231312 23131-1-1超長整型超長整型long long intlong long int8(648(64位位) )-9223372036854775808-922337203685477580892233720368547758079223372036854775807-2-26

11、3632 26363-1-1無符號整型無符號整型 unsigned intunsigned int2(162(16位位) )0 065535655350 02 21616-1-1無符號短整型無符號短整型unsigned short unsigned short intint2(162(16位位) )0 065535655350 02 21616-1-1無符號長整型無符號長整型unsigned long unsigned long intint4(324(32位位) )0 0429496729542949672950 02 23232-1-1無符號超長整無符號超長整型型unsigned long

12、 unsigned long long long 8(648(64位位) )0 018446744073709551615184467440737095516150 02 26464-1-1 在C+語言中,整型類型標識符為int。根據(jù)整型變量的取值范圍又可將整型變量定義為以下8種整型類型:實型(實型(real) 一個實型數(shù)據(jù)用來存儲實數(shù),實型包括正實數(shù)、負實數(shù)和零。C+語言中表示實型常量的形式有兩種。 十進制表示法這是人們?nèi)粘J褂玫膸?shù)點的表示方法。如3,0.0, +5.61,-8.0,-6.050等都是實型常量。 科學記數(shù)法科學記數(shù)法是采用指數(shù)形式的表示方法,如1.25105可表示成1.2

13、5E+05。在科學記數(shù)法中,字母E表示10這個底數(shù),而E之前為一個十進制表示的小數(shù),稱為尾數(shù),E之后必須是一個整數(shù),稱為指數(shù)。 如-1234.56E+26,+0.268E-50,1E5是合法形式,而E5,E,1.2E+0.5都不是合法的實數(shù)。C+語言支持三種實型,它們是float(單精度實型)、double(雙精度實型)、long double(長雙精度實型)。每一種類型規(guī)定了相應的實數(shù)取值范圍、所使用的存儲空間(字節(jié)數(shù))以及能達到的精度(有效位數(shù))。float在空間允許的情況下沒有必要使用,都應使用double提高精度。 表表2-2實型數(shù)取值范圍實型數(shù)取值范圍數(shù)據(jù)類型數(shù)據(jù)類型定義標識定義標識

14、符符數(shù)值范圍數(shù)值范圍占字占字節(jié)數(shù)節(jié)數(shù)有效位數(shù)有效位數(shù)單精度實單精度實型型floatfloat-3.4E-38-3.4E-383.4E+383.4E+384(324(32位位) )6 67 7位位雙精度實雙精度實型型doubledouble-1.7E+308-1.7E+3081.7E+3081.7E+3088(648(64位位) )15151616位位長雙精度長雙精度實型實型long long doubledouble-3.4E+4932-3.4E+49321.1E+49321.1E+493216(1216(128 8位位) )18181919位位布爾變量布爾變量boolbool真真truetr

15、ue或假或假falsefalse之一之一1(81(8位位) )字符型(字符型(char) 轉(zhuǎn)義字符轉(zhuǎn)義字符含義含義nn換行換行tt水平制表水平制表bb退格退格rr回車(不換行)回車(不換行)00空字符空字符 單引號單引號” 雙引號雙引號一個反斜杠字符一個反斜杠字符dddddd1 13位八進制數(shù)所代表的字符位八進制數(shù)所代表的字符xhhxhh1 12位十六進制數(shù)所代表的字符位十六進制數(shù)所代表的字符三、字符型字符常量有以下兩種表示法: 1、普通表示形式字符常量是由單個字符組成,所有字符采用ASCII編碼,ASCII編碼共有128個字符(表2-4)。在程序中,通常用一對單引號將單個字符括起來表示一個字

16、符常量。如:a,A,0等。如字符A的序號是65,字符a的序號是97, 字符0的序號的48。2、轉(zhuǎn)義字符表示形式。轉(zhuǎn)義字符有三種用法:表示控制字符、表示特殊字符、表示所有字符。常用的轉(zhuǎn)義字符如右表所示。ASCII編碼表見下圖:序號字符序號字符序號字符序號字符序號字符序號字符32空格4806480P96112p33!49165A81Q97a113q34”50266B82R98b114r35#51367C83S99c115s36$52468D84T100d116t37%53569E85U101e117u38&54670F86V102f118v3955771G87W103g119w40(568

17、72H88X104h120 x41)57973I89Y105i121y42*58 : 74J90Z106j122z43+59;75K91107k12344,6078N94110n12647/63?79O95_111o127deL例2.6 字符變量的賦值舉例#includeusing namespace std;int main() int c1,c3; char c2,c4; c1=A; /把字符常量賦值給整型變量c1 c2=65; /把整型常量賦值給字符變量c2 c3=x41; /把用十六進制表示的轉(zhuǎn)義字符常量賦值給整型變量c3 c4=101; /把用八進制表示的轉(zhuǎn)義字符常量賦值給字符變量c

18、4 coutc1=c1 c3=c3endl; /用整數(shù)格式輸出c1,c3 coutc2=c2 c4=c4endl; /用字符格式輸出c2, c4運行結(jié)果:c1=65 c3=65c2=A c4=A 基于char數(shù)據(jù)的這個特點,它可以和int變量一樣做加減運算,例2.7說明了這種用法。例2.7 大小字母的轉(zhuǎn)換#include#includeusing namespace std;int main() char c1,c2; c1=a; c2=A; coutc1 c2endl; c1=c1-32; /小寫字母轉(zhuǎn)換大寫字母 c2=c2+32; /大寫字母轉(zhuǎn)換小寫字母 coutc1 c2)、小于、小于(

19、=)、小于等于、小于等于(=)和不等于和不等于(!=)六種。六種。3.邏輯運算符邏輯運算符用于邏輯運算。包括與用于邏輯運算。包括與(&)、或、或(|)、非、非(!)三種。三種。4.位操作運算符位操作運算符 參與運算的量,按二進制位進行運算。包括位與參與運算的量,按二進制位進行運算。包括位與(&)、位或、位或(|)、位非、位非()、位異或、位異或()左移左移()六種。六種。5.賦值運算符賦值運算符用于賦值運算,分為簡單賦值用于賦值運算,分為簡單賦值(=)、復合算術(shù)賦值、復合算術(shù)賦值(+=,-=,*=,/=,%=)和復合位運算和復合位運算賦值賦值(&=,|=,=,=,,.)

20、等幾種。等幾種。一、算術(shù)運算符一、算術(shù)運算符1、模運算符、模運算符求余的運算符求余的運算符“%”也稱為模運算符,是雙目運算符,兩個操作數(shù)都是整型也稱為模運算符,是雙目運算符,兩個操作數(shù)都是整型數(shù)。數(shù)。a%b的值就是的值就是a除以除以b的余數(shù),的余數(shù),5%2余數(shù)為余數(shù)為1。其操作對象只能是整型數(shù),而其。其操作對象只能是整型數(shù),而其他四種運算符對他四種運算符對int,float,double,char都適用。都適用。2、除法運算符、除法運算符C+語言的除法運算符有一些特殊之處,即如果語言的除法運算符有一些特殊之處,即如果a、b是兩個整數(shù)類型的變量是兩個整數(shù)類型的變量或常量,那么或常量,那么a/b的

21、值是的值是a除以除以b的商。例如,的商。例如, 5/2的值是的值是2,而不是,而不是2.5,而,而5.0/2或或5/2.0的值是的值是2.5。3、自增自減運算符、自增自減運算符自增、自減運算符用來對一個操作數(shù)進行加自增、自減運算符用來對一個操作數(shù)進行加1或減或減1運算,其結(jié)果仍然賦予該運算,其結(jié)果仍然賦予該操作數(shù),而且參加運算的操作數(shù)必須是變量,而不能是常量或表達式。操作數(shù),而且參加運算的操作數(shù)必須是變量,而不能是常量或表達式。1)自增運算符。例如,)自增運算符。例如,x+表示在使用表示在使用x之后,使之后,使x的值加的值加1,即,即x=x+1;+x表示使用表示使用x之前,先使之前,先使x的值

22、加的值加1,即,即x=x+1。2)自減運算符。例如,)自減運算符。例如,x-表示在使用表示在使用x之后,使之后,使x的值減的值減1,即,即x=x-1;-x表表示使用示使用x之前,先使之前,先使x的值減的值減1,即,即x=x-1。4、復合算術(shù)賦值。例如,、復合算術(shù)賦值。例如,a+=1,相當于相當于a=a+1; a+=b,相當于相當于a=a+b。例2.4 變量自加運算#includeusing namespace std;int main() int x,y,z1,z2; x=7; y=8; z1=y-(x+); /計算z1=1,計算后x=8 z2=y-(+x); /計算前x的值自加1,x的值為9

23、,再與y求差 cout“z1=z1endl“z2=)、小于、小于(=)、小于等于、小于等于(n2; /n3的值為0 n3=n1b & cd等價于(ab) & (cd) !b=c|da等價于(!b)=c)|(dc & x+yc) & (x+y)0 & 42,由于50為真,42也為真,相與的結(jié)果也為真。2.或運算|參與運算的兩個量只要有一個為真,結(jié)果就為真。 兩個量都為假時,結(jié)果為假。例如:50|58,由于50為真,相或的結(jié)果也就為真3.非運算!參與運算量為真時,結(jié)果為假;參與運算量為假時,結(jié)果為真。例如:!(50)的結(jié)果為假。雖然C+編譯在給出邏輯運算值時

24、,以“1”代表“真”,“0 ”代表“假”。 但反過來在判斷一個量是為“真”還是為“假”時,以“0”代表“假”,以非“0”的數(shù)值作為“真”。例如:由于5和3均為非“0”因此5&3的值為“真”,即為1。又如:5|0的值為“真”,即為1。四、位運算符四、位運算符運算符運算符含含 義義說明說明例子例子& &按位與按位與把參與運算的兩個數(shù)對應的二進把參與運算的兩個數(shù)對應的二進制位相與,只有對應的二進制均制位相與,只有對應的二進制均為為1 1時,結(jié)果的對應位才為時,結(jié)果的對應位才為1 1,否,否則為則為0 0。9&59&5中中9 9可以寫成可以寫成(00001001

25、),5(00001001),5可以可以寫成寫成(00000101)(00000101),那么,那么9&59&5的運算的運算結(jié)果為結(jié)果為0000 00010000 0001,輸出結(jié)果是,輸出結(jié)果是1 1。| |按位或按位或把參與運算的兩個數(shù)對應的二進把參與運算的兩個數(shù)對應的二進制位相或,也就是只要對應的兩制位相或,也就是只要對應的兩個二進制位有一個為個二進制位有一個為1 1時,其結(jié)果時,其結(jié)果就為就為1 1。9|59|5相當于相當于00001001|0000010100001001|00000101,運,運算結(jié)果是算結(jié)果是0000110100001101,輸出結(jié)果是,輸出結(jié)果是1

26、313。 按位異或按位異或把參與運算的兩個數(shù)對應的二進把參與運算的兩個數(shù)對應的二進制位相異或,當對應的二進制位制位相異或,當對應的二進制位上的數(shù)據(jù)字不相同時,結(jié)果對應上的數(shù)據(jù)字不相同時,結(jié)果對應為為1 1時,否則為時,否則為0 0。11=011=0,10=110=1,00=000=0,01=101=19595相當于相當于00001001000001010000100100000101,運,運算結(jié)果是算結(jié)果是0000110000001100,輸出結(jié)果是,輸出結(jié)果是1212。取反取反把運算數(shù)的各個二進制位按位求把運算數(shù)的各個二進制位按位求反。反。9 9相當于相當于(0000 1001)(0000

27、1001),運算結(jié),運算結(jié)果為果為1111 01101111 0110。左移左移把把“”左邊的運算數(shù)的各二進制左邊的運算數(shù)的各二進制位向左移若干位,位向左移若干位,“”右邊的數(shù)右邊的數(shù)是指定移動的位數(shù),高位丟棄,是指定移動的位數(shù),高位丟棄,低位補低位補0 0。a4a右移右移把把“”左邊的運算數(shù)的各二進制左邊的運算數(shù)的各二進制位全部右移若干位,位全部右移若干位,“”右邊的右邊的數(shù)是指定移動的位數(shù)。數(shù)是指定移動的位數(shù)。設(shè)設(shè)a=15a=15,a2a2表示把表示把0000111100001111右移右移為為0000 0011(0000 0011(十進制為十進制為3)3)。 需要說明的是,對于有符號數(shù),

28、在右移時,符號位將隨同移動。當操作數(shù)為正數(shù)時,最高位為0,而為負數(shù)時,最高位為1。最高位是補0或補1取決于編譯系統(tǒng)的規(guī)定。五、運算的簡寫在C+語言中,有一些運算可以簡寫,如下表所示。算術(shù)運算符、關(guān)系運算符、邏輯運算符和賦值運算符的優(yōu)先級如下:賦值運算符 邏輯運算符 關(guān)系運算符 算術(shù)運算符 低 高關(guān)系運算符的結(jié)合性為:自左至右。根據(jù)以上優(yōu)先級和結(jié)合性,計算出以下表達式的結(jié)果(假設(shè)a=3,b=2,c=1) ab 表達式為真,所以表達式的值為1 (ab)=c 表達式為真,所以表達式的值為1 b+cb ab為真,所以d的值為1 f=abc ab為真,結(jié)果為1,1c為假,所以f的值為0簡簡 寫寫含含 義

29、義簡簡 寫寫含含 義義a+=ba+=ba=a+ba=a+ba&=ba&=ba=a&ba=a&ba-=ba-=ba=a-ba=a-ba|=ba|=ba=a|ba=a|ba a* *=b=ba=aa=a* *b ba=ba=ba=aba=aba/=ba/=ba=a/ba=a/ba=ba=ba=aba=a=ba=ba=aba=ab 函數(shù)名函數(shù)名格式格式功能說明功能說明例子例子絕對值函數(shù)絕對值函數(shù)abs(x)abs(x)求一個數(shù)求一個數(shù)x x的絕對值的絕對值abs(-5)=5abs(-5)=5自然數(shù)指數(shù)函數(shù)自然數(shù)指數(shù)函數(shù)exp(x)exp(x)求實數(shù)求實數(shù)x x的自然指

30、數(shù)的自然指數(shù)e ex xexp(1)=2.718282exp(1)=2.718282向下取整向下取整floor(x)floor(x) 求不大于實數(shù)求不大于實數(shù)x x的最大整數(shù)的最大整數(shù)floor(3.14)=3floor(3.14)=3向上取整向上取整ceil(x)ceil(x)求不小于實數(shù)求不小于實數(shù)x x的最小整數(shù)的最小整數(shù)ceil(3.14)=4ceil(3.14)=4自然對數(shù)函數(shù)自然對數(shù)函數(shù)log(x)log(x)求實數(shù)求實數(shù)x x的自然數(shù)對數(shù)的自然數(shù)對數(shù)log(1)=0log(1)=0指數(shù)函數(shù)指數(shù)函數(shù)pow(x,y)pow(x,y) 計算計算x xy y, ,結(jié)果為雙精度實數(shù)結(jié)果為雙

31、精度實數(shù)pow(2,3)=8pow(2,3)=8隨機函數(shù)隨機函數(shù)rand()rand()產(chǎn)生產(chǎn)生0 0到到RAND-MAXRAND-MAX之間的隨機整數(shù)之間的隨機整數(shù)平方根值函數(shù)平方根值函數(shù)sqrt(x)sqrt(x)求實數(shù)求實數(shù)x x的平方根的平方根sqrt(25)=5sqrt(25)=5六、常用庫函數(shù)六、常用庫函數(shù)表達式w表達式,是由數(shù)字、算符、數(shù)字分組符號(括號)、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合。wC+語言中,常見的表達式有算術(shù)表達式、關(guān)系表達式、邏輯表達式。優(yōu)先級和結(jié)合性w () . - : sizeof ! + - + - (type型) &(取址

32、) * -* .* % * / + - = = != &ww| &w| :?(三目運算) w= +=.w,(逗號) ! + - + - * & sizeof 自右向左?: 自右向左= += -= *= /= %= &= = |= = 自右向左小練習試將下列數(shù)學式寫成C+表達式(1)a+4b(2)(5)變量a既能被7整除又能被11整除【上機練習2.1】輸入一個三位自然數(shù),把這個數(shù)的百位與個位數(shù)對調(diào),輸出對調(diào)后的自然數(shù)。第四節(jié)賦值語句第四節(jié)賦值語句賦值語句賦值語句 在C+語言中,“=”作為賦值運算符,而不表示“等于”判斷。賦值語句是由賦值表達式再加上分號構(gòu)成的表達式

33、語句,它是程序中使用最多的語句之一。 變量=表達式;在賦值語句的使用中,需要注意以下幾點:1)由于賦值運算符“=”右邊的表達式也可以是賦值表達式,因此,下述形式 : 變量=(變量=表達式);是成立的,從而形成嵌套的情形。其展開之后的一般形式為:變量=變量=表達式;例如,“a=b=c=d=e=5;”,它實際上等價于:e=5;d=e;c=d;b=c;a=b; 2)在進行賦值運算時,如果賦值運算符兩邊的數(shù)據(jù)類型不同,系統(tǒng)將會自動進行類型轉(zhuǎn)換,即將賦值運算符右邊的數(shù)據(jù)類型轉(zhuǎn)換成左邊的變量類型。當左邊是整型而右邊是實型時,將去掉小數(shù)部分并截取該整型對應的有效位數(shù)。賦值時的類型轉(zhuǎn)換規(guī)則當賦值運算符兩側(cè)的數(shù)

34、據(jù)類型不同時,需進行類型轉(zhuǎn)換,這種轉(zhuǎn)換是系統(tǒng)自動進行的,轉(zhuǎn)換規(guī)則如下:1)float、double型賦值給int型:直接截斷小數(shù)。例如,“int i=f+0.6;”,f的值為4.0,右邊算術(shù)表達式運算后的結(jié)果為4.6的double型數(shù)據(jù),根據(jù)上述轉(zhuǎn)換原則,直接舍棄小數(shù),所以i的值為4。2)int、char型賦值給float、double型:補足有效位以進行數(shù)據(jù)類型轉(zhuǎn)換。例如:“float f=4;”,float為7位有效數(shù)字,所以f的值為4.0000000。3)char型(1字節(jié))賦給int型(4字節(jié)):數(shù)值賦給int型的低8位,其它位補0。4)long int型賦值給int型:long in

35、t型截斷低字節(jié)給int型。5)int型賦值給long int型:賦給long int型的低16位,如果int型的最高位是0,則long int的高16位全為0;如果int型的最高位是1,則long int型的高16位全為1(稱為“符號擴展”)。6)unsigned int型賦值給int型:直接傳送數(shù)值。7)非unsigned int型賦值給位數(shù)相同的unsigned int型:直接傳送數(shù)值。例例2.1輸入兩個正整數(shù)A和B,試交換A、B的值(使A的值等于B,B的值等于A)?!痉治觥?交換兩個變量的值方法很多,一般我們采用引入第三個變量的算法,二個變量交換,可以想像成一瓶醬油和一瓶醋進行交換,這時

36、容易想到拿一個空瓶子過來: 將醬油倒到空瓶中; 將醋倒到醬油瓶中; 將原空瓶中的醬油倒到醋瓶中。程序如下:#include /使用cin,cout,須調(diào)用iostream庫using namespace std;int main() int a,b,c; /定義三個變量 coutab; /輸入A、B的值 c=a; a=b; b=c; /交換A、B的值 couta=a b=bendl; /輸出結(jié)果例2.2 圓柱體的表面積 輸入底面半徑輸入底面半徑r和高和高h,輸出圓柱體的表面積,保留,輸出圓柱體的表面積,保留3位小數(shù),格式見樣位小數(shù),格式見樣例。例。樣例輸入:3.5 9 樣例輸出:274.889

37、【分析】 圓柱體的表面積由3部分組成:上底面積、下底面積和側(cè)面積。由于上下底面積相等,完整的公式可以寫成:表面積=底面積*2+側(cè)面積。根據(jù)平面幾何知識,底面積=R2,側(cè)面積=2rh。參考程序:#include /使用printf和scanf, 須調(diào)用cstdio庫#include /使用數(shù)學函數(shù)atan,須調(diào)用cmath庫using namespace std; /在這個程序中可以省略這行int main() const double pi=3.1415926; /定義pi為常量 double r,h,s1,s2,s; /定義雙精度實型,float為單精度實型 scanf(%lf%lf,&am

38、p;r,&h); /r和h前的&符號不能漏掉,double型用%lf s1=pi*r*r; /計算底面積 s2=2*pi*r*h; /計算側(cè)面積 s=2*s1+s2; /計算總的表面積 printf(Area=%0.3lfn,s); /輸出結(jié)果保留3位小數(shù),注意用lf格式 return 0;例2.3 數(shù)學中經(jīng)典的數(shù)學中經(jīng)典的“雞兔同籠雞兔同籠”問題,已知頭共問題,已知頭共30個,腳共個,腳共90只,問籠中只,問籠中的雞和兔各有多少只的雞和兔各有多少只?【分析】 設(shè)雞為j只,兔為t只,頭為h,腳為f,那么有: j+t=302*j+4*t=90假設(shè)籠中30 個頭全都是兔,那么都按每

39、頭只腳計算,總腳數(shù)為(4*h),與實際腳數(shù)(f )之差為(4*h-f),如果這個差=0,則籠中全是兔(即雞為0只);如果這個差值 0,說明多計算了腳數(shù),凡是雞都多計算了兩只腳,用它除以2就能得到雞的只數(shù),算法為: j=(4*h - f)/2 /先用腳數(shù)差值除以2算出雞的只數(shù) t=h - j /再用總頭數(shù)減雞數(shù)算出免的只數(shù)注意這兩步運算的先后順序。程序如下:#include /使用getchar()語句, 須調(diào)用cstdio庫#include /使用cin,cout,須調(diào)用iostream庫using namespace std;int main() int h,f,j,t; /定個變量 h=3

40、0;f=90; /賦初始值 j=(4*h-f)/2; /計算雞的只數(shù) t=h-j; /計算免的只數(shù) coutj=j t=tendl; /輸出結(jié)果 getchar(); /和 system(pause)作用相似,用于結(jié)果顯示暫停第五節(jié)數(shù)據(jù)輸入輸出C+語言中沒有提供專門的輸入輸出語句,所有的輸入輸出都是調(diào)用標準庫函數(shù)中的輸入輸出函數(shù)來實現(xiàn)的。在使用時,應在源程序的開頭使用如下語句:#include#includeusing namespace std;C+語言標準函數(shù)庫提供了許多標準輸入、輸出函數(shù),本節(jié)將介紹6個最基本的輸入、輸出函數(shù):字符輸入getchar,字符輸出putchar,格式化輸入sc

41、anf,格式化輸出prinf,流輸入cin,流輸出cout。一、字符輸入函數(shù)getchar getchar函數(shù)是接收從鍵盤輸入的單個字符數(shù)據(jù)。它是一個無參函數(shù),其語法格式為:getchar();【說明】1)通常把輸入的字符賦予一個字符變量,構(gòu)成賦值語句。例如: char ch; ch=getchar();2) getchar函數(shù)只能接受單個字符,輸入數(shù)字也按字符處理。3)輸入多于一個字符時,只接收第一個字符。4) getchar函數(shù)等待用戶輸入,直到按回車鍵才結(jié)束,可用于暫停程序的運行,直到輸入一個回車鍵。5)如果在程序中連續(xù)有兩個以上getchar()函數(shù),應該一次性輸入所需字符,最后再按回

42、車鍵,否則會把回車作為一個字符傳給后面的getchar()函數(shù)。 例2.8 利用getchar函數(shù)接收鍵盤輸入。#include#includeusing namespace std;int main() char ch; ch=getchar(); /讀入字符 coutinput=chendl;利用getchar();暫停程序二、字符輸出函數(shù)putchar putchar函數(shù)是字符輸出函數(shù),功能是向標準輸出設(shè)備(如顯示器)輸出單個字符數(shù)據(jù),其語法格式為: putchar(ch); /其中,ch為一個字符變量或常量。 例2.9 利用putchar 函數(shù)輸出字符。#include#include

43、using namespace std;int main() char c=B; /定義字符變量c并賦值B putchar(c); /輸出該字符 putchar(x42); /用轉(zhuǎn)義字符輸出字母B putchar(0 x42); /用16進制ASCII碼值輸出字母B putchar(66); /用10進制ASCII碼值輸出字母B運行結(jié)果:BBBB三、通過三、通過cout流輸出數(shù)據(jù)流輸出數(shù)據(jù)流插入運算符和cout結(jié)合在一起使用,可向顯示器屏幕輸出數(shù)據(jù)。格式1:功能:它把表達式的值輸出到屏幕上,該表達式可以是各種基本類型的常量、變量或者由它們組成的表達式。輸出時,程序根據(jù)表達式的類型和數(shù)值大小,采

44、用不同的默認格式輸出,大多數(shù)情況下可滿足要求。若要輸出多個數(shù)據(jù),可以連續(xù)使用流插入運算符格式2:功能:將表達式的內(nèi)容一項接一項的輸出到屏幕上。 1輸出字符串和輸出變量的區(qū)別每當我們輸出字符串常量的時候,必須用雙引號把字符串引起來,以便將它和變量名明顯的區(qū)分開來。例2.10下面兩個語句是不同的:cout Hello ; /打印字符串Hello到屏幕上cout Hello ; /把變量Hello存儲的內(nèi)容打印到屏幕上2如何增強信息的可讀性為了增強輸出信息的可讀性,在輸出多個數(shù)據(jù)時可以通過插入空格符,換行符或其他提示信息將數(shù)據(jù)進行組織,以獲得更好的效果。例2.11 x=12;cout tom is

45、my friend,he is;cout x;cout years old;輸出結(jié)果為tom is my friend,he is12year old 3換行符的使用必須注意,除非我們明確指定,cout并不會自動在其輸出內(nèi)容的末尾加換行符,因此下面的語句: 例2.12cout This is a sentence. ;cout This is another sentence. ; 將會有如下內(nèi)容輸出到屏幕:This is a sentence.This is another sentence. 雖然我們分別調(diào)用了兩次cout,兩個句子還是被輸出在同一行。所以,為了在輸出中換行,我們必須插入一

46、個換行符來明確表達這一要求,在C+中換行符可以寫作n。cout First sentence.n;cout Second sentence.nThird sentence.; 將會產(chǎn)生如下輸出: First sentence.Second sentence.Third sentence. 另外,你也可以用操作符endl來換行,例如:cout First sentence. endl;cout Second sentence. endl; 將會輸出:First sentence.Second sentence. 轉(zhuǎn)義字符轉(zhuǎn)義字符含義含義nn換行換行tt水平制表水平制表bb退格退格rr回車(不換行

47、)回車(不換行)00空字符空字符 單引號單引號” 雙引號雙引號一個反斜杠字符一個反斜杠字符dddddd1 13位八進制數(shù)所代表的字符位八進制數(shù)所代表的字符xhhxhh1 12位十六進制數(shù)所代表的字符位十六進制數(shù)所代表的字符 例2.13在屏幕上輸出2 34cout2 3endl;cout4;或 cout2 3n4;除了以上兩種寫法外,還可以有其它的的寫法,請試試看。你可以使用n或endl來指定cout輸出換行,注意兩者的不同用法。在輸入輸出流中使用控制符頭文件iomanip.h#include #include using namespace std;int main() cout setios

48、flags(ios:right) setw(5) 1 setw(5) 2 setw(5) 3 endl; cout setiosflags(ios:left) setw(5) 1 setw(5) 2 setw(5) 3 和cin結(jié)合在一起使用,可從鍵盤輸入數(shù)據(jù)。格式格式1:功能:是從鍵盤讀取一個數(shù)據(jù)并將其賦給“變量”。說明:在使用cin輸入的時候必須考慮后面的變量類型。如果你要求輸入一個整數(shù),在 后面必須跟一個整型變量,如果要求一個字符,后面必須跟一個字符型變量。例2.14聲明一個整型變量age然后等待用戶從鍵盤輸入到cin并將輸入值存儲在這個變量中。int age;cin age; 也可以連

49、續(xù)使用,實現(xiàn)從鍵盤對多個變量輸入數(shù)據(jù)。格式格式2:這要求從鍵盤輸入的數(shù)據(jù)的個數(shù)、類型與變量相一致。從鍵盤讀取數(shù)據(jù)時,各數(shù)據(jù)之間要有分隔符,分隔符可以是一個或多個空格鍵、回車鍵等。 例2.15用cin 讓用戶輸入多個數(shù)據(jù) 。cin a b; 等同于:cin a;cin b; 例2.16流讀取運算符和cin的使用#includeusing namespace std;int main( ) char c; int i ; float x,y; coutixy; c=i; coutc=cti=in; coutx=xty=yn; return 0; 程序運行時屏幕先顯示: enter:這時從鍵盤輸入一

50、個整數(shù)和兩個實數(shù),中間用一個或多個空格鍵作分隔符。 如輸入65 2.3 3.5 最后屏幕顯示:c=A i=65 x=2.3 y=3.5程序中n和t都是轉(zhuǎn)義符。 n 和n效果相同,都表示換行符。t是制表符,可以理解為連續(xù)輸出幾個空格。字符變量和整型變量i的值都是65,但輸出的形式不同。五、格式化輸入函數(shù)scanf scanf函數(shù)的功能是格式化輸入任意數(shù)據(jù)列表,其一般調(diào)用格式為:scanf(格式控制符,地址列表)【說明】【說明】 1)地址列表中給出各變量的地址,可以為變量的地址,也可以為字符串的首地址。 2)格式控制符由%和格式符組成,作用是將要輸入的字符按指定的格式輸入,如%d,%c等。 格式符

51、格式符說說 明明d,id,i用于輸入十進制整數(shù)用于輸入十進制整數(shù)u u以無符號十進制形式輸入十進以無符號十進制形式輸入十進制整數(shù)制整數(shù)o(o(字母字母) )用于輸入八進制整數(shù)用于輸入八進制整數(shù)x x用于輸入十六進制整數(shù)用于輸入十六進制整數(shù)c c用于輸入單個字符用于輸入單個字符s s用于輸入字符串(非空格開始,用于輸入字符串(非空格開始,空格結(jié)束,字符串變量以空格結(jié)束,字符串變量以00結(jié)尾)結(jié)尾)f f用于輸入實數(shù)(小數(shù)或指數(shù)均用于輸入實數(shù)(小數(shù)或指數(shù)均可)可)e e與與f f相同(可與相同(可與f f互換)互換) 表2-6 scanf函數(shù)的格式符表2-7 scanf函數(shù)的附加格式說明符附加格式

52、說 明l(字母)用于長整型數(shù)(%ld、%lo、%lx)或double型實數(shù)(%lf、%le)h用于短整型數(shù)(%hd、%ho、%hx)域?qū)?一個整數(shù))指定輸入所占列寬*表示對應輸入量不賦給一個變量 六、格式化輸出函數(shù)printfprintf函數(shù)的功能是格式化輸出任意數(shù)據(jù)列表,其一般調(diào)用格式為:printf(格式控制符,輸出列表)【說明】1)格式控制由輸入格式說明和普通字符組成,必須用雙引號括起來。格式說明由%和格式字符組成,作用是將要輸出的字符轉(zhuǎn)換為指定的格式,如%d,%c等。普通字符是在輸出時原樣輸出的字符,一般在顯示時起提示作用。 2)輸出列表是需要輸出的一組數(shù)據(jù)(可以為表達式和變量),各參

53、數(shù)之間用“,”分開。要求格式說明和各輸出項在數(shù)量和類型上要一一對應,否則將會出現(xiàn)意想不到的錯誤。 格式符格式符說說 明明d(d(或或i)i)以帶符號的十進制形式輸出整數(shù),正數(shù)的以帶符號的十進制形式輸出整數(shù),正數(shù)的(+)(+)號省略不輸出號省略不輸出u u以無符號十進制形式輸出整數(shù)以無符號十進制形式輸出整數(shù)x(x(或或X)X)以十六進制無符號形式輸出整數(shù)(不輸出前導符以十六進制無符號形式輸出整數(shù)(不輸出前導符0 x0 x)o(o(字母字母) )以八進制無符號形式輸出整數(shù)(不輸出前導符數(shù)字以八進制無符號形式輸出整數(shù)(不輸出前導符數(shù)字0 0)c c輸出一個字符輸出一個字符s s輸出字符串輸出字符串f f以小數(shù)形式輸出單、雙精度,隱含輸出以小數(shù)形式輸出單、雙精度,隱含輸出6 6位小數(shù)位小數(shù)e(e(或或E)E)以指數(shù)形式輸出單、雙精度,隱含輸出以指數(shù)形式輸出單、雙精度,隱含輸出6 6位小數(shù)位小數(shù)g(g(或或G)G)自動選用自動選用%f%f、%e%e或或%E%E格式中輸出寬度較小的一種使用格式中輸出寬度

溫馨提示

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

評論

0/150

提交評論