版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一節(jié)賦值語句第一節(jié)賦值語句第二節(jié)運算符和表達式第二節(jié)運算符和表達式第三節(jié)常量和變量第三節(jié)常量和變量第四節(jié)標準數(shù)據(jù)類型第四節(jié)標準數(shù)據(jù)類型第五節(jié)第五節(jié) 數(shù)據(jù)輸入輸出數(shù)據(jù)輸入輸出第六節(jié)順序結構實例第六節(jié)順序結構實例第一節(jié)賦值語句第一節(jié)賦值語句賦值語句賦值語句 在C+語言中,“=”作為賦值運算符,而不表示“等于”,它是程序中使用最多的語句之一。 變量=表達式; (將右邊的結果放入左邊的變量)在賦值語句的使用中,需要注意以下幾點:1)由于賦值運算符“=”右邊的表達式也可以是賦值表達式,因此,下述形式 : 變量=(變量=表達式);是成立的,從而形成嵌套的情形。其展開之后的一般形式為:變量=變量=表達式;
2、例如,“a=b=c=d=e=5;”,它實際上等價于:e=5;d=e;c=d;b=c;a=b; 2)在進行賦值運算時,如果賦值運算符兩邊的數(shù)據(jù)類型不同,系統(tǒng)將會自動進行類型轉換,即將賦值運算符右邊的數(shù)據(jù)類型轉換成左邊的變量類型。當左邊是整型而右邊是實型時,將去掉小數(shù)部分并截取該整型對應的有效位數(shù)。例例2.1輸入兩個正整數(shù)A和B,試交換A、B的值(使A的值等于B,B的值等于A)?!痉治觥?交換兩個變量的值方法很多,一般我們采用引入第三個變量的算法,二個變量交換,可以想像成一瓶醬油和一瓶醋進行交換,這時容易想到拿一個空瓶子過來: 將醬油倒到空瓶中; 將醋倒到醬油瓶中; 將原空瓶中的醬油倒到醋瓶中。程
3、序如下:#include /使用cin,cout,須調用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; /輸出結果例2.2 圓柱體的表面積 輸入底面半徑輸入底面半徑r和高和高h,輸出圓柱體的表面積,保留,輸出圓柱體的表面積,保留3位小數(shù),格式見樣位小數(shù),格式見樣例。例。樣例輸入:3.5 9 樣例輸出:274.889【分析】 圓柱體的表面積由3部分組成:上底面積、下底面積和側面積。由于上下底面積相等,完整的公式可
4、以寫成:表面積=底面積*2+側面積。根據(jù)平面幾何知識,底面積=R2,側面積=2rh。參考程序:#include /使用printf和scanf, 須調用cstdio庫 using namespace std; /在這個程序中可以省略這行int main() const double pi=3.1415926; /定義pi為常量 double r,h,s1,s2,s; /定義雙精度實型,float為單精度實型 scanf(%lf%lf,&r,&h); /r和h前的&符號不能漏掉,double型用%lf s1=pi*r*r; /計算底面積 s2=2*pi*r*h; /計算側
5、面積 s=2*s1+s2; /計算總的表面積 printf(Area=%0.3lfn,s); /輸出結果保留3位小數(shù),注意用lf格式 return 0;例2.3 數(shù)學中經典的數(shù)學中經典的“雞兔同籠雞兔同籠”問題,已知頭共問題,已知頭共30個,腳共個,腳共90只,問籠中只,問籠中的雞和兔各有多少只的雞和兔各有多少只?【分析】 設雞為j只,兔為t只,頭為h,腳為f,那么有: j+t=302*j+4*t=90假設籠中30 個頭全都是兔,那么都按每頭只腳計算,總腳數(shù)為(4*h),與實際腳數(shù)(f )之差為(4*h-f),如果這個差=0,則籠中全是兔(即雞為0只);如果這個差值 0,說明多計算了腳數(shù),凡是
6、雞都多計算了兩只腳,用它除以2就能得到雞的只數(shù),算法為: j=(4*h - f)/2 /先用腳數(shù)差值除以2算出雞的只數(shù) t=h - j /再用總頭數(shù)減雞數(shù)算出免的只數(shù)注意這兩步運算的先后順序。程序如下:#include /使用getchar()語句, 須調用cstdio庫#include /使用cin,cout,須調用iostream庫using namespace std;int main() int h,f,j,t; /定個變量 h=30;f=90; /賦初始值 j=(4*h-f)/2; /計算雞的只數(shù) t=h-j; /計算免的只數(shù) coutj=j t=t)、小于、小于(=)、小于等于、小
7、于等于(=)和不等于和不等于(!=)六種。六種。3.邏輯運算符邏輯運算符用于邏輯運算。包括:用于邏輯運算。包括: 與與(&)、或、或(|)、非、非(!)三種。三種。4.賦值運算符賦值運算符用于賦值運算,分為:用于賦值運算,分為: 簡單賦值簡單賦值(=)、復合算術賦值、復合算術賦值(+=,-=,*=,/=,%=)6.條件運算符條件運算符這是一個三目運算符,用于條件求值:這是一個三目運算符,用于條件求值:(?:)。一、算術運算符一、算術運算符1、模運算符、模運算符 求余的運算符求余的運算符“%”也稱為模運算符,是雙目運算符,兩個操作數(shù)都是整型數(shù)。也稱為模運算符,是雙目運算符,兩個操作數(shù)都是
8、整型數(shù)。a%b的值就是的值就是a除以除以b的余數(shù),的余數(shù),5%2余數(shù)為余數(shù)為1。其操作對象只能是整型數(shù),。其操作對象只能是整型數(shù), a=5%22、除法運算符、除法運算符C+語言的除法運算符有一些特殊之處,即如果語言的除法運算符有一些特殊之處,即如果a、b是兩個整數(shù)類型的變量是兩個整數(shù)類型的變量或常量,那么或常量,那么a/b的值是的值是a除以除以b的商。例如,的商。例如, 5/2的值是的值是2,而不是,而不是2.5,而,而5.0/2或或5/2.0的值是的值是2.5。3、自增自減運算符、自增自減運算符自增、自減運算符用來對一個操作數(shù)進行加自增、自減運算符用來對一個操作數(shù)進行加1或減或減1運算,其結
9、果仍然賦予該運算,其結果仍然賦予該操作數(shù),而且參加運算的操作數(shù)必須是變量,而不能是常量或表達式。操作數(shù),而且參加運算的操作數(shù)必須是變量,而不能是常量或表達式。1)自增運算符。例如,)自增運算符。例如,x+表示在使用表示在使用x之后,使之后,使x的值加的值加1,即,即x=x+1;+x表示使用表示使用x之前,先使之前,先使x的值加的值加1,即,即x=x+1。2)自減運算符。例如,)自減運算符。例如,x-表示在使用表示在使用x之后,使之后,使x的值減的值減1,即,即x=x-1;-x表表示使用示使用x之前,先使之前,先使x的值減的值減1,即,即x=x-1。4、復合算術賦值。例如,、復合算術賦值。例如,
10、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,再與y求差 cout“z1=z1endl“z2=)、小于、小于(=)、小于等于、小于等于(n2; /n3的值為0 n3=n1b 表達式為真,所以表達式的值為1 (ab)=c 表達式為真,所以表達式的值為1 b+cb ab為真,所以d的值為1 f=abc ab為真,結果為1
11、,1c為假,所以f的值為0 六、常用庫函數(shù)六、常用庫函數(shù)【上機練習】1.A+B問題【1.3編程基礎之算術表達式與順序執(zhí)行01】 大部分的在線題庫,都會將A+B問題作為第一題,以幫助新手熟悉平臺的使用方法。 A+B問題的題目描述如下:給定兩個整數(shù)A和B,輸出A+B的值。保證A、B及結果均在整型范圍內?,F(xiàn)在請你解決這一問題。輸入: 一行,包含兩個整數(shù)A,B,中間用單個空格隔開。A和B均在整型范圍內。輸出: 一個整數(shù),即A+B的值。保證結果在整型范圍內。樣例輸入: 1 2樣例輸出: 3【上機練習】2.計算(a+b)*c的值【1.3編程基礎之算術表達式與順序執(zhí)行02】 給定3個整數(shù)a、b、c,計算表達
12、式(a+b)*c的值。輸入: 輸入僅一行,包括三個整數(shù)a、b、c, 數(shù)與數(shù)之間以一個空格分開。(10,000a,b,c10,000)輸出: 輸出一行,即表達式的值樣例輸入: 2 3 5樣例輸出: 25【上機練習】3.計算(a+b)/c的值【1.3編程基礎之算術表達式與順序執(zhí)行03】 給定3個整數(shù)a、b、c,計算表達式(a+b)/c的值,/是整除運算。輸入; 輸入僅一行,包括三個整數(shù)a、b、c, 數(shù)與數(shù)之間以一個空格分開。(10,000 a,b,c 10,000, c不等于0)輸出: 輸出一行,即表達式的值。樣例輸入: 1 1 3樣例輸出: 0【上機練習】4.帶余除法【1.3編程基礎之算術表達式
13、與順序執(zhí)行04】 給定被除數(shù)和除數(shù),求整數(shù)商及余數(shù)。此題中請使用默認的整除和取余運算,無需對結果進行任何特殊處理。輸入: 一行,包含兩個整數(shù),依次為被除數(shù)和除數(shù)(除數(shù)非零),中間用一個空格隔開。輸出: 一行,包含兩個整數(shù),依次為整數(shù)商和余數(shù),中間用一個空格隔開。樣例輸入: 10 3樣例輸出: 3 1【上機練習】5.計算分數(shù)的浮點數(shù)值【1.3編程基礎之算術表達式與順序執(zhí)行05】 兩個整數(shù)a和b分別作為分子和分母,既分數(shù)a/b,求它的浮點數(shù)值(雙精度浮點數(shù),保留小數(shù)點后9位)。輸入: 輸入僅一行,包括兩個整數(shù)a和b。輸出: 輸出也僅一行,分數(shù) a/b 的浮點數(shù)值(雙精度浮點數(shù),保留小數(shù)點后9位)。
14、樣例輸入: 5 7樣例輸出: 0.714285714第三節(jié)常量和變量第三節(jié)常量和變量常量常量 一、常量常量是指在程序中使用的一些具體的數(shù)、字符。在程序運行過程中,其值不能被更改。如123,145.88,m,TRUE等。1、整型常量:如3、-5、0等。 整型常量是表示整數(shù)的常量。有三種表示形式: 1)十進制形式。如99、-1。 2)八進制形式。以數(shù)字0打頭,由0-7構成,如012,表示八進制整數(shù)12,即12(8)。 3)十六進制形式。以0 x打頭,如0 x12A,表示十六進制整數(shù)12A,即12A(16)。2、實型常量:如3.1、-6.1E+2(科學記數(shù)法)。3、字符常量:是用單引號括起來的字符,
15、如 k 、5 、%。注意:a與a表示的含義是不同的,a表示一個字符常量,a表示一個字符串。常量的定義常量的定義 一個常量可以直接調用(如124,A),也可以給常量取個名字用一個標識符代表它,這就是符號常量。其語法格式為: const 符號常量=常量字串;例如:const double PI=3.1415926;例2.5 輸入半徑r,求圓的周長及面積。#include /調用iostream庫,否則使用printf和scanf語句編譯出錯using namespace std; /這個程序可省略這行const double PI=3.1415926; /PI是符號常量。代表3.1415926in
16、t main() float r,c,s; /定義實型變量 printf(r=); /顯示提示符r= scanf(%f,&r); /輸入r的值,&符號不能漏掉 c=2*PI*r; /計算圓的周長 s=PI*r*r; /計算圓的面積 printf(c=%.2f s=%.2fn,c,s); /顯示計算結果,結果保留2位小數(shù) 程序中定義的PI代表常量3.1415926,在編譯源程序時,遇到PI就用常量3.1415926代替,PI可以和常量一樣進行運算。C+語言規(guī)定,每個符號常量的定義占據(jù)一個書寫行,而且符號常量不能被再賦值。如果在例2.5中使用以下賦值語句是錯誤的。 PI=3.141
17、5926; 習慣上,符號常量名用大寫,而變量名用小寫,以便于區(qū)別。使用符號常量的好處:1)增加了程序的可讀性。如看到例2.5程序中,見到PI就可知道它代表圓周率,定義符號常量名時應該盡量使用見名知意的常量名。2)增加了程序的易改性。如例2.5程序中,只需改動一處,程序中的所有PI都會自動全部代換,做到“一改全改”。變量定義變量定義變量代表了一個存儲單元,其中的值是可以改變的,因此稱為變量。如游戲中玩家命的條數(shù)最初為3,當你死了一次,命減少一條,這里命的條數(shù)就是一個變量(或者說命的條數(shù)存儲在一個存儲單元中)。一個程序中可能要使用到若干個變量,為了區(qū)別不同的變量,必須給每個變量(存儲單元)取一個名
18、(稱為變量名),該變量(存貯單元)存儲的值稱為變量的值,變量中能夠存儲值的類型為變量的類型。例如游戲中用于存儲“命”的變量,在游戲程序中的存儲命的變量名可取為life,它的類型為整型,游戲初始時這個變量的值為3。w變量名變量名 用一個合法的標識符代表一個變量。如n,m,rot,total 等都是合法變量名。在程序中用到的變量要“先定義后使用”,變量名應遵循自定義標識符的命名規(guī)則,并建議使用“見名知義”的原則,即用一些有意義的單詞作為變量名。在C+語言,變量名大小寫有區(qū)別。用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標識符。C+語言規(guī)定,標識符只能由字母(包含下劃
19、線“_”)開頭,后面的字符可以是字母或數(shù)字。對于標識符的長度,不同的C+語言編譯器有不同的規(guī)定,考慮到系統(tǒng)的可移植性,建議變量名的長度不要超過8個字符。例如:month、_age、s2為合法的標識符;m.k.jack、a= -459.67)輸出: 輸出一行,包含一個實數(shù),表示對用的攝氏溫度,要求精確到小數(shù)點后5位。樣例輸入: 41樣例輸出: 5.00000【上機練習】4.與圓相關的計算【1.3編程基礎之算術表達式與順序執(zhí)行09】 給出圓的半徑,求圓的直徑、周長和面積。輸入圓的半徑實數(shù)r,輸出圓的直徑、周長、面積,每個數(shù)保留小數(shù)點后4位。輸入: 輸入包含一個實數(shù)r(0 r = 10,000),表
20、示圓的半徑。輸出: 輸出一行,包含三個數(shù),分別表示圓的直徑、周長、面積,數(shù)與數(shù)之間以一個空格分開,每個數(shù)保留小數(shù)點后4位。樣例輸入: 3.0樣例輸出: 6.0000 18.8495 28.2743【上機練習】5.計算并聯(lián)電阻的阻值【1.3編程基礎之算術表達式與順序執(zhí)行10】 對于阻值為r1和r2的電阻,其并聯(lián)電阻阻值公式計算如下:R = 1/(1/r1 + 1/r2)。輸入兩個電阻阻抗大小,浮點型。輸出并聯(lián)之后的阻抗大小,結果保留小數(shù)點后2位。輸入: 兩個電阻阻抗大小,浮點型,以一個空格分開。輸出: 并聯(lián)之后的阻抗大小,結果保留小數(shù)點后2位樣例輸入: 1 2樣例輸出: 0.67第四節(jié)標準數(shù)據(jù)類
21、型第四節(jié)標準數(shù)據(jù)類型C+語言提供了豐富的數(shù)據(jù)類型,本節(jié)介紹幾種基本的數(shù)據(jù)類型:整型、實型、字符型。它們都是系統(tǒng)定義的簡單數(shù)據(jù)類型,稱為標準數(shù)據(jù)類型。整型(整型(integer) 在C+語言中,整型類型標識符為int。根據(jù)整型變量的取值范圍又可將整型變量定義為以下8種整型類型: 表表2-2實型數(shù)取值范圍實型數(shù)取值范圍字符型(字符型(char) 三、字符型字符常量有以下兩種表示法: 1、普通表示形式字符常量是由單個字符組成,所有字符采用ASCII編碼,ASCII編碼共有128個字符(表2-4)。在程序中,通常用一對單引號將單個字符括起來表示一個字符常量。如:a,A,0等。如字符A的序號是65,字符
22、a的序號是97, 字符0的序號的48。2、轉義字符表示形式。轉義字符有三種用法:表示控制字符、表示特殊字符、表示所有字符。常用的轉義字符如右表所示。ASCII編碼表見下圖:例例2.6 整型數(shù)據(jù)類型存儲空間大小整型數(shù)據(jù)類型存儲空間大小 分別定義int,short類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節(jié))?!緟⒖汲绦騾⒖汲绦颉?includeusing namespace std;int main() int x; short y; coutsizeof(x) sizeof(y)endl; /sizeof返回一個對象或者類型所占的內存字節(jié)數(shù)return 0; 基于char數(shù)據(jù)的這
23、個特點,它可以和int變量一樣做加減運算,例2.7說明了這種用法。例2.7 大小字母的轉換#includeusing namespace std;int main() char c1,c2; c1=a; c2=A; coutc1 c2endl; c1=c1-32; /小寫字母轉換大寫字母 c2=c2+32; /大寫字母轉換小寫字母 coutc1 c2endl; 運行結果:a AA a 因為所有小寫字母的ASCII值要比對應大寫字母的ASCII值大32,所以c1減去32后便得到原來字母的大寫形式。反之,c2加上32后便得到原來字母的小寫形式。四、數(shù)據(jù)類型轉換C+語言中,不同數(shù)據(jù)類型的運算對象進行
24、混合運算,或者需要將一個表達式的結果轉換成期望的類型時,就需要依據(jù)數(shù)據(jù)類型轉換規(guī)則進行轉換。 1、混合運算時的類型轉換規(guī)則整型、實型、字符型數(shù)據(jù)間可以混合運算。在這種情況下,需要將不一致的數(shù)據(jù)類型轉換成一致的數(shù)據(jù)類型,然后進行運算。為了保證運算精度,系統(tǒng)在運算時的轉換規(guī)則是將存儲長度較短的運算對象轉成存儲長度較長的類型,然后再進行處理。這種轉換是系統(tǒng)自動進行的,具體見表2-5所示?;旌线\算時的類型轉換規(guī)則 【說明如下說明如下】1)縱向箭頭表示必定會進行的轉換,如float型數(shù)據(jù)必先轉換為double型數(shù)據(jù),然后與其他操作數(shù)進行運算。與此類似,char型或short型數(shù)據(jù)必先轉換為int型數(shù)據(jù),
25、然后進行運算。2)橫向箭頭表示當運算對象為不同類型數(shù)據(jù)時的轉換方向,如int型數(shù)據(jù)與unsigned型數(shù)據(jù)進行運算,int型轉換為unsigned型后方可進行運算。int型與double型進行運算,int型直接轉換為double型后進行運算,不能理解為先轉換為unsigned int型,然后轉換為long int型,最后再轉換為double型。2、賦值時的類型轉換規(guī)則當賦值運算符兩側的數(shù)據(jù)類型不同時,需進行類型轉換,這種轉換是系統(tǒng)自動進行的,轉換規(guī)則如下:1)float、double型賦值給int型:直接截斷小數(shù)。例如,“int i=f+0.6;”,f的值為4.0,右邊算術表達式運算后的結果為
26、4.6的double型數(shù)據(jù),根據(jù)上述轉換原則,直接舍棄小數(shù),所以i的值為4。2)int、char型賦值給float、double型:補足有效位以進行數(shù)據(jù)類型轉換。例如:“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 int型截斷低字節(jié)給int型。5)int型賦值給long int型:賦給long int型的低16位,如果int型的最高位是0,則long int的高16位全為0;如果int型的最高位是1,則long int型的高
27、16位全為1(稱為“符號擴展”)。6)unsigned int型賦值給int型:直接傳送數(shù)值。7)非unsigned int型賦值給位數(shù)相同的unsigned int型:直接傳送數(shù)值。3、強制類型轉換 在C+語言中,還允許強制類型轉換,即將某一數(shù)據(jù)的數(shù)據(jù)類型轉換為指定的另一種數(shù)據(jù)類型,強制類型轉換只是臨時轉換。強制轉換運算符組成的運算表達式的一般形式為: (類型名)(表達式) 例如:已知有變量定義“int b=7;float a=2.5,c=4.7;”,求下面算術表達式的值。 a+(int)(b/3*(int)(a+c)/2.0)%4根據(jù)運算符的結合性規(guī)則,表達式要自左至右執(zhí)行,b/3為2,2
28、*(int)(a+c)為14,14/2.0為7.0,強制類型轉換后為7,7%4為3,a的值2.5與3相加,最終結果為5.5?!旧蠙C練習】1.整型數(shù)據(jù)類型存儲空間大小【1.2編程基礎之變量定義、賦值及轉換01】 分別定義int,short類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節(jié))。輸入: 無。輸出: 一行,兩個整數(shù),分別是兩個變量的存儲空間大小,用一個空格隔開。2.浮點型數(shù)據(jù)類型存儲空間大小【1.2編程基礎之變量定義、賦值及轉換02】 分別定義float,double類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節(jié))。輸入: 無。輸出: 一行,兩個整數(shù),分別是兩個變量
29、的存儲空間大小,用一個空格隔開?!旧蠙C練習】3.其他數(shù)據(jù)類型存儲空間大小【1.2編程基礎之變量定義、賦值及轉換03】 分別定義bool,char類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節(jié))。輸入: 無。輸出: 一行,兩個整數(shù),分別是兩個變量的存儲空間大小,用一個空格隔開。4.浮點數(shù)向零舍入【1.2編程基礎之變量定義、賦值及轉換06】 輸入一個單精度浮點數(shù),將其向零舍入到整數(shù)。說明:向零舍入的含義是,正數(shù)向下舍入,負數(shù)向上舍入。提示:可以使用強制類型轉換來實現(xiàn)。輸入: 輸出: 一個單精度浮點數(shù)。 一個整數(shù),即向零舍入到整數(shù)的結果。樣例輸入: 2.3樣例輸出: 2【上機練習】5.打
30、印ASCII碼【1.2編程基礎之變量定義、賦值及轉換07】 輸入一個除空格以外的可見字符(保證在函數(shù)scanf中可使用格式說明符%c讀入),輸出其ASCII碼。輸入: 一個除空格以外的可見字符。輸出: 一個十進制整數(shù),即該字符的ASCII碼。樣例輸入: A樣例輸出: 65【上機練習】6.打印字符【1.2編程基礎之變量定義、賦值及轉換08】 輸入一個整數(shù),即字符的ASCII碼,保證存在對應的可見字符。輸出相對應的字符。輸入: 一個整數(shù),即字符的ASCII碼,保證存在對應的可見字符。輸出: 一行,包含相應的字符。樣例輸入: 65樣例輸出: A【上機練習】7.整型與布爾型的轉換【1.2編程基礎之變量
31、定義、賦值及轉換09】 將一個整型變量的值賦給一個布爾型變量,再將這個布爾型變量的值賦給一個整型變量,得到的值是多少?輸入: 一個整型范圍內的整數(shù),即初始時整型變量的值。輸出: 一個整數(shù),經過上述過程后得到的結果。樣例輸入: 3樣例輸出: 1【上機練習】7.整型與布爾型的轉換【1.2編程基礎之變量定義、賦值及轉換09】 將一個整型變量的值賦給一個布爾型變量,再將這個布爾型變量的值賦給一個整型變量,得到的值是多少?輸入: 一個整型范圍內的整數(shù),即初始時整型變量的值。輸出: 一個整數(shù),經過上述過程后得到的結果。樣例輸入: 3樣例輸出: 1【上機練習】8.Hello,World!的大小【1.2編程基
32、礎之變量定義、賦值及轉換10】 在上一章里,我們曾經輸出過的“Hello, World!”嗎?它雖然不是本章所涉及的基本數(shù)據(jù)類型的數(shù)據(jù),但我們同樣可以用sizeof函數(shù)獲得它所占用的空間大小。輸入: 無。輸出: 一個整數(shù),即“Hello, World!”的大小。第五節(jié)數(shù)據(jù)輸入輸出C+語言中沒有提供專門的輸入輸出語句,所有的輸入輸出都是調用標準庫函數(shù)中的輸入輸出函數(shù)來實現(xiàn)的。在使用時,應在源程序的開頭使用如下語句:#include#includeusing namespace std;C+語言標準函數(shù)庫提供了許多標準輸入、輸出函數(shù),本節(jié)將介紹6個最基本的輸入、輸出函數(shù):字符輸入getchar,字
33、符輸出putchar,格式化輸入scanf,格式化輸出prinf,流輸入cin,流輸出cout。一、字符輸入函數(shù)getchar getchar函數(shù)是接收從鍵盤輸入的單個字符數(shù)據(jù)。它是一個無參函數(shù),其語法格式為:getchar();【說明】1)通常把輸入的字符賦予一個字符變量,構成賦值語句。例如: char ch; ch=getchar();2) getchar函數(shù)只能接受單個字符,輸入數(shù)字也按字符處理。3)輸入多于一個字符時,只接收第一個字符。4) getchar函數(shù)等待用戶輸入,直到按回車鍵才結束,可用于暫停程序的運行,直到輸入一個回車鍵。5)如果在程序中連續(xù)有兩個以上getchar()函數(shù)
34、,應該一次性輸入所需字符,最后再按回車鍵,否則會把回車作為一個字符傳給后面的getchar()函數(shù)。 例2.8 利用getchar函數(shù)接收鍵盤輸入。#include#includeusing namespace std;int main() char ch; ch=getchar(); /讀入字符 coutinput=chendl;二、字符輸出函數(shù)putchar putchar函數(shù)是字符輸出函數(shù),功能是向標準輸出設備(如顯示器)輸出單個字符數(shù)據(jù),其語法格式為: putchar(ch); /其中,ch為一個字符變量或常量。 例2.9 利用putchar 函數(shù)輸出字符。#include#inclu
35、deusing namespace std;int main() char c=B; /定義字符變量c并賦值B putchar(c); /輸出該字符 putchar(x42); /用轉義字符輸出字母B putchar(0 x42); /用16進制ASCII碼值輸出字母B putchar(66); /用10進制ASCII碼值輸出字母B運行結果:BBBB三、通過三、通過cout流輸出數(shù)據(jù)流輸出數(shù)據(jù)流插入運算符和cout結合在一起使用,可向顯示器屏幕輸出數(shù)據(jù)。格式1:功能:它把表達式的值輸出到屏幕上,該表達式可以是各種基本類型的常量、變量或者由它們組成的表達式。輸出時,程序根據(jù)表達式的類型和數(shù)值大小
36、,采用不同的默認格式輸出,大多數(shù)情況下可滿足要求。若要輸出多個數(shù)據(jù),可以連續(xù)使用流插入運算符格式2:功能:將表達式的內容一項接一項的輸出到屏幕上。 1輸出字符串和輸出變量的區(qū)別每當我們輸出字符串常量的時候,必須用雙引號把字符串引起來,以便將它和變量名明顯的區(qū)分開來。例2.10下面兩個語句是不同的:cout Hello ; /打印字符串Hello到屏幕上cout Hello ; cout Hello; /把變量Hello存儲的內容打印到屏幕上2如何增強信息的可讀性為了增強輸出信息的可讀性,在輸出多個數(shù)據(jù)時可以通過插入空格符,換行符或其他提示信息將數(shù)據(jù)進行組織,以獲得更好的效果。例2.11 x=1
37、2;cout tom is my friend,he is;cout x;cout years old;輸出結果為tom is my friend,he is12year old 3換行符的使用必須注意,除非我們明確指定,cout并不會自動在其輸出內容的末尾加換行符,因此下面的語句: 例2.12cout This is a sentence. ;cout This is another sentence. ; 將會有如下內容輸出到屏幕:This is a sentence.This is another sentence. 雖然我們分別調用了兩次cout,兩個句子還是被輸出在同一行。所以,為了
38、在輸出中換行,我們必須插入一個換行符來明確表達這一要求,在C+中換行符可以寫作n。cout First sentence.n;cout Second sentence.nThird sentence.; 將會產生如下輸出: First sentence.Second sentence.Third sentence. 另外,你也可以用操作符endl來換行,例如:cout First sentence. endl;cout Second sentence. endl; 將會輸出:First sentence.Second sentence. 例2.13在屏幕上輸出2 34cout2 3endl;c
39、out4;或 cout和cin結合在一起使用,可從鍵盤輸入數(shù)據(jù)。格式格式1:功能:是從鍵盤讀取一個數(shù)據(jù)并將其賦給“變量”。說明:在使用cin輸入的時候必須考慮后面的變量類型。如果你要求輸入一個整數(shù),在 后面必須跟一個整型變量,如果要求一個字符,后面必須跟一個字符型變量。例2.14聲明一個整型變量age然后等待用戶從鍵盤輸入到cin并將輸入值存儲在這個變量中。int age;cin age; 也可以連續(xù)使用,實現(xiàn)從鍵盤對多個變量輸入數(shù)據(jù)。格式格式2:這要求從鍵盤輸入的數(shù)據(jù)的個數(shù)、類型與變量相一致。從鍵盤讀取數(shù)據(jù)時,各數(shù)據(jù)之間要有分隔符,分隔符可以是一個或多個空格鍵、回車鍵等。 例2.15用cin
40、 讓用戶輸入多個數(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:這時從鍵盤輸入一個整數(shù)和兩個實數(shù),中間用一個或多個空格鍵作分隔符。 如輸入65 2.3 3.5 最后屏幕顯示:c=A i=65 x=2.3 y=3.5程序中n和t都是轉義符。 n 和n效果相同,都表示換行符。t是制
41、表符,可以理解為連續(xù)輸出幾個空格。字符變量和整型變量i的值都是65,但輸出的形式不同。 五、格式化輸入函數(shù)scanfscanf函數(shù)的功能是格式化輸入任意數(shù)據(jù)列表,其一般調用格式為:scanf(格式控制符,地址列表)【說明說明】 1)地址列表中給出各變量的地址,可以為變量的地址,也可以為字符串的首地址。 2)格式控制符由%和格式符組成,作用是將要輸入的字符按指定的格式輸入,如%d,%c等。 表2-6 scanf函數(shù)的格式符表2-7 scanf函數(shù)的附加格式說明符 六、格式化輸出函數(shù)printfprintf函數(shù)的功能是格式化輸出任意數(shù)據(jù)列表,其一般調用格式為:printf(格式控制符,輸出列表)【
42、說明】1)格式控制由輸入格式說明和普通字符組成,必須用雙引號括起來。格式說明由%和格式字符組成,作用是將要輸出的字符轉換為指定的格式,如%d,%c等。普通字符是在輸出時原樣輸出的字符,一般在顯示時起提示作用。 2)輸出列表是需要輸出的一組數(shù)據(jù)(可以為表達式和變量),各參數(shù)之間用“,”分開。要求格式說明和各輸出項在數(shù)量和類型上要一一對應,否則將會出現(xiàn)意想不到的錯誤。 表2-8 printf函數(shù)的格式符 例如,對如下程序段int i=1;long j=123;printf(%d,%2d,%03d,%1d,%-4ld,%05ld,i,i,i,j,j,j);輸出:1, 1,001,123,123 ,0
43、0123 表2-9 d格式符 表2-10 f格式符 表表2-11 s2-11 s格式符格式符 例例2.17 某幼兒園里,有5個小朋友編號為1,2,3,4,5,他們按自己的編號順序圍坐在一張圓桌旁。他們身上都有若干個糖果(鍵盤輸入),現(xiàn)在他們做一個分糖果游戲。從1號小朋友開始,將自己的糖果均分三份(如果有多余的糖果,則立即吃掉),自己留一份,其余兩份分給他的相鄰的兩個小朋友。接著2號、3號、4號、5號小朋友同樣這么做。問一輪后,每個小朋友手上分別有多少糖果?!痉治觥款}目中有5位小朋友,他們初始時糖果的數(shù)目不確定,用a,b,c,d,e分別存儲5個小朋友的糖果數(shù),初始值由鍵盤輸入。程序如下:#inc
44、ludeusing namespace std;int main() int a,b,c,d,e; scanf(%d%d%d%d%d,&a,&b,&c,&d,&e); a=a/3;b=b+a;e=e+a; /1號小朋友分糖 b=b/3;c=c+b;a=a+b; /2號小朋友分糖 c=c/3;d=d+c;b=b+c; /3號小朋友分糖 d=d/3;e=e+d;c=c+d; /4號小朋友分糖 e=e/3;a=a+e;d=d+e; /5號小朋友分糖 printf(%5d%5d%5d%5d%5dn,a,b,c,d,e); /%5d按5位寬度輸出 return 0
45、;運行結果:輸入:8 9 10 11 12 輸出: 11 7 9 11 6七、幾種輸入輸出格式的幾點說明1、cin和cout在Dev C+中只能調用庫,而其他輸入輸出格式要調用庫或庫。2、cin和cout屬于C+的概念,調用時涉及輸入輸出流,而scanf和printf屬于C的概念,是C語言的標準輸入/輸出庫中的函數(shù),所以在時效上,scanf和printf優(yōu)于cin、cout,對于大數(shù)據(jù)的輸入輸出,通常情況下應該用scanf、printf。 3、對于普通數(shù)據(jù)的輸入輸出,cin和cout比較方便,而在格式化方面,scanf和printf比較容易。cin效率比scanf低很多,尤其輸入數(shù)據(jù)達到20萬
46、以上時非常明顯,在100萬時cin讀入就會超時。 4、scanf和printf也缺點,cin和cout能夠自動識別變量的數(shù)據(jù)類型,因此,在進行輸入輸出時,不需要指定數(shù)據(jù)類型,printf和scanf函數(shù)在輸入輸出時需指定數(shù)據(jù)類型?!旧蠙C練習】1.輸出保留3位小數(shù)的浮點數(shù)【1.1編程基礎之輸入輸出04】 讀入一個單精度浮點數(shù),保留3位小數(shù)輸出這個浮點數(shù)。輸入: 只有一行,一個單精度浮點數(shù)。輸出: 也只有一行,讀入的單精度浮點數(shù)。樣例輸入: 12.34521樣例輸出: 12.345【上機練習】2.輸出保留12位小數(shù)的浮點數(shù)【1.1編程基礎之輸入輸出05】 讀入一個雙精度浮點數(shù),保留12位小數(shù),輸出
47、這個浮點數(shù)。輸入: 只有一行,一個雙精度浮點數(shù)。輸出: 也只有一行,保留12位小數(shù)的浮點數(shù)。樣例輸入: 3.1415926535798932樣例輸出: 3.141592653580【上機練習】3.空格分隔輸出【1.1編程基礎之輸入輸出06】 讀入一個字符,一個整數(shù),一個單精度浮點數(shù),一個雙精度浮點數(shù),然后按順序輸出它們,并且要求在他們之間用一個空格分隔。輸出浮點數(shù)時保留6位小數(shù)。輸入: 第一行是一個字符; 第二行是一個整數(shù); 第三行是一個單精度浮點數(shù); 第四行是一個雙精度浮點數(shù)。輸出: 輸出字符、整數(shù)、單精度浮點數(shù)和雙精度浮點數(shù),之間用空格分隔。樣例輸入: 樣例輸出: a a 12 2.300
48、000 3.200000 12 2.3 3.2 【上機練習】4.輸出浮點數(shù)【1.1編程基礎之輸入輸出07】 讀入一個雙精度浮點數(shù),分別按輸出格式“%f”,“%f”保留5位小數(shù),“%e”和“%g”的形式輸出這個整數(shù),每次在單獨一行上輸出。輸入: 一個雙精度浮點數(shù)。輸出: 第一行是按“%f”輸出的雙精度浮點數(shù); 第二行是按“%f”保留5位小數(shù)輸出的雙精度浮點數(shù); 第三行是按“%e”輸出的雙精度浮點數(shù); 第四行是按“%g”輸出的雙精度浮點數(shù)。樣例輸入: 12.3456789樣例輸出: 12.345679 12.34568 1.234568e+001 12.3457 【上機練習】5.字符菱形【1.1編
49、程基礎之輸入輸出09】 給定一個字符,用它構造一個對角線長5個字符,傾斜放置的菱形。輸入: 輸入只有一行, 包含一個字符。輸出: 該字符構成的菱形。樣例輸入: *樣例輸出: * * * * * 第六節(jié)順序結構實例我們已經學習了數(shù)據(jù)輸入輸出、賦值語句以及基本的數(shù)據(jù)類型。下面舉一些實例,通過閱讀和模仿這些程序,讓選手逐步熟悉程序的編寫和鞏固知識點,為以后各章的學習打好基礎。 例2.18 輸入一個三位數(shù),要求把這個數(shù)的百位數(shù)與個位數(shù)對調,輸出對調后的數(shù)?!痉治觥肯惹蟪鲎匀粩?shù)的個位、十位、百位,然后個位與百位對調。程序如下:#includeusing namespace std;int main()
50、int a,b,c,m,n; cinm; /輸入一個三位數(shù) a=m/100; /百位數(shù) b=(m/10)%10; /十位數(shù) c=m%10; /個位數(shù) n=c*100+b*10+a; /重新組合對調后的數(shù) coutn=nendl; /輸出結果運行結果:輸入:234輸出:n=432 例2.19 已知某班有男同學x位,女同學y位,x位男生平均分是87分,y位女生的平均分是85,問全體同學平均分是多少分?【分析】 男女生的人數(shù)需要用戶輸入,然后根據(jù)題意(x*87+y*85)/(x+y)求出全體同學的平均分。程序如下:#includeusing namespace std;int main() int
51、x,y; cinxy; /輸入男女人數(shù) coutfloat(x*87+y*85)/(x+y)endl; /數(shù)據(jù)類型強制轉換,按實數(shù)格式輸出,4位小數(shù) 例2.20 歌手大獎賽上6名評委給一位參賽者打分,6個人打分的平均分為9.6分;如果去掉一個最高分,這名參賽者的平均分為9.4分;如果去掉一個最低分,這名參賽者的平均分為9.8分;如果去掉一個最高分和一個最低分,這名參賽者的平均是多少?【分析】 首先求出6名評委的總分,然后根據(jù)去掉最高分的總分和最低分的總分,求出最高分的分值和最低分的分值,最后總分減去最高分和最低分除以4即是答案。程序如下:#includeint main() float hig
52、h,low,sc_all,sc_high,sc_low,ans; sc_all=6*9.6; /求6名評委的總分 sc_high=5*9.4; /求去掉最高分后的總分 sc_low=5*9.8; /求去掉最低分后的總分 high=sc_all-sc_high; /求最高分 low=sc_all-sc_low; /求最低分 ans=(sc_all-high-low)/4; /求平均分 printf(%5.2fn,ans); /%5.2f按實數(shù)格式輸出,保留2位小數(shù) /運行結果: 9.60 例2.21 傳說古代的敘拉古國王海倫二世發(fā)現(xiàn)的公式,利用三角形的三條邊長來求取三角形面積。已知ABC中的三邊
53、長分別為a,b,c,求ABC的面積。(提示:海倫公式 ,其中p=(a+b+c)/2 ) 【分析】 公式中是三角形周長的一半,求出后直接代入海倫公式中求得面積。#include /Dev C+可調用和庫#include /在Dev C+中可調用數(shù)學函數(shù)庫cmathint main() float a,b,c,p,s; scanf(%f%f%f,&a,&b,&c); /輸入三角形的三邊 p=(a+b+c)/2; /求出p的值 s=sqrt(p*(p-a)*(p-b)*(p-c); /根據(jù)p求面面積,sqrt是開方函數(shù) printf(%0.3fn,s); /輸出面積,0.3f
54、按實際位數(shù)輸出,保留3位小數(shù)運行結果:輸入:3 4 5 輸出:6.000)()(cpbpapps 例2.22 分錢游戲。甲、乙、丙三人共有24元錢,先由甲分錢給乙、丙兩人,所分給的數(shù)與各人已有數(shù)相同;接著由乙分給甲、丙,分法同前;再由丙分錢給甲、乙,分法亦同前。經上述三次分錢之后,每個人的錢數(shù)恰好一樣多。 求原先各人的錢數(shù)分別是多少?【分析】 設甲、乙、丙三人的錢數(shù)分別為A,B,C。用倒推(逆序)算法, 從最后結果入手,按反相順序,分步驟推算出每次各人當時的錢數(shù) : (在每個步驟中,各人錢數(shù)分別存在A、B、C中)#include /Dev C+可調用和庫int main() /調用iostre
55、am庫,使用printf語句編譯通不過 int a,b,c; a=8; b=8; c=8; /對應于步驟 a=a/2;b=b/2;c=a+b+c; /對應于步驟 a=a/2;c=c/2;b=a+b+c; /對應于步驟 b=b/2;c=c/2;a=a+b+c; /對應于步驟 printf(a=%-5db=%-5dc=%-5dn,a,b,c); /%-5d按5位寬度輸出,左對齊。運行結果:a=13 b=7 c=4 例2.23 求一元二次方程x2+3x+2=0的兩個實數(shù)根?!痉治觥糠匠痰南禂?shù)是常量,分別用A,B,C表示,運用數(shù)學求方程的根,采取如下方法 : 先求出d=B2-4AC;(求根公式中需用開方運算的那部分) 再用求根公式算出x1,x2的值。(x1,x2 = ? ) 輸出x1,x2。#include /Dev C+可調用庫#include /在Dev C+中可調用數(shù)學函數(shù)庫cmath#define A 1#define B 3 /常量說明,A,B,C表示方程系數(shù)#define C 2int main() int d; /d為整型變量 float x1,x2; /x1,x2為實型變量 d=B*B-4*A*C; x1=(-B+sqrt(d)/(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 揚塵治理委托協(xié)議模板
- 2025年度文化創(chuàng)意產品開發(fā)合作協(xié)議范本3篇
- 2025版外債借款合同法律框架與政策背景分析3篇
- 2025年銷售薪資與銷售團隊建設合同2篇
- 2025版押一付三車位租賃合同模板參考9篇
- 2025年高端住宅產權轉讓合同范本3篇
- 2025-2030全球熔鹽儲熱設備行業(yè)調研及趨勢分析報告
- 2025年全球及中國實驗室渦旋混合器行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025版投票權委托合同:股東權益保護專項3篇
- 2025年度綠色有機農產品個人果園承包經營合同書4篇
- 2025年N1叉車司機考試試題(附答案)
- 《醫(yī)院財務分析報告》課件
- 2025老年公寓合同管理制度
- 2024年考研政治試題及答案
- 2024-2025學年人教版數(shù)學六年級上冊 期末綜合卷(含答案)
- 2024中國汽車后市場年度發(fā)展報告
- 感染性腹瀉的護理查房
- 天津市部分區(qū)2023-2024學年高二上學期期末考試 物理 含解析
- 2025年初級社會工作者綜合能力全國考試題庫(含答案)
- 《人工智能基礎》全套英語教學課件(共7章)
- GB/T 35613-2024綠色產品評價紙和紙制品
評論
0/150
提交評論