版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C++程序設計課程安排及要求課程信息:總學時:48學時上課:24學時上機:24學時考試方式:待定課堂要求:1.不允許無故缺席,缺席一次,平時成績扣10分。2.采取不定時點名,累積缺席達3次,取消該門課考試資格。上機要求:上機玩游戲、聊天者,發(fā)現(xiàn)一次扣平時成績2分,累計8次,平時成績記0分關于C++語言課程C與C++(C加加,see-plus-plus)貝爾實驗室于二十世紀八十年代在C語言的基礎上開發(fā)的。C++是C語言的超集,包含了C語言的所有內容,同時增加了面向對象編程方面的內容。C++與Java和C#C++是Java和C#的始祖。Java和C#是C++的子集與簡化因此,學習C++后學習Java與C#會事半工倍、倍感輕松。參考書目與課時安排參考書目C++程序設計導學.李春葆著.北京:清華大學出版社C++語言程序設計教程楊進才沈顯君劉蓉編著清華大學出版社C++Primer(3RD)中文版.StanleyB.Lippman,Josee
Lajoie
著.潘愛民,張麗譯.北京:中國電力出版社
如何學好C++能細能粗在面向過程編程部分,對數(shù)據(jù)類型、運算符、語句等要注重細節(jié)。做到細致掌握。在面向對象部分重在對概念的掌握,對每個概念回答是什么?為什么?如何?這三個問題。做到掌握思想。重視實踐和學好所有編程語言一樣,做到“上機、上機、再上機”。利用資源利用網(wǎng)絡資源進行學習、交流、答疑。如清華大學的BBS站的C++學習園地上有大量的帖子。地址:第1章C++編程簡介本章內容1.1計算機程序設計語言1.2面向過程的程序設計1.3面向對象的程序設計1.4C++概述1.5C++程序實例
1.1計算機程序設計語言機器語言匯編語言高級語言面向過程面向對象CPU指令系統(tǒng),由0、1序列構成的指令碼組成如:10000000加
10010000減用助記符號描述的指令系統(tǒng)如ADDAX,BX面向機器的語言程序設計依賴解決問題的過程客觀事物描述成具有屬性和行為的對象;同一類對象的共同屬性和行為形成類;封裝對象間通過發(fā)送和接受消息發(fā)生聯(lián)系;類的繼承與多態(tài)性可以提供使用現(xiàn)成類的機制,從而實現(xiàn)代碼的重用.
程序設計關鍵是定義類,并由類實例化成對象接近人的自然語言習慣,如:100+200
1.2面向過程的程序設計本質:通過程序來進行數(shù)據(jù)處理高級語言:1、面向過程的語言BASIC、PASCAL、C2、面向對象的語言C++、JAVA
1.2面向過程的程序設計例如:要向屏幕打印一個“A”字符1、BASIC語言:PRINT“A”2、PASCAL語言:writeln(‘A’);3、C語言:printf(“A”);4、C++語言:cout<<“A”;5、JAVA語言:System.out.print("A");主要思想自頂向下逐步求精核心算法:為解決某一應用問題而采用的解題步驟。 一個計算機程序可以看成是由一系列任務組成的,任何一項任務如果過于復雜就將其分解成一系列較小的子任務,直至每一項任務都很小,很容易解決。1.2面向過程的程序設計基本結構1.2面向過程的程序設計“面向過程的程序設計”不足:1、生產率低下,軟件代碼重用程度低;2、軟件維護困難?!懊嫦驅ο蟮某绦蛟O計”本質:把數(shù)據(jù)和處理數(shù)據(jù)的過程當成一個整體即對象。“面向對象的程序設計”優(yōu)點:與人類習慣的思維方式一致??芍赜眯院谩?删S護性好。1.3面向對象的程序設計對象是實現(xiàn)世界中的一個實際存在的事物張三李四抽象類是具有相同屬性和服務的一組對象的概括屬性服務性別,年齡…說話,行走…具體化繼承新類人說話,行走…性別,年齡…大學生性別,年齡,專業(yè)…說話,行走,學習…消息1.3面向對象的程序設計封裝:信息隱蔽:通過將類定義的成員設置成不同的訪問權限來實現(xiàn)。繼承和派生:在程序中定義類,當出現(xiàn)兩個或多個類享有相似的情況,就不必重復在類中定義,可通過繼承,從其他類派生出其他類。多態(tài)性:指在一般類中定義的屬性和行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。1.3面向對象的程序設計1.4C++語言概述全面支持C
C++語言的產生
1983加入類CC++ANSIC++1994標準化C++語言的特點
面向對象比C更完善、安全、高效
1.3C++程序開發(fā)過程程序代碼的錄入、修改執(zhí)行預處理指令,詞法分析、語法分析后生成目標程序與其它目標程序或庫連接,生成可執(zhí)行程序1.4C++程序實例
/*************************************************程序文件名:p1_1.cpp**本程序顯示:HelloC++!**設計者:魯瑩時間:8-27-2007************************************************/#include<iostream>//載入頭文件usingnamespacestd;//使用命名空間stdvoidmain()//程序入口{
cout<<"HelloC++!"<<endl;}
預處理命令無返回值無參數(shù)、無返回值的主函數(shù)主函數(shù)名函數(shù)開始函數(shù)體語句結束標志函數(shù)結束運行結果:
HelloC++!注釋塊注釋行在C++程序中,注釋塊由“/*”開始,由“*/”結束,可以實現(xiàn)多行注釋
。也可使用“//”進行單行注釋。
C++語言的預處理命令都是以“#”號開頭。iostream是一個頭文件,系統(tǒng)頭文件不帶.h后綴
cout為標準輸出流對象,它與顯示器相連。<<是插入操作符,endl為換行符號。整個語句的功能是將”HelloC++!”字符串與endl依次插入到cout中
main是主函數(shù)名,一個C++語言程序有且僅有一個main函數(shù)。C++程序執(zhí)行時就是從main函數(shù)開始.
C++語言規(guī)定:語句以分號結束
?為什么:標準C++庫提供的對象等都放在標準名字空間std中,要使用它們,必須要聲明使用標準名字空間std.
使用標準名字空間std有3種方式:整體聲明
usingnamespacestd;使用時單個對象臨時聲明
std::cout<<"HelloC++"<<std::endl;單個對象使用前聲明
usingstd::cout;
整體聲明#include<iostream>usingnamespacestd;voidmain(){
cout<<"HelloC++!"<<endl;}單個對象臨時聲明#include<iostream>voidmain()
{
std::cout<<”HelloC++!”<<std::endl;}單個對象使用前聲明#include<iostream>usingstd::cout;usingstd::endl;voidmain(){
cout<<”HelloC++!”<<endl;}使用名字空間相同的名字放在不同空間以防止命名沖突
cin>>對象1>>對象2>>...>>對象n;
cout<<對象1<<對象2<<...<<對象n;C++中使用對象cin
作為標準輸入流對象,通常代表鍵盤,cin與提取操作符>>連用,使用格式為:意思是從標準輸入流對象鍵盤上提取n個數(shù)據(jù)分別給對象1、對象2、...、對象n。C++中使用對象cout
作為標準輸出流對象,通常代表顯示設備,cout
與插入操作符<<連用,使用格式為:意思是依次從將對象1、對象2、...、對象n插入到標準輸出流對象中,從而實現(xiàn)了對象在顯示器上的輸出.C++輸入/輸出簡介本章小結程序設計語言經(jīng)歷了從機器語言、匯編語言、高級語言、面向對象的語言的發(fā)展過程,使得編程語言與人的自然語言越來越接近,編程效率越來越高。程序設計方法經(jīng)歷了面向過程的方法、結構化的方法、面向對象的方法的發(fā)展過程。C++語言具有全面兼容C與面向對象的特點,支持結構化與面向對象程序設計方法。面向對象的基本概念有:對象、類、封裝、繼承、消息、多態(tài)性。C++程序設計的步驟有編輯、預編譯、編譯、連接、調試與運行。程序注釋有兩種方法,應培養(yǎng)給程序寫注釋的好習慣。預處理指令include在編譯的預處理階段將頭文件搬到程序中,包含文件是C++程序的必不可少的部分。標準C++的類庫定義在名字空間std中,可以通過三種方法使用名字空間。實驗一熟悉Vc++上機環(huán)境編程實現(xiàn)在屏幕上顯示輸出“Hello,VC++!”實現(xiàn)在屏幕上顯示輸出以下圖形:
*********第2章C++數(shù)據(jù)類型主講:魯瑩本章內容2.1
數(shù)據(jù)類型概述2.2
常量與變量2.3
基本類型2.4
運算符和表達式2.5
類型轉換
基本整型(int)
短整型(short)
整型長整型(long)
無符號型(unsigned)
基本類型
單精度型(float)
實型(浮點型)雙精度型(double)
字符型(char)擴展雙精度型(longdouble)數(shù)據(jù)類型布爾型(bool)
空類型(void)
數(shù)組類型([])
指針類型
(*)
構造類型結構體類型(struct)
共用體類型(union)
枚舉型(enum)
類(class)2.1數(shù)據(jù)類型概述C++中新增2.1數(shù)據(jù)類型概述數(shù)據(jù)類型和內存空間不同的數(shù)據(jù)類型,加上不同的修飾符就具有了不同的特點,在內存中占用的空間也不同,因而其所能表示的數(shù)值范圍也不盡相同。內存單元的單位是字節(jié),因此用來表示數(shù)據(jù)類型的長度的單位也是字節(jié)。2.1數(shù)據(jù)類型概述注意整型int的長度等于機器的字長:16位機:int=2字節(jié);32位機:int=4字節(jié)。但是short和long表示的數(shù)據(jù)長度是固定的,任何支持標準C++的編譯器都是如此,因而如果需要編寫可移植性好的程序,應將整型聲明為short或long。2.1數(shù)據(jù)類型概述例題編寫一個程序,輸出基本數(shù)據(jù)類型char,int,float,double,bool的長度。提示:使用sizeof(數(shù)據(jù)類型)能夠獲取不同數(shù)據(jù)類型的長度。2.1數(shù)據(jù)類型概述//輸出基本數(shù)據(jù)類型的長度#include<iostream>usingnamespacestd;voidmain(){cout<<“char:”<<sizeof(char)<<“字節(jié)\n";cout<<"int:"<<sizeof(int)<<"字節(jié)\n";cout<<"float:"<<sizeof(float)<<"字節(jié)\n";cout<<"double:"<<sizeof(double)<<"字節(jié)\n";cout<<"bool:"<<sizeof(bool)<<"字節(jié)\n";}2.2常量與變量2.2.1常量2.2.2變量#include<iostream>usingnamespacestd;voidmain(void){constintPRICE=30;
intnum,total;floatv,r,h;num=10;total=num*PRICE;
cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;
cout<<v<<endl;}常量變量變量先聲明后使用Page31字符常量2.2.1常量嚴格來說,常量又分成符號常量和常數(shù)。符號常量:代表一個固定不變值的名字常數(shù)(整型和浮點型):程序中使用的具體的數(shù)據(jù)2.2.1常量與符號常量符號常量C++中提供了一個關鍵字const,用來區(qū)分常量和變量。并且由于常量代表一個固定的值,并且該值在程序運行過程中不能夠被改變,所以要求常量在定義的時候必須進行初始化。定義形式有:⑴
const
數(shù)據(jù)類型符號常量名=初始值;
例如:constdoublePI=3.1415926;注意:①
constdoublePI;
PI=3.1415926;
//error
②
constdoublePI=;
//error
③
constintM=max(15,23);
//error
⑵#define
符號常量名初始值例如:#definePI3.14159262.2.1常量與符號常量2.2.2變量什么是變量?在C++中,變量是存儲信息的地方。變量的實質是內存中的一個地址空間,在這個地址空間中可以進行數(shù)據(jù)的存儲和讀取。2.2.2變量變量有三個基本要素:名字、類型和值。C++的程序設計中,在使用變量前必須首先定義變量,即指定變量的名稱與數(shù)據(jù)類型。變量一經(jīng)定義,系統(tǒng)根據(jù)其數(shù)據(jù)類型在內存中為該變量分配一定的存儲單元,在該存儲單元中可存放變量的值。變量的定義
一般格式為:
數(shù)據(jù)類型關鍵字變量名表;
說明:(1)變量名表:可以包含若干個變量,彼此間用
逗號分開。變量名必須是合法的標識符,不能用C++的關鍵字作為變量名。
(2)數(shù)據(jù)類型:變量可以被定義為基本數(shù)據(jù)類型和構造類型。
例如:
intx;
floatarea,width,length;
變量的定義
注意:
與C語言不同,C++語言中的變量定義不必位于程序的開始,可以穿插在其它語句中間。變量最好在使用時才定義,這樣可以增加程序的可讀性,避免變量發(fā)生混淆。初始化變量在定義變量的同時給其一個初始值,稱為初始化變量。例如:
unsignedshortwidth=5;
longwidth=8,length=8;
doublearea,radius=20;或unsignedshortwidth(5);
longwidth(8),length(8);
“函數(shù)表示法”
doublearea,radius(20);初始化變量#include<iostream>usingnamespacestd;voidmain(){Int
myAge=18;cout<<“myAge=”<<myAge<<endl;myAge=20;cout<<“myAge=”<<myAge<<endl;}運行結果:myAge=18myAge=201.整型2.實型(浮點型)3.字符型4.布爾類型5.void類型小結2.3基本類型voidmain()整型
1.
整型常量的表示
2.
整型變量的分類關鍵字:int整型常量的表示(1)十進制整數(shù):非0開頭的,以0至9數(shù)字、正負號組成的常數(shù),如1234,-10為合法十進制整常數(shù),而123.0,1.23E+2是非法的十進制整常數(shù)。(2)八進制整數(shù):以O開頭的,由0至7數(shù)字組成的數(shù)字串,不能帶符號,如O1234,O10為合法八進制整常數(shù),而1234,028則是非法的八進制整常數(shù)。整型常量的表示(3)十六進制整數(shù):以0x(或0X)開頭的,由0至9數(shù)字和a至f(或A至F)字符組成,不能帶符號,如0x10,0x2f,0xa為合法的十六進制整常數(shù),而12,0xgf,20H是非法的十六進制整常數(shù)。注意:C++中,十進制數(shù)有正負之分,但八進制和十六進制數(shù)只能表示無符號整數(shù)。以下選項中可以作為C/C++語言合法整數(shù)的是
。
A)10110BB)0368C)0XffaD)x2a2整型變量的分類(1)signed:表示有符號位(可缺省,int型);(2)unsighed:表示無符號位(unsigned[int]型);(3)long:表示長型(long[int]
型和unsignedlong型);(4)short:表示短型(short[int]
型和unsignedshort型);例如:signedinta;等價于inta;
unsigned
inta;等價于unsigneda;
long
inta;等價于
longa;
short
inta;等價于
shorta;整型變量的分類
在十進制、八進制和十六進制表示的整常數(shù)中,若數(shù)字串的后面加上字母l(或L),則說明該常數(shù)為長整數(shù),如12L,027l,0xa1L,0x9FL。若數(shù)字串的后面加上字母u(或U),則說明該常數(shù)為無符號整數(shù),如5U。說明:實型
1.
實型常量表示法
2.
實型變量的分類關鍵字:float和double(1)小數(shù)表示法:由符號、數(shù)字和小數(shù)點組成的常數(shù),可以省去整數(shù)部分,只保留小數(shù)部分,但絕對不能沒有小數(shù)點。如2.55,0.0,-12.3,.234,250.等都是合法的十進制小數(shù)。(2)科學表示法:在小數(shù)表示法后加e(或E)及指數(shù)部分。注意:E或e的前面必須要有數(shù)字,且E后面的指數(shù)必須為整數(shù),指數(shù)部分可正可負。如2.1E+5,123E-3,123e3,123.e3都是合法的,而345,-.5,3.E,e5等都是非法的指數(shù)形式。實型常量表示法實型變量的分類(1)單精度型:float型;(數(shù)據(jù)長度為4個字節(jié))(2)雙精度型:double型;(數(shù)據(jù)長度為8個字節(jié))(3)擴展雙精度型:longdouble型;(數(shù)據(jù)長度為16個字節(jié))實型變量的分類
1.在C++中,一個實型常數(shù)如果沒有任何說明,則表示double型(默認型),如:12.3。
2.若要表示float型數(shù),則必須在實型數(shù)后面加上F或f,如:12.3f,12.3e4f。
3.若要表示longdouble型數(shù),則必須在實數(shù)后加上L或l,如:12.3L,12.3e4L。
說明:字符型
1.
字符型常量
2.
字符串常量關鍵字:char
例如:charc;
/*字符變量c在內存中占用一個字節(jié)*/一般字符常量:用單引號括起來的一個字符,其值為ASCII代碼值。如‘a’,‘A’,‘#’,‘$’。在內存中,字符數(shù)據(jù)是以ASCII碼值存儲的(即以整數(shù)表示),占據(jù)一個字節(jié)。因此C++使字符數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。如:
‘A’=65=0101=0x41=01000001‘A’和‘a’是不‘a’=97=0141=0x61=01100001同的字符常量‘0’=48=060=0x30‘0’和0是截然‘1’=49=061=0x31不同的兩個數(shù)字符型常量HELLO\0
字符串常量字符串常量
是用一對雙引號括起來的字符序列。如“a”,“a\\\””,“123”,“Howdoyoudo?\n”,“¥1.23”等都是字符串常量。字符串中可以出現(xiàn)空格或其他字符,也可以包含C++以外的字符,如漢字等。
在C++中,字符串常量和字符常量是不同的,字符串常量中的字符連續(xù)存儲,并在最后加上字符‘\0’作為字符串結束的標志。例如字符串“HELLO”在內存中占連續(xù)6個內存單元,如圖:字符串常量
字符串常量和字符常量的區(qū)別為:①表現(xiàn)形式不同:“x”,
‘x’
②在內存中存放時所占空間不同:字符常量占1字節(jié)用于存放字符的ASCII碼值;而字符串常量除每個字符占用1字節(jié)存放其ASCII碼值外,還需1字節(jié)存放結束標志‘\0’。例如“x”在內存中占連續(xù)兩個單元(即2個字節(jié)),第二個單元存放‘\0’結束符,而字符常量‘x’占一個字節(jié)。③操作不同:字符常量可以在一定范圍與整數(shù)進行加減運算。如‘r’-‘a’+3是合法的,而“r”-“a”+3是非法的。④存放兩者的變量不同:字符常量存放在字符變量中,而字符串常量需要存放在一個一維字符數(shù)組中。如:charch=‘a’;是正確的,而charch=“a”;是不正確的。即不能將字符串常量賦給字符變量。布爾類型布爾“bool”是表示邏輯變量的專有名詞,所代表的意義就只有“真true”和“假false”兩種。布爾數(shù)據(jù)是用來控制程序的執(zhí)行方式的,或者說是用來處理程序中判斷或比較結果的。例如:boolflag=true;//聲明一個布爾變量
doubled=5.32;
if(flag==false)d=3.24;
由定義,true轉為整型值時為1,false為0。相應的,非零值可以隱式地轉為true,而0為false。bool類型的變量至少占據(jù)和char一樣的空間。2.4運算符與表達式算術運算符與算術表達式基本算術運算符
+-*/(若整數(shù)相除,結果取整)%(取余,操作數(shù)為整數(shù))優(yōu)先級與結合性先乘除,后加減,同級自左至右++,--(自增、自減)例:i++;--j;Page57基本數(shù)據(jù)類型和表達式賦值運算符和賦值表達式
簡單的賦值運算符"="舉例
n=n+5表達式的類型
等號左邊對象的類型表達式的值
等號左邊對象被賦值后的值Page58基本數(shù)據(jù)類型和表達式賦值運算符和賦值表達式
復合的賦值運算符有10種復合運算符:
+=,-=,*=,/=,%=,
<<=,>>=,&=,^=,|=例
a+=3
等價于a=a+3
x*=y+8
等價于x=x*(y+8)基本數(shù)據(jù)類型和表達式賦值運算符和賦值表達式
——賦值表達式舉例a=5 表達式值為5a=b=c=5
表達式值為5,a,b,c均為5a=5+(c=6)
表達式值為11,a為11,c為6a=(b=4)+(c=6)
表達式值為10,a為10,b為4,c為6a=(b=10)/(c=2)
表達式值為5,a為5,b為10,c為2a+=a-=a*a相當于
a=a+(a=a-a*a)Page60基本數(shù)據(jù)類型和表達式逗號運算和逗號表達式格式表達式1,表達式2求解順序及結果先求解1,再求解2,最終結果為表達式2的值例a=3*5,a*4
最終結果為60Page61基本數(shù)據(jù)類型和表達式關系運算與關系表達式關系運算是比較簡單的一種邏輯運算,優(yōu)先次序為:
<<=>>===!=
優(yōu)先級相同(高)優(yōu)先級相同(低)關系表達式是一種最簡單的邏輯表達式其結果類型為bool,值只能為true
或false。例如:a>b,c<=a+b,x+y==3基本數(shù)據(jù)類型和表達式邏輯運算與邏輯表達式邏輯運算符
!(非)&&(與)||(或)
優(yōu)先次序:高→低邏輯表達式
例如:(a>b)&&(x>y)
其結果類型為bool,值只能為true
或false基本數(shù)據(jù)類型和表達式條件運算符與條件表達式一般形式表達式1?表達式2:表達式3表達式1必須是bool
類型執(zhí)行順序先求解表達式1,若表達式1的值為true,則求解表達式2,表達式2的值為最終結果若表達式1的值為false,則求解表達式3,表達式3的值為最終結果例:x=a>b?a:b;基本數(shù)據(jù)類型和表達式條件運算符與條件表達式注意:條件運算符優(yōu)級高于賦值運算符,低于邏輯運算符表達式2、3的類型可以不同,條件表達式的最終類型為2和3中較高的類型。例:x=a>b?a:b;基本數(shù)據(jù)類型和表達式①②sizeof
運算符語法形式
sizeof(類型名)
或sizeof(表達式)結果值:
“類型名”所指定的類型或“表達式”的結果類型所占的字節(jié)數(shù)。例:sizeof(short)sizeof(x)基本數(shù)據(jù)類型和表達式位運算——按位與(&)運算規(guī)則將兩個運算量的每一個位進行邏輯與操作舉例:計算3&53:000000115:(&)000001013&5:00000001用途:將某一位置0,其它位不變。例如:
將char
型變量a
的最低位置
0:
a=a&0376;取指定位。
例如:有charc;inta;
取出a的低字節(jié),置于
c中:c=a&0377;基本數(shù)據(jù)類型和表達式位運算——按位或(|)運算規(guī)則將兩個運算量的每一個位進行邏輯或操作舉例:計算3|53:000000115:(|)000001013|5:00000111用途:將某些位置1,其它位不變。
例如:將int
型變量a
的低字節(jié)置
1
:
a=a|0xff;基本數(shù)據(jù)類型和表達式位運算——按位異或(^)運算規(guī)則兩個操作數(shù)進行異或:
若對應位相同,則結果該位為0,
若對應位不同,則結果該位為1,舉例:計算071^052071: 00111001052:(^)00101010071^052: 00010011基本數(shù)據(jù)類型和表達式位運算——按位異或(^)用途:使特定位翻轉(與0異或保持原值,與1異或取反)例如:要使01111010
低四位翻轉:
01111010(^) 00001111 01110101基本數(shù)據(jù)類型和表達式位運算——取反(~)單目運算符,對一個二進制數(shù)按位取反。例:025:0000000000010101~025:1111111111101010基本數(shù)據(jù)類型和表達式位運算——移位左移運算(<<)左移后,低位補0,高位舍棄。右移運算(>>)右移后,低位:舍棄
高位:無符號數(shù):補0
有符號數(shù):補“符號位”基本數(shù)據(jù)類型和表達式運算符優(yōu)先級基本數(shù)據(jù)類型和表達式
(1)運算符的優(yōu)先級按單目、雙目、三目、賦值依次降低。
(2)算術、移位、關系、按位、邏輯運算的優(yōu)先級依次降低。運算符優(yōu)先級括號++,--,sizeof*,/,%+,-==,!=位運算&&||?:賦值運算逗號運算低高基本數(shù)據(jù)類型和表達式2.5
類型轉換2.5.1自動類型轉換2.5.2強制類型轉換2.5.1自動類型轉換基本原則: 編譯系統(tǒng)自動將低類型數(shù)據(jù)轉換為高類型數(shù)據(jù)。
longdouble
高doublefloatunsignedlonglongunsigned
低intchar,short
強制類型轉換是靠強制類型轉換控制運算符實現(xiàn)的,其一般形式為:
數(shù)據(jù)類型(操作數(shù))(第一種C++格式)或(數(shù)據(jù)類型)操作數(shù)(第二種C++格式)
其中操作數(shù)可以是變量名或表達式,功能是把操作數(shù)值的數(shù)據(jù)類型暫時強行轉換為指定的數(shù)據(jù)類型。例如:double(a)、int(x+y)、float(5%3)。2.5.2強制類型轉換注意:
數(shù)據(jù)類型轉換僅僅是為了本次操作中對操作數(shù)進行一時的轉換,并不能改變原數(shù)據(jù)類型說明中所規(guī)定的數(shù)據(jù)類型。如果使用第二種格式,當操作數(shù)為表達式時,表達式應用括號括起來。例如:(int)(x+y)不能寫成(int)x+y
。實驗二C++基礎編程練習編程實現(xiàn)三個數(shù)求最大值。編程實現(xiàn)求解一元二次方程的解。C++語言程序設計Programming
inC++
主講:魯瑩第3章結構化程序設計第三章結構化程序設計3.1C++語言輸入輸出流3.2
結構化程序設計概述3.3
順序結構程序設計3.4
選擇結構程序設計3.5
循環(huán)結構程序設計3.6
程序設計舉例3.1C++語言輸入輸出流在C++中,將數(shù)據(jù)從一個對象到另一個對象的流動抽象為“流”。從流中獲取數(shù)據(jù)的操作稱為提取操作,向流中添加數(shù)據(jù)的操作稱為插入操作。數(shù)據(jù)的輸入輸出是通過輸入輸出I/O流來實現(xiàn)的。
C++提供了I/O流機制,完成對輸入輸出的操作管理,包括流輸入和流輸出。cin和cout是預定義的流對象。cin用來處理標準輸入,即鍵盤輸入;cout用來處理標準輸出,即屏幕輸出。由于cin和cout被定義在“iostream.h”頭文件中,在使用它們之前,要用預編譯命令“#include”將“iostream.h”(即所使用的頭文件)包括到用戶的源程序中。即源文件中需有:
#include
<iostream.h>1.無格式輸出cout
“<<”是預定義的插入符,使用“<<”向cout輸出流中插入數(shù)據(jù),便可實現(xiàn)在屏幕上顯示輸出。格式如下:
cout<<表達式1<<表達式2…<<表達式n;
或分成多行:
cout<<表達式1<<表達式2…<<表達式n;//輸出效果同單行格式
3.1.1C++語言無格式輸入輸出
3.1.1C++語言無格式輸入輸出
2.無格式輸入cin
“>>”是預定義的提取符,使用“>>”從cin輸入流中提取數(shù)據(jù),便可實現(xiàn)鍵盤輸入。格式如下:
cin
>>
數(shù)據(jù)1>>數(shù)據(jù)2……>>數(shù)據(jù)n;
也可寫成多行:
cin>>數(shù)據(jù)1>>數(shù)據(jù)2……
>>數(shù)據(jù)n;floatf;longl;cin>>f>>l;按特定的格式進行輸入輸出,例如對
doublepi=3.1415;
如果希望顯示的是3.14,即保留兩位小數(shù),且域寬為5個字符并換行,此時如用下面的語句則不能完成。
cout<<pi<<“\n”;
//系統(tǒng)默認顯示6位有效數(shù)字
為此C++提供了控制符(manipulators),用于對I/O流的格式進行控制。使用控制符,把上述語句改為如下形式則可以完成需求。
cout<<setw(5)<<setprecision(3)<<pi<<endl;
控制符是在頭文件iomanip.h中預定義的對象,可以直接插入流中。使用控制符時,要在源文件中添加#include<iomanip.h>預處理命令。常用控制符如表3.1所示。3.1.2C++語言格式輸入輸出表3.1I/O流的常用控制符
控制符
描述
endldecocthexsetiosflags(ios::uppercase)resetiosflags(ios::uppercase)setw(n)setfill(‘c’)setprecision(n)setiosflags(ios::fixed)setiosflags(ios::scientific)setiosflags(ios::left)setiosflags(ios::right)setiosflags(ios::showpoint)setiosflags(ios::showpos)
插入換行符并刷新流數(shù)值數(shù)據(jù)采用十進制表示(默認)數(shù)值數(shù)據(jù)采用八進制表示數(shù)值數(shù)據(jù)采用十六進制表示設置16進制數(shù)大寫輸出取消16進制數(shù)大寫輸出(默認)設域寬為n個字符(默認實寬)設填充字符為c(默認空格)設顯示小數(shù)精度為n位(默認6位)用定點方式表示實數(shù)用科學計數(shù)法表示浮點數(shù)左對齊(默認)右對齊強制顯示小數(shù)點和無效0強制顯示正數(shù)符號
Whatisexactoutput?#include<iostream>#include<iomanip> //forsetprecision()usingnamespacestd;voidmain(){floatmyNumber=123.4587;
cout<<fixed<<showpoint; //usedecimalformat
//printdecimalpoints
cout<<“Numberis”<<setprecision(3)<<myNumber<<endl;
//setprecision}Outputofprogram:Numberis123.459#include<iomanip> #include<iostream>usingnamespacestd;voidmain(){
int
myNumber=123;
int
yourNumber=5;
cout<<setw(10)<<“Mine” <<setw(10)<<“Yours”<<endl;
cout<<setw(10)<<myNumber <<setw(10)<<yourNumber<<endl;}Whatisexactoutput?12345678901234567890
MineYours1235#include<iostream>#include<iomanip> //forsetprecision()usingnamespacestd;voidmain(){floatmyNumber=123.4;floatyourNumber=3.14159;
cout<<fixed<<showpoint; //usedecimalformat
//printdecimalpoints
cout<<“Numbersare:”<<setprecision(4)<<endl
<<setw(10)<<myNumber<<endl <<setw(10)<<yourNumber<<endl;}Numbersare:123.40003.1416Whatisexactoutput?
floatx=312.0; floaty=4.827;
cout<<fixed<<showpoint;
cout<<setprecision(2)<<setw(10)<<x<<endl
’’’’
3
1
2.00 <<setw(10)<<y<<endl; ’’’’’’
4.83
cout<<setprecision(1)<<setw(10)<<x<<endl
’’’’’
3
1
2.0 <<setw(10)<<y<<endl; ’’’’’’’
4.8
cout<<setprecision(5)<<setw(7)<<x<<endl
312.00000 <<setw(7)<<y<<endl; 4.82700MoreExamples3.2結構化程序設計概述1.結構化程序的基本結構2.結構化程序的設計方法3.結構化程序的組織結構結構化程序的基本結構順序結構:是一種最簡單、最基本的結構,在順序結構內,各塊按照它們出現(xiàn)的先后順序依次執(zhí)行。它有一個入口,一個出口。選擇結構:選擇結構中包含一個判斷框,根據(jù)給定的條件是否成立而選擇執(zhí)行,它也只具有一個入口和一個出口。循環(huán)結構:循環(huán)結構又稱重復結構,是指在一定條件下反復執(zhí)行一個程序塊的結構。循環(huán)結構也是只有一個入口,一個出口。結構化程序的設計方法
結構化程序主要采用自上而下、逐步細化的設計方法,即先全局后局部、先整體后細節(jié)、先抽象后具體的設計方法。由于實際問題往往比較復雜,為了提高效率,在進行結構化程序設計時,常常伴隨著使用關鍵部分優(yōu)先考慮的設計方法。結構化程序的組織結構模塊A1模塊A1(小功能)模塊A2模塊A2(小功能)模塊A(較小功能)模塊CC1C2C3C4模塊BB1B2主模塊(主功能)圖3.1程序模塊化示意圖順序結構:順序結構是最簡單、最基本的結構,在順序結構內,順序執(zhí)行各個語句。圖3.2表示了一個順序結構形式。例3.12
ABab圖3.2順序結構示意圖3.3順序結構程序設計【例3.12】順序結構程序舉例(求表達式值)
#include<iostream.h>voidmain(){
int
a,b,result;
cout<<“pleaseinputtwonumber:\n”;
cin>>a;
cin>>b;result=3*a-2*b+1;
cout<<“resultis”<<result<<endl;}程序的運行結果為:
pleaseinputtwonumber:12345↙resultis280在C++語言中,實現(xiàn)順序結構除了一般的語句如表達式語句、輸入輸出函數(shù)的調用語句外,還有兩種特殊形式的語句:空語句和復合語句。。①空語句:C++語言中,只有一個分號的語句稱為空語句,即:;它在語法上要占據(jù)一個語句的位置,但它沒有任何功能操作。②復合語句:復合語句是由花括號{}括起來的多個語句組成,在語法上它等價于一個語句,一般形式為:
{
語句1;
語句2;…
語句n
}程序舉例:例3.13、例3.14、例3.15、例3.16。3.3順序結構程序設計3.4選擇結構的實現(xiàn)3.4.1
用if
語句實現(xiàn)選擇結構設計3.4.2
用switch語句實現(xiàn)選擇結構設計基本形式一:if(表達式)
語句;
其執(zhí)行過程是:首先計算表達式的值,若不為0,條件判斷為真,則執(zhí)行()后面的語句,否則,不執(zhí)行()后面的語句。
基本形式二:if(表達式)
語句1;
else
語句2;
其執(zhí)行過程是:首先計算表達式的值,若不為0,條件判斷為真,則執(zhí)行語句1,否則執(zhí)行語句2。if語句的基本形式例3.17
輸入兩個數(shù)a,b,輸出其中的大數(shù)(用if
)
。#include<iostream.h>voidmain(){int
a,b,x;
cin>>a>>b;x=b;
if(a>b)x=a;
cout<<x<<endl;}
#include<iostream.h>voidmain(){int
a,b,x;
cin>>a>>b;
if(a>b)x=a;elsex=b;
cout<<x<<endl;}例3.18用if-else
結構形式改寫上例。一般形式(常用):
if(表達式1)
語句1;
elseif
(表達式2)
語句2;
elseif
(表達式3)
語句3;…
elseif
(表達式n)
語句n;
else
語句n+1;例3.19
if語句嵌套的使用。if語句的嵌套真假真真真假假假表達式1表達式2表達式3表達式4語句1語句2語句3語句4語句5if語句的嵌套示意圖其他形式:
①if(){
if()語句1;
}
else
語句2;
②
if()
if
()語句1;
else
語句2;③
If(){if()語句1;
else
語句2;}
else
語句3;例3.20
編寫一程序計算函數(shù)(用if-else嵌套)。if語句的嵌套
switch語句實現(xiàn)選擇結構C++語言提供了switch語句可用來直接處理多分支選擇問題,其流程圖
語句組1break;語句組2break;語句組nbreak;缺省語句組……表達式case常量1case常量2case常量ndefaultSwitch
語句又稱為開關分支語句,它的一般形式如下:
switch(表達式)
{
case常量表達式1:
語句組1;
break;
case
常量表達式2:
語句組2;
break;…
case
常量表達式n:
語句組n;
break;
default
:
語句組n+1;
}
例.21。
switch語句實現(xiàn)選擇結構switch允許多個case共同使用一個語句組,其結構為:
switch(表達式){case
常量表達式1:
…
case
常量表達式m:
語句組m;
break;
case常量表達式m+1:
語句組m+1;
break;
…
case
常量表達式n:
語句組n;
break;
default
:
語句組n+1;}
switch語句實現(xiàn)選擇結構例3.22#include<iostream.h>voidmain(){ chargrade;
cout<<"Pleaseinputgrade=";
cin>>grade; if(grade>='a'&&grade<='z') grade-=32; switch(grade) {
case'A':
case'B':
case'C':cout<<"pass\n";break;
case'D':cout<<"fail\n";break;
default:cout<<"error\n"; }}實習4、5:1.順序結構程序設計:P253實驗一:1~42.選擇結構程序設計:
P253實驗二:3、4順序結構與選擇結構程序設計3.5循環(huán)結構程序設計循環(huán)結構:循環(huán)結構又稱重復結構,是指在一定條件下反復執(zhí)行一個程序塊的結構。循環(huán)結構也是只有一個入口,一個出口。根據(jù)循環(huán)條件的不同,循環(huán)結構分為當型循環(huán)結構和直到型循環(huán)結構兩種。
3.5循環(huán)結構程序設計循環(huán)結構:循環(huán)結構又稱重復結構,是指在一定條件下反復執(zhí)行一個程序塊的結構。循環(huán)結構也是只有一個入口,一個出口。根據(jù)循環(huán)條件的不同,循環(huán)結構分為當型循環(huán)結構和直到型循環(huán)結構兩種。
A條件PabYN圖3.6當型循環(huán)結構流程圖圖3.7直到型循環(huán)結構流程圖abNY條件PA①當型循環(huán)的結構:當給定的條件p成立時,執(zhí)行A框操作,執(zhí)行完A操作后,再判斷p條件是否成立,如果成立,再次執(zhí)行A操作,如此重復執(zhí)行A操作,直到判斷p條件不成立才停止循環(huán)。此時不執(zhí)行A操作,而從出口b脫離循環(huán)結構。②直到型循環(huán)的結構:先執(zhí)行A框操作,然后判斷給定條件p是否成立,如果不成立,再次執(zhí)行A操作;然后再對p進行判斷,如此反復,直到給定的p條件成立為止。此時不再執(zhí)行A框,從出口b脫離循環(huán)。
一個循環(huán)結構應由四個主要部分構成:
①
循環(huán)的工作部分。即循環(huán)體,完成循環(huán)程序的主要工作。
②循環(huán)的修改部分。它保證循環(huán)體在循環(huán)過程中,有關的量能按一定的規(guī)律變化(循環(huán)變量)。
③循環(huán)的控制部分。它保證循環(huán)程序按規(guī)定的循環(huán)條件控制循環(huán)正確進行(循環(huán)條件)。
④循環(huán)的初始部分。它是保證循環(huán)結構能夠開始執(zhí)行的語句,往往編寫在程序的開頭部分,邏輯上先從這一部分開始執(zhí)行(初始條件)。
3.5.1
while語句3.5.2
do-while語句3.5.3
for語句3.5.4
跳轉語句break和continue3.5.5
循環(huán)的嵌套3.5循環(huán)結構程序設計3.5.1while語句一般形式:
while(表達式)
語句;//循環(huán)體執(zhí)行過程:首先判斷括號內最初表達式的值,如為0則跳到循環(huán)體外;如為非0,就執(zhí)行語句(循環(huán)體),執(zhí)行完循環(huán)體后再次判斷表達式的值…,如此反復進行直到(表達式)的值為假時結束while循環(huán)。
例3.23編寫程序計算1+2+3+...+99+100
#include<iostream.h>
voidmain(){
int
sum,n;n=1;//初始部分(初始條件)
sum=0;
while(n<=100)//控制部分(循環(huán)條件)
{
//工作部分(循環(huán)體)
sum+=n;n++;//修改部分(循環(huán)變量)
}
cout<<"sum="<<sum<<endl;}運行結果為:sum=5050
#include<iostream.h>
voidmain(){
intx,c1=0,c2=0;
cout<<“請輸入一個正整數(shù)(<=0退出):”;
cin>>x;
while(x>0)
{
if(x<60)c1++;
elsec2++;
cout<<“請輸入一個正整數(shù)(<=0退出):”;
cin>>x;}
cout<<“小于60的正整數(shù)個數(shù):”<<c1<<endl;
cout<<“大于60的正整數(shù)個數(shù):”<<c2<<endl;}
例3.24分別統(tǒng)計出鍵入的所有正整數(shù)中<60
和>=60的數(shù)據(jù)的個數(shù)。3.5.2do-while語句一般形式:
do
{
語句;//循環(huán)體
}while(表達式);
do-while與while比較:do-while語句是先執(zhí)行循環(huán)體,再進行判斷,無論條件是否成立,do-while語句至少執(zhí)行循環(huán)體一次,它是直到型循環(huán)。而while語句則要先對條件進行判斷,只有當條件成立才執(zhí)行循環(huán)體,因此它是當型循環(huán)。對于一個循環(huán)問題,我們既可以用當型循環(huán)也可以用直到型循環(huán)來解決問題。
#include<iostream.h>//用do-while結構
voidmain(){
int
sum,n;n=1;//初始部分(初始條件)
sum=0;
do{//工作部分(循環(huán)體)
sum+=n;n++;//修改部分(循環(huán)變量)
}while(n<=100);
//控制部分(循環(huán)條件)
cout<<"sum="<<sum<<endl;}
例3.25編寫程序計算1+2+3+...+99+1003.5.3for語句一般形式:
for(表達式1;表達式2;表達式3){
語句;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 營養(yǎng)素與環(huán)境關系研究-洞察分析
- 網(wǎng)絡藝術市場分析-洞察分析
- 新能源車輛在物流業(yè)的應用-洞察分析
- 從社交平臺到市場爆款的地鐵文創(chuàng)產品設計秘訣
- 辦公空間綠色改造的實踐與思考
- 養(yǎng)老院裝修設計與老年人生活品質提高
- 企業(yè)如何在展會中展現(xiàn)專業(yè)品牌形象
- 體育教育中的多媒體教學資源開發(fā)
- 以食物傳遞健康-家庭教育中的營養(yǎng)之道
- 以家庭為基礎的情感教育對孩子的長遠影響
- 【政治】期末復習測試卷-2024-2025學年統(tǒng)編版道德與法治七年級上冊
- 王維《山居秋暝》詩歌鑒賞與意境探究教學設計
- 社區(qū)婦聯(lián)2024工作計劃
- 華電筆試題庫
- 跨學科實踐活動7+垃圾的分類與回收利用(教學設計)九年級化學下冊同步高效課堂(人教版2024)
- 政治理論應知應會100題
- 中建深基坑工程土方開挖專項施工方案
- 北京市西城區(qū)2023-2024學年五年級上學期語文期末試卷(含答案)
- 2024年世界職業(yè)院校技能大賽中職組“水利工程制圖與應用組”賽項考試題庫(含答案)
- 常見的氨基酸的分類特點及理化性質
- 【碳足跡報告】新鄉(xiāng)市錦源化工對位脂產品碳足跡報告
評論
0/150
提交評論