




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C++入門2
§電腦的組成——硬體和軟體
一、電腦硬體1
硬體組成:由運算器、控制器、記憶體、輸入設備和輸出設備等五大部分組成,如圖所示。3二、電腦軟體1軟體的作用:軟體是電腦系統(tǒng)的靈魂,沒有配備任何軟體的“裸機”無法使用,沒有配備足夠的軟體,電腦的功能將不能很好地發(fā)揮,應用範圍也將受到很大的影響。2軟體的組成:43程式語言的發(fā)展:正象人與人之間的交流需要自然語言一樣,人與計算交流也需要語言,我們把這種語言稱為電腦語言,電腦語言有多種:C++;C;PB;VB;Java等等①電腦語言的發(fā)展過程:
機器語言組合語言高級語言
機器語言:由0或1代碼組成的且是電腦唯一能夠直接讀懂並能直接執(zhí)行的語言。
組合語言:將機器指令映射為一些可以被人讀懂的助記符,如ADD、SUB等。5
高級語言:遮罩低級語言硬體細節(jié)的語言,各類電腦能通用、接近人們“自然語言”和“數(shù)學語言”的程式設計語言,通用性和可移植好翻譯系統(tǒng):把高級語言編寫的程式翻譯成用二進位形式表示的機器語言程序的軟體翻譯方式有兩種:編譯方式和解釋方式根源程式:用高級語言編寫的程式目的程式:是翻譯後得到的機器語言程式,它是電腦可執(zhí)行的程式程式:為使電腦完成一個預定的任務而設計的一系列語句或指令。程式是指令的集合。電腦的工作是用程式來控制的。程式設計:設計、書寫及檢查調試程式的過程6各種電腦語言的發(fā)展演化進程:FORTRANFORTRAN77FORTRAN90BASICANSI-BASICQBASICVISUAL-BASICDELPHIPASCALALGOLALGOL68SIMULA67SMALLTALKC++JAVAC#BCPLBC7§電腦的工作過程一利用電腦解題的步驟
1.上機前的準備:①建立數(shù)學模型
②確定解題步驟(即演算法)
③用某種計算語言將演算法寫成程式
2上機調試運行該程式
3維護,升級該程式電腦的工作過程取指令→分析指令→執(zhí)行指令(程式=演算法+數(shù)據結構)8§演算法的表示形式⒈用流程圖表示演算法演算法:是程式的靈魂,是為解決一個問題而採取的方法和步驟,或者說是解題步驟的精確描述演算法的主要表示形式:流程圖:用一些框圖表示各種操作,且為提高演算法的品質,規(guī)定演算法(程式)只能由三種基本結構(順序、選擇和迴圈)組成。ANSI(美國國家標準化協(xié)會)規(guī)定了一些常用的流程圖符號:起止框
(示演算法的開始和結束)判斷框
(一個入口兩個出口,依給定的條件是否滿足決定執(zhí)行兩條路徑中的某一路徑)9處理框
(示“賦值”等一般處理)輸入/輸出框
(示輸入輸出操作)流程線
(示流程的方向)連接點
(小圓圈,將畫在不同地方的流程線連接起來)注釋框
(對流程線中某些部分作必要的說明,不是流程圖中的必要部分,不反映流程和操作)例題:求1+2+3+…直到其和等於或大於100為止。用流程圖表示其演算法10分析:和數(shù)用變數(shù)t
存放,加數(shù)用變數(shù)i
存放結束開始0t,1it+iti+1it
100輸出t的值不成立成立順序結構順序結構迴圈結構11⒉用N-S流程圖表示演算法a.順序結構塊A、B是按順序執(zhí)行的b.選擇結構(if‥‥‥else)P條件成立執(zhí)行A操作,p條件不成立執(zhí)行B操作ABABp成立
不成立12c.迴圈結構前測試當型迴圈當p1滿足A前測試直到型迴圈直到p2滿足A後測試當型迴圈當p1滿足A後測試直到型迴圈直到p2滿足A(for、while、do‥‥‥while)13例題:
求1+2+3…直到其和等於或大於100為止,用N-S圖表示其演算法直到t
100輸出t0t,1it+iti+1i分析:和數(shù)用變數(shù)t
存放,加數(shù)用變數(shù)i
存放intt=0,i=0;t=t+i;i=i+1;do
{}while(t<100);cout<<t;voidmain(){#include<iostream.h>}143用偽代碼(演算法描述語言)表示演算法
偽代碼:用介於自然語言和電腦語言之間的文字和符號來描述演算法
特點:書寫方便,格式緊湊,便於向程式過渡,適用軟體專業(yè)人員使用。例題:
將x,y中最大的輸出分析:用偽代碼表示其演算法為:if(x>y)輸出xelse輸出y15
對複雜問題如何進行抽象和分解,對程式如何進行組織,使得程式的可維護性、可讀性、穩(wěn)定性、效率等更好,是程式設計方法研究的問題。目前,有兩種重要的程式設計方法:結構化的程式設計和面向對象的程式設計
結構化程式設計(StructuredProgramming,簡稱SP)
主要思想是:
把一個複雜的任務不斷進行功能分解,劃分成一系列較小的任務,直到這些子任務小到易於理解和實現(xiàn)。結構化程式設計兩個要點:①採用“自頂向下逐步求精”的設計思想
②程式只採用順序、迴圈和選擇三種控制結構用C++編寫的結構化程式是由許多函數(shù)組成的,其程式的結構清晰。但也有一些缺點:
§程式的設計方法16
①恰當?shù)墓δ芊纸馐墙Y構化程式設計的前提。然而對用戶來講,變化最大的就是功能的改進、添加和刪除。結構化程式要實現(xiàn)這種功能變化不容易,有時甚至要重新設計整個程式的結構。
②在結構化程式設計中,數(shù)據和對數(shù)據的操作(即函數(shù))分離,函數(shù)依賴於數(shù)據類型的表示。數(shù)據的表示發(fā)生變化,則與之相關的所有函數(shù)均要修改,使得程式難於維護。
③由於數(shù)據結構和函數(shù)密切相關,使得程式代碼複用性較差
面向對象的程式設計面向對象程式設計是在吸取結構化程式設計的一切優(yōu)點的基礎上發(fā)展起來的,其程式由對象組成,對象間通過消息相互作用。它的本質是把數(shù)據和處理數(shù)據的過程當成一個整體——對象。17
■
對象:客觀世界中任何一個事物都可以看作一個對象,例如三年級一班。一個對象應包括兩個因素:一是數(shù)據(相當於班級中的學生);二是需要進行的操作,相當於學生進行的活動:上課、休息、開會和文娛活動等。對象是由數(shù)據和操作代碼組成:
■
類(class):對象的類型叫做類,例如三年級一班、二班、三班是三個不同的對象,它們具有完全相同的結構和特性故它們屬於同一類。類代表了某一批對象的共性和特徵,類是對象的抽象,而對象是類的具體實例。類是用來定義對象的一種抽象數(shù)據類型,或者說它是產生對象的範本。
18
■
封裝:有兩個含義:①把對象的全部屬性和全部服務結合在一起,形成一個不可分割的獨立單位(即對象);②第二個涵義也稱作“數(shù)據隱藏”,即盡可能隱蔽對象的內部細節(jié)。例如:聲卡是自成一體的,這種自成一體性稱為封裝性,無需知道其工作原理就能使用的思想稱為數(shù)據隱藏。在C++中,封裝是通過定義類來實現(xiàn)的。
■
繼承:類與類之間可以組成繼承層次,一個類的定義(子類或派生類)可以定義在另一個已定義類(父類或超類或基類)的基礎上。子類可以繼承父類中的屬性和操作,也可以定義自己的屬性和操作。繼承的主要益處是可以複用超類的程式代碼。
■
多態(tài)性:對象的多態(tài)性是指在一般類中定義的屬性或操作被特殊類繼承之後,可以具有不同的數(shù)據類型或表現(xiàn)出不同的行為。這使得同一個屬性或操作名在一般類及其各個特殊類中具有不同的語義。
19§C++語言概述一、C++的發(fā)展史:BCPLBCC++CPLALGOL60二、從C到C++:
C語言:是介於低級組合語言與高級語言之間的語言;C語言既可向彙編語言一樣直接訪問電腦硬體,又具備高級語言的優(yōu)點(面向用戶、容易記憶、清晰靈活),可稱之為高級的組合語言。
常用來編寫系統(tǒng)軟體。然而,C語言也存在一些缺陷:類型檢查機制較弱,代碼的重用率也低。為了克服C的缺點並保持其優(yōu)點,在1980年貝爾實驗實對C進行了改進和擴充,構成最早的C++(又稱帶類的C語言)語言。20
C++語言:保留了C語言的優(yōu)點同時也吸收其他面向對象編程語言的長處。可以說C++是C的一個超集、一個更好的C語言、C語言的改良版本,也是建立C++的基礎。C++既支持傳統(tǒng)的結構化程式設計,又支持面向對象的程式設計。三C++程式開發(fā)過程步驟:1.編輯2.編譯3.連接4.運行
編輯(.cpp/.h)
編譯(.obj)聯(lián)接(.exe)運行21
編輯:是指把按照C++語法規(guī)則編寫的程式代碼通過編輯器(如:VisualC++6.0)輸入電腦,並存盤。在存盤時,C++原始檔案的擴展名為.CPP。編譯:將編輯好的C++根源程式用編譯器進行語法檢查並轉換為目標代碼檔(OBJ檔)。即生成該原始檔案的目標代碼。鏈接:將用戶程式生成的(多個)目標代碼檔(.obj)以及系統(tǒng)提供的
庫檔(.lib)中的代碼連接在一起,生成一個可執(zhí)行檔(.exe)
(或動態(tài),靜態(tài)庫,.dll,.lib)。執(zhí)行:運行所生成的可執(zhí)行檔,用戶可以根據運行結果來判斷程式是否出錯。如果有輸入數(shù)據,嘗試各種不同的輸入是否都能得到正確結果.調試:編碼調試是一個迴圈過程編輯編譯鏈接執(zhí)行22§C++程式的框架結構1.編程顯示:ThisismyfirstC++program.
/*ch1_1.cppcreatedon2004-02-10author小王*/#include<iostream.h>voidmain(){
//下麵將輸出ThisismyfirstC++program.
cout<<“ThisismyfirstC++program.\n”;}是iostream.h檔定義的標準輸出流設備是將其右邊的數(shù)據送到顯示設備上23
#include<iostream.h>
#include<math.h>
doublemax(doublex,doubley);
voidmain()
{
doublea,b,c;
cout<<"inputtwonumbers:\n";
cin>>a>>b;
c=max(a,b);
cout<<"thesquartofmaximum="<<sqrt(c);
}
doublemax(doublex,doubley)
{
if(x>y)
returnx;
else
returny;
}
運行結果為:
2.求較大數(shù)平方根的程式:inputtwonumbers:216
thesquartofmaximum=4.0000024
#include<iostream.h>
#include<math.h>doublemax(doublex,doubley)
{
if(x>y)
returnx;
else
returny;
}
voidmain()
{
doublea,b,c;
cout<<"inputtwonumbers:\n";
cin>>a>>b;
c=max(a,b);
cout<<"thesquartofmaximum="<<sqrt(c);
}
運行結果為:
3.求較大數(shù)平方根的程式:inputtwonumbers:216
thesquartofmaximum=4.0000025一、結構化程式設計的C++程式結構:
編譯預處理指令全局說明程式的主函數(shù)main()用戶自定義的子函數(shù)其結構用圖表示為右圖:26①編譯預處理部分(宏定義,檔包含和條件編譯、):由井字型大小“#”引入的指令為預處理指令,“#include”稱為檔包含預處理指令,通過該指令系統(tǒng)將其後程式段使用的名稱進行了預先的說明。◆#include<iostream.h>的作用是:將系統(tǒng)定義的一個頭檔iostream.h包含到該程式中,iostream.h檔定義了輸入輸出流對象cout與cin等②全局說明部分:包括程式要用的全局變數(shù)、類說明、用戶定義函數(shù)的原型
說明等。③主函數(shù):任何一個C++程式都有且只有一個主函數(shù)main(),它可以帶參數(shù)。
main函數(shù)的返回值有兩種情況:無返回值(返回類型為void)及返回值為整型27④用戶自定義函數(shù):是程式員為了實現(xiàn)某些特定的操作而編寫的一組代碼。常用的函數(shù)一般都帶有一定數(shù)目的參數(shù)和一個返回值。⑤注釋部分:多行注釋"/*------*/"或單行注釋"http://-----"
函數(shù)的結構形式:函數(shù)類型函數(shù)名(形式參數(shù)類型:形式參數(shù)){數(shù)據定義函數(shù)執(zhí)行}例:doublemax(doublex,doubley)
{
if(x>y)
returnx;
else
returny;
}
28二、面向對象程式設計的C++程式結構:
編譯預處理指令全局說明類的說明類成員函數(shù)的定義用戶定義函數(shù)主函數(shù)main()29§VisualC++6.0開發(fā)環(huán)境介紹
VisualC++6.0(簡稱VC)
:是美國微軟公司開發(fā)的C++集成開發(fā)環(huán)境,它集根源程式的編寫、編譯、連接、調試、運行,以及應用程式的檔管理於一體,
是當前PC機上最流行的C++程式開發(fā)環(huán)境。C++的集成環(huán)境開發(fā)環(huán)境有:VisualC++,Turbo-C++,BorlandC++,C++
Builder等。VC的功能較多,應在以後逐步掌握,但是本章應掌握它的基本用法:30
VC++6.0用戶介面簡介:31菜單欄:包含了該系統(tǒng)的各種功能工具條:由常用功能按鈕組成。專案工作區(qū)(workspace):用來查看和修改專案中的所有元素。
檔專案和專案配置是由專案工作區(qū)組織起來的。專案工作區(qū)的內容和設置通過專案工作區(qū)檔(.dsw)
來描述。在建立一個專案工作區(qū)文件的同時,還生成專案檔(.dsp)和工作區(qū)選項檔(.opt)用來保存工作區(qū)的設置。32專案(專案)——一個程式是一個專案專案是一些相互關聯(lián)原始檔案的集合,這些原始檔案組成一個程式包含根源程式、頭檔、目標檔等一個專案的所有資訊。專案檔的擴展名.dspdsw和dsp由系統(tǒng)自動產生。代碼編輯窗口:通過該窗口輸入根源程式輸出窗口:用來顯示專案創(chuàng)建過程中的錯誤資訊及運行結果33
用VC開發(fā)程式的步驟:1:首先創(chuàng)建一個C++專案file/new/workspace選擇win32consoleapplication輸入專案名稱選擇:創(chuàng)建或加入工作空間2:創(chuàng)建C++原始檔案file/new/file選擇C++sourcefile.選擇Addtoproject把原始檔案加入專案。343:編輯、編譯、連接、運行程式編譯:build/compile連接:build/build運行:build/!execute35§2.1
C++的詞法及詞法規(guī)則C++的字元集大小寫字母:a,b,A,B‥‥‥數(shù)字:0~9。運算符:+,-,*,/,
%,<,<=,=,>=,
>,!=,==,<<,>>,&,|,
&&,‖,∧,~,(),[],{},->,
?
,!,?,?:,,,;,”,#。特殊字元:連字元或下劃線,空格、換行和跳位字元等。36二詞與詞法規(guī)則識別字:用來標識用戶定義的常量名、變數(shù)名、函數(shù)名、檔案名、數(shù)組名、和數(shù)據類型名和程式等。由字母、下劃線或數(shù)字
組成的字元序列,識別字必須由字母或下劃線開始,有效長度是8個字元。正確不正確smart5smart(不能數(shù)字開頭)_decisionbomb?(有非法字元?)key_boardkey.board(有非法字元.)【例】:下圖是正確和不正確的識別字實例:37
識別字的命名規(guī)則:
①所有識別字必須由字母或下劃線開頭且由字母、下劃線或數(shù)字組成②識別字應該儘量有意義。如:年year,長度用length,累加和用sum等。④大小寫字母表示不同意義,即代表不同的識別字⑤不能把關鍵字它們再定義為變數(shù)的識別字關鍵字:預定義的識別字,稱之為關鍵字,它是一種特殊的識別字。關鍵字具有特定的含義,作為專用定義符的單詞,不允許另作它用。標準C++中預定義了以下關鍵字(常用):38auto break case char
classconst continue default do
ddefaultdelete double else enum
explicit
extern float for friend
gotoif
inline int long
mutablenew operator private protectedpublic register return short
signedsizeof static static_cast struct
switchthis typedef union unsignedvirtualvoid while3.運算符和分隔符號
運算符是C++語言實現(xiàn)加、減等各種運算的符號。C++語言的分隔符主要是:空格、製錶和換行符。394.字串字串是由雙引號括起來的字元。如“China”,“C++Program”
5.常量
C++中常量包括實型(浮點常量)和整型常量(十進位常量、八進制常量、十六進制常量)、字元常量和字串常量。
6.注釋注釋是用來幫助閱讀、理解及維護程式。在編譯時,注釋部分被忽略,不產生目標代碼。C++語言提供兩種注釋方式。一種是與C相容的多行注釋用/*和*/分界。另一種是單行注釋,以“//”開頭的表明本行中“//”符號後的內容是注釋。40§2.2
數(shù)據類型數(shù)據類型:它定義了變數(shù)可存儲的數(shù)值範圍以及可進行的操作。每個變數(shù)(是用於記憶體中保存數(shù)據的)都必須有確定的數(shù)據類型,C++語言的數(shù)據類型有:數(shù)據類型基本類型整型int實型(浮點型)單精確度型float雙精度型double字元型單字符型char寬字元型w-char邏輯型bool非基本類型空類型(無值類型)void構造類型數(shù)組類型結構類型struct聯(lián)合型類型union枚舉型類型enum指針類型類類型class41基本數(shù)據類型寬度及表示範圍:各類型精度由低到高排列為:
如果運算符兩邊運算元類型不同,先要將較低類型轉換為較高類型,然後再運算42
#include<iostream.h>
voidmain()
{
chara='x';
intb=3,f=2;
floatc=2.5678;
doubled=5.2345
longe=32L;
cout<<a-b+d/c-e*f<<endl;
}運行結果為:55.038515
43§2.3
變數(shù)變數(shù):指程式在運行時其值可改變的量。每個變數(shù)由一個變數(shù)名惟一標識,同時,每個變數(shù)又具有一個特定的數(shù)據類型。不同類型的變數(shù)在內存中佔有存儲單元的個數(shù)不同不能是C++的關健字。第一個字元必須是字母或下劃線且由字母、數(shù)字或下劃線組成。一般不要超過31個字元。不要與C++中的庫函數(shù)名、類名和對象名相同。應該儘量有意義。如:numOfStudents;my-car;myCar;iMyCar等區(qū)分大小寫1.變數(shù)的命名規(guī)則:注意:C++中,變數(shù)使用之前一定要定義或說明!442.變數(shù)的定義的格式:[存儲類型]類型變數(shù)名;存儲類型有:autoregisterexternstatic默認的是autoauto存儲類屬於臨時性存儲,其存儲空間可以被若干變數(shù)多次覆蓋使用。register存儲類存放在通用寄存器中。extern存儲類在所有函數(shù)和程式段中都可引用。static存儲類在內存中是以固定地址存放的,在整個程式運行期間都有效。45
例如:inta,b,c;//定義3個整型變數(shù)a,b,c
和: inta; //定義整型變數(shù)a intb; //定義整型變數(shù)b intc; //定義整型變數(shù)c
二者等價。3.變數(shù)的初始化:變數(shù)初始化一般採用兩種方式:①在定義變數(shù)時就給變數(shù)賦初值
例如:
inta=3;
floatb=3.4;
②先定義,再賦植
例如:
inta;
a=3;46
sizeof操作符
typedef
為一個已有的類型名提供一個同意詞typedefintINTEGER;//新類型名INTEGERnum1,num2;//完全等價於:intnum1,num2例:
例:
count<<“sizeofcharis”<<sizeof(char)<<end1;其運行的結果為:sizeofcharis
1其語法形式為:sizeof(類型名)或sizeof(運算式)其結果值為:“類型名”所指定的類型或“運算式”的結果類型所占位元組數(shù)。47§2.4常量常量:指在程式運行過程中其值不能改變的量。C++支持5種類型的常量:浮點型、整型、字元型、布爾型和枚舉型。十進位:123,-23456八進制:0123,0765十六進制:0x123,0xa4d3長整型:123L,0123L,0X123L無符號整形:13579ul
//無符號長整數(shù)1、整型常量2.實型常量①.小數(shù)形式:由數(shù)字和小數(shù)點組成如:0.123,.234,-56.789等48②.指數(shù)形式:如:123E5,123e5,0.123e8,1.23E7,-0.123e234.字串常量只表示一個字元,用單撇號。例:‘a’存儲字元的ASCII碼。例:‘a’在電腦中存為其ASCII碼97
字元常量可與整數(shù)進行混合運算,它門在功能上等價轉義字元(是以\開頭的特殊的字元常量)常用轉義字元:\a;\n
;\t
;\b
;\\
;\’
;\”
;
\ddd;
\xhh
3.字元常量用雙撇號括起來的量。如“a”存儲時系統(tǒng)自動在字串常量的末尾加上‘\0’
,表示字串結束?!產’是字元常量,占一個位元組,“a”是字串常量,占兩個位元組。
494.枚舉常量若一個變數(shù)只有幾種可能的值,就可以把它定義為枚舉類型。其形式為:enum
枚舉類型名
{常量值1,常量值2,…,常量值n};例:enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat};enumcolor{Red,Green,Blue,White,Black};5.常量的定義①若想使某個變數(shù)的值一直不變可用const來定義其為一個常量。一旦加了const修飾符,只能通過聲明時初始化其值,而不能在隨後再改變其值.例:計算圓面積
#include<stdio.h>voidmain()
{
constfloatpi=3.14159;
floatr=3;
printf(“Area=%f\n”,
r*r*pi);
}50②
用#define來定義常量例:計算圓面積
#include<stdio.h>
#definePI3.14159
voidmain()
{
floatr=3;
printf(“Area=%f\n”,
r*r*PI);
}在程式編譯前,所有的PI都被替換成3.141592651#include<iostream.h>voidmain(){constintPI=30;intnum,total;floatv,r,h;num=10;total=num*PI;cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v<<endl;}變數(shù)變數(shù)先定義後使用符號常量52§2.6輸入/輸出(I/O)
I/O:
C++沒有提供輸入/輸出語句,而是以下兩種方法來實現(xiàn):②或由檔stdio.h中定義的庫函數(shù)scanf()、
printf()來實現(xiàn)
①由檔iostream.h中定義的輸入對象cin、輸出對象cout與抽取操作符“>>”和插入操作符“<<”來實現(xiàn)。
輸入/輸出流(I/0流):C++中把數(shù)據之間的傳輸操作稱作流。I/0流指輸入或輸出的一系列位元組。1.用標準I/O流庫實現(xiàn)輸入輸出:①
輸入:當程式需要從鍵盤輸入時,可以使用抽取操作符“>>”從輸入流cin中抽取鍵盤輸入的字元和數(shù)字,並把它賦給指定的變數(shù)。53例2:
doublex;inty;charz;cin>>x>>y>>z;注意:①cin:指標準的輸入設備(鍵盤)
②>>:提取操作符,從輸入流讀入數(shù)據
③從控制臺(鍵盤)接收輸入數(shù)據:cin>>變數(shù)1>>變數(shù)2……
④用空格或回車符作為數(shù)據之間的分隔符號,每個輸入數(shù)據的格式應與相應變數(shù)的類型相符。
⑤若用程式中用了I/O流則必需在該程式前寫上預處理指令:
#include<iostream.h>例1:#include<iostream.h>voidmain(){
inta;
cin>>a;}54其運行結果為:i的值為3.14159例:doublei=3.14159;
cout<<“i的值為”<<i;
等價:cout<<“i的值為”;cout<<i;
或等價:cout<<“i的值為”
<<i;
注意:①cout:指標準的輸出設備(顯示器),用於在螢幕上輸出變數(shù)的值和雙引號中的字串。
②<<:插入操作符,把數(shù)據送到輸出流
③把變數(shù)的值或字串送到控制臺(螢幕)輸出:
cout<<運算式1<<運算式2……
cout<<“字元1”<<“字元2”……④cin,cout在檔<iostream.h>中,故在程式開始必須寫出其檔②
輸出:當需要在螢幕上輸出變數(shù)的值或字串時,可用輸出流庫對象
cout與插入操作符“<<”來實現(xiàn)。55例:用流進行輸入輸出:#include<iostream.h>voidmain(){ intm; charch1,ch2; floatx,y; cin>>m>>ch1>>ch2>>x>>y; cout<<“m=“<<m<<endl; cout<<“ch1=“<<ch1<<“,ch2=“<<ch2<<endl; cout<<“x=“<<x<<“;y=“<<y<<endl;}在C++程式中,對標準I/O的操作必須說明相關頭檔,cin,cout使用的頭檔是<iostream.h>鍵盤輸入的格式:以空格或回車分隔數(shù)據。但字元數(shù)據要注意:空格也是合法字元?!啊眱茸衷瓨虞敵?6
I/O流的格式控制用控制符(檔iomanip.h中定義的對象)可以對輸入輸出格式進行控制常用的控制有:dechex
oct
setfill(c)
setprecision(n)
setw(n)
setiosflags(ios::fixed)setiosflags(ios::scientific)
setiosflags(ios::left)setiosflags(ios::right)setiosflags(ios::skipws)setiosflags(ios::uppercase)setiosflags(ios::lowercase)setiosflags(ios::showpoint)setiosflags(ios::showpos)
置基數(shù)為10置基數(shù)為16置基數(shù)為8設填充字元為c
設顯示小數(shù)精度為n位
設域寬為n個字元
固定的浮點顯示
指數(shù)表示
左對齊
右對齊
忽略前導空白
16進制數(shù)大寫輸出
16進制數(shù)小寫輸出強制顯示小數(shù)點強制顯示符號57#include<iostream.h>
#include<iomanip.h>//要用到格式控制符voidmain()
{
doubleamount=22.0/7;
cout<<amount<<endl;
cout<<setprecision(0)<<amount<<endl
<<setprecision(1)<<amount<<endl
<<setprecision(2)<<amount<<endl
<<setprecision(3)<<amount<<endl
<<setprecision(4)<<amount<<endl;
cout<<setiosflags(ios::fixed);
cout<<setprecision(8)<<amount<<endl;
cout<<setiosflags(ios::scientific)
<<amount<<endl;
cout<<setprecision(6);//重新設置成原默認設置
}
運行結果為:
3.14286
例:3
3
3.1
3.14
3.143
3.14285714
3.14285714e+0058①cout<<setfill('*')
<<setw(2)<<21<<endl
<<setw(3)<<21<<endl
<<setw(4)<<21<<endl;
cout<<setfill('');//恢復默認設置
運行結果為:
21
*21
**21②number=1001;cout<<"1001:"<<hex
<<setiosftags(ios::uppercase)
<<number<<endl;
運行結果為:
1001:3E9。③cout<<10.0/5<<endl;
cout<<setiosflags(ios::showpoint)
<<10.0/5<<endl;
運行結果為:
2
2.00000
59④cout<<10<<""<<-20<<endl;
cout<<setiosflags(ios::showpos)
<<10<<""<<-20<<endl;
運行結果為:10-20
+10-20
2.調用標準I/O函數(shù)完成輸入輸出標準函數(shù):各種電腦都提供的一些通用函數(shù)被稱為標準函數(shù)標準I/O函數(shù):常用的是由檔stdio.h定義的輸入函數(shù)scanf()和輸出函數(shù)printf()①
輸出函數(shù):printf()格式:printf(”格式控制串”,輸出項1,輸出項2,…,)功能:將後面的輸出項按前面給定的格式輸出60格式控制串的組成:“普通字串和格式串“格式串:以%開頭,以格式字元結束。其完整的形式為:%
–0m.nl或h格式字元格式說明的起始符號指定左對齊輸出指定空位填0指定輸出的寬度及精度輸出長度修正指出輸出的類型:d:十進位
o:八進制
x:十六進制
c:字元
s:字串
u:無符號的十進位
f:小數(shù)形式
e:指數(shù)形式表示
例:floata=2.14235;printf(“a=%–05.2f”,a);其輸出結果為:a=002.14
61實例1:
#include<stdio.h>voidmain(){printf("ThisisaCprogram.\n");}實例2:
#include“stdio.h”voidmain(){inta=1,b=2,c=100;printf("a=%d,b=%3d,d=%3d%%\n",a,b,a*c/b);printf("%d,%o,%x\n",c,c,c);}
輸出:a=1,
b=
2,
d=
50%100,144,
6462格式:scanf(”格式控制串”,地址1,地址2,…,)②輸入函數(shù):scanf()%*mh或l格式字元格式說明的起始符號虛讀,不送變數(shù)域寬說明短整型或常整型及雙精度型指出輸入的類型:d:十進位
o:八進制
x:十六進制
c:字元
s:字串
u:無符號的十進位
f:小數(shù)形式
e:指數(shù)形式表示
“格式控制串”完整的組成:變數(shù)a的地址可表示為:&a功能:將數(shù)據按給定的格式存入對應的變數(shù)中。實例:1:scanf("%3d%2d",&x,&y);
輸入序列:123456[ENTER]
結果:x=123,y=452:scanf("%d,%d:%f",&x,&y,&z);
輸入序列:1,2:3.5[ENTER]
結果:x=1,y=2,z=3.5633:scanf("%d%d%d",&x,&y,&z);
輸入序列一:1
2
3[ENTER]
結果:x=1,y=2,z=3
輸入序列二:1[TAB]23[ENTER]
輸入序列三:1[ENTER]
23[ENTER]
結果與輸入序列一的結果一樣。4:scanf("%2d
%*2d,%2d",&x,&y);
輸入序列:1234,56[ENTER]
結果:x=12,y=56。注意:在scanf中,可以使用[ENTER]、空格或[TAB]作為數(shù)據之間的分隔符號。645:scanf(”x=%d",&x);
要使x的值等於12,從鍵盤應怎樣輸入?
正確的輸入序列:x=12[ENTER]
注意:字元x=被過濾掉了
若輸入序列為:12[ENTER]錯誤!
65§3.1
C++的運算符運算符:在程式中,許多語句是由運算式構成的。運算式是由運算符和運算數(shù)組成的式子。運算符指運算的符號,而運算數(shù)包含常量、變數(shù)和函數(shù)等。運算符的分類:
單目運算(一元運算符,只需一個運算元)
雙目運算(二元運算符,需兩個運算元)
三目運算(三元運算符,需三個運算元)
①
按運算符連接運算對象的個數(shù)分為:②
按其在運算式中所起的作用又可分為:66
算術運算符
+-*/%
關係運算符
<<=>===!=
邏輯運算符
!&&||
位運算符
<<>>~|^&
自增自減運算符
++--
賦值運算符
=及其擴展(+=-=*=/=%=等)條件運算符
?:
指針運算符
*和
&
逗號運算符
,
分量運算符
*->
函數(shù)調用運算符()下標運算符[]
求位元組運算符
sizeof
強制類型轉換運算符:(type)
671、算術運算符運算符名字實例+加12+4.9//得出16.9-減3.98-4//得出-0.02*乘2*3.4//得出6.8/除9/2.0//得出4.5%取餘13%3//得出12、自加和自減運算符++是自增運算符,――自減運算符,它門都是單目運算符,都是將數(shù)值變數(shù)的值加1或減1,該類操作符應用於變數(shù)而不能應用於常量。例:inti=5;
68運算符名字實例++自加(首碼)++i+10//得出16,i變?yōu)?++自加(尾碼)i+++10//得出15,i變?yōu)?--自減(首碼)--i+10//得出14,i變?yōu)?--自減(尾碼)i--+10//得出15,i變?yōu)?注意:
①++或--只能用於變數(shù)
②++i或--i是先增值再引用,i++或i--是先引用再增值
③自右向左將運算符結合在一起,但調用函數(shù)時,實參的求值順序一般為自右向左。a=6;b=6;
c1=a++;c2=++b;
例:執(zhí)行結果為:c1=6,a=7,b=7,c2=7inta=1;printf(“%d,%d,%d”,a++,a++,a++);輸出的結果為3,2,1而不是1,2,3。
693、關係運算符
關係運算符用於數(shù)值之間的比較,運算式的值為1(表示true),或為0(表示false),見表:運算符名字實例==等於5==5//得出1!=不等於5!=5//得出0<小於5<5.5//得出1<=小於或等於5<=5//得出1>大於5>5.5//得出0>=大於或等於6.3>=5//得出1關係運算符都是雙目運算符,兩邊的數(shù)值結果必須是類型相同的其結合性是從左到右,優(yōu)先順序低於算術運算符。字串不應當用關係運算符比較,因為被比較的不是字串的內容本身,而是字串的地址70①如何表示數(shù)學中的邏輯關係:0≤a≤9?用0<=a<=9表示?行嗎?X
因為0<=a<=9等價於(0<=a)<=9若a=5則(0<=a)<=9的值為:1②如何表示數(shù)學中的邏輯系:0≤a≤9
0≤a≤9應表示為為:a>=0&&a<=9714、邏輯運算符運算符名字實例!邏輯非
!(5==5)
//得出0&&邏輯與5<6&&6<6
//得出0||邏輯或5<6||6<5
//得出1注意:
①邏輯非的優(yōu)先順序最高,邏輯與次之,邏輯或最低
②&&:如果第一運算元為0,則不再求解第二運算元。
例:(x=0)&&(y=4):只完成了x的賦值,不再操作y=4,所以,
y沒有實現(xiàn)賦值。
③||
:如果第一運算元為1,則不再求解第二運算元。
例:(x=4)||(y=4)結果如何?例:該式5>3&&2||8<3-!0的值為:172例:從鍵盤上輸入年份year(4位十進位數(shù)),判斷其是否閏年。
閏年的條件是:能被4整除、但不能被100整除;或者能被400整除。#include<stdio.h>voidmain(){intyear;printf("Pleaseinputtheyear:");scanf("%d",&year);if((year%4==0&&year%100!=0)||(year%400==0))printf("%disaleapyear.\n",year);elseprintf("%disnotaleapyear.\n",year);}735、條件運算符
一般形式為:
運算式1?運算式2:運算式3
其運算方式為:先計算運算式1的值,如果其值為非0(真),則表達式2的值就是整個運算式的最終結果;否則運算式
3的值就是整個運算式的值。
運行的結果為:x=y?no!例如:①x=10;
y=x>9?100:200;②x=10;y=20;
printf(“x=y?%s!”,x==y?“yes”:“no”);//y=10074注意:
①條件運算符的結合性是自右向左。例如:a>b?a:c>d?c:d;
//相當於a>b?a:(c>d?c:d)
②條件運算符優(yōu)先順序高於賦值運算符低於關係和算術運算符。例如:
a>b?a-b:b-a;//相當於a>b?(a-b):(b-a)
6、位運算符
位運算符是對其運算元按其二進制形式逐位進行運算,參加位運算的運算元必須為整數(shù)。C++提供6種位運算符:
運算符名字功能~取反按位求反&逐位與把兩運算元對應的二進位位進行邏輯與|逐位或把兩運算元對應的二進位位進行邏輯或^逐位異或把兩個運算元對應的二進位位進行異或<<逐位左移將左運算元的每個二進位位左移右運算元位>>逐位右移左運算元的每一個二進位位右移右運算元位757、賦值運算符
①=是賦值運算符,它的作用是將一個運算式的值賦給一個左值。
左值:是指能出現(xiàn)在賦植運算式左邊的運算式,左值能存放數(shù)據,能
夠被修改,不能是常量??捎米償?shù)作左值,指針和引用也可以作左值。右值:只能出現(xiàn)在賦植運算式右邊。
②賦值運算符“=”的一般格式為:變數(shù)=運算式;
例如:inti=1.2*3; intj;j=3*(4+5); //j的值變?yōu)?7//結果為3,而不是3.6例:二進位數(shù)左移:0110<<1其值為:1100
二進位數(shù)右移(缺位補最左一位的數(shù)值)1100>>1
其值為:111076③賦值運算符的種類:運算符實例等價於=n=25
+=n+=25n=n+25-=n-=25n=n-25*=n*=25n=n*25/=n/=25n=n/25%=n%=25n=n%25&=n&=0xF2F2n=n&0xF2F2|=n|=0xF2F2n=n|0xF2F2^=n^=0xF2F2n=n^0xF2F2<<=n<<=4n=n<<4>>=n>>=4n=n>>477注意:
①賦值運算式本身的運算結果是右側運算式的值,而結果類型是左側
變數(shù)的數(shù)據類型.
②賦值運算符的結合性是從右至左的
例如:inta=12;a+=a-=a*=a;表示:
a=a*a//a=12*12=144
a=a-a//a=144-144=0
a=a+a//a=0+0=0注意:x*=y+8等價於x=x*(y+8),788、sizeof運算符(求位元組運算符)
sizeof運算符是單目運算符,用於計算運算對象在內存中所占位元組的多少,它有兩種形式:
sizeof(類型識別字);
sizeof運算式;
例如:inta,則sizeof(a)表示:求變數(shù)a在內存中所占位元組數(shù)。inta[10],則sizeof(a)表示:求數(shù)組a在內存中所占位元組數(shù)。
9、逗號運算符①逗號運算符用於將多個運算式連在一起,並將各運算式從左到右的順序依次求值,且最右端的運算式的結果,為整個逗號運算式的結果。②一般格式為:運算式1,運算式2,……,運算式n(i=3,i++,++i,i+5)這個逗號運算式的值是10,i的值為579C++運算符的優(yōu)先順序和結合性:
①當不同的運算符混合運算時,運算順序是根據運算符的優(yōu)先順序而定的。②若各運算符有相同的優(yōu)先順序,運算順序是從左向右,還是從右向左,是由運算符的結合性確定的。所謂結合性是指運算符可以和左邊的運算式結合,也可以與右邊的運算式結合。C++運算符的優(yōu)先順序和結合性見表(P=課本35頁)注意:
①優(yōu)先順序:一般情況為:
1)單目,雙目,三目,賦值
2)算術,移位,關係,位運算,邏輯,條件,賦植,逗號
②結合性:僅單目、三目和賦值的結合性是從右到左。80括?。?+,--,sizeof*,/,%+,-
移位(>><<)關係(>,>=,<,<=和==,!=)位運算&&||?:賦值運算逗號運算高低③常用運算符優(yōu)先順序:即:先()→單目!→算數(shù)→移位→關係→位運算→&&和︳︳→?→賦值→逗號81運算式:
①運算式:由運算符、運算元組成的計算式子。最簡單的運算式只有一個常量或變數(shù)。②運算式的分類(據運算式中的運算符的種類):算術運算式:a+5.2/3.0-9%5關係運算式:(a+b*c)>d邏輯運算式:a>b&&c>d賦值運算式:a=b+c、a+=b*c+d和a=b=c=1條件運算式:a>b?a:b逗號運算式:x=a+b,y=c+d,z=x+y混合運算式:(a>b)+(a=b+c)*(x>y?x:y)
82③運算式求值的順序:●按運算符的優(yōu)先順序高低次序執(zhí)行。例如,先乘除後加減●如果在一個運算對象(或稱運算元)兩側的運算符的優(yōu)先順序相同,則按C語言規(guī)定的結合方向(結合性)進行。且運算元必需化成同類型才能計算例:算術運算符的結合方向是“自左至右”,即:在執(zhí)行“a-b+c”時,變數(shù)b先與減號結合,執(zhí)行“a-b”83數(shù)據類型轉換:
C++中數(shù)據類型轉換有兩類,①隱式轉換:是由編譯器自動將不同類型的數(shù)據轉換為相同類型後再進行運算。隱式類型轉換按從低到高的順序進行:int
unsigned
long
unsignedlong
double
longdouble↑
↑short,char
float②顯式轉換:由程式員顯式指出的類型轉換,轉換形式有兩種:
類型名(運算式)
(類型名)運算式例如:
doublef=3.6;
intn=(int)f;
這樣n為3。
84§語句語句:是組成程式最基本的單位,語句是最小的可執(zhí)行單元,一條語句由一個分號結束。語句分類:
⒈
根據複雜程度的不同分:①簡單語句:空語句是簡單語句,僅由一個分號組成。②複合語句:由一對花括弧“{}”和括弧裏的一系列簡單語句組成,⒉
根據執(zhí)行流程的不同分:順序控制語句:指按照語句在程式中先後次序一條一條的順次執(zhí)行的語句選擇控制語句:據一個條件或一個值從一組語句中選擇一個執(zhí)行。迴圈控制語句:根據某個條件重複執(zhí)行一組語句
85§順序控制語句順序控制語句:其語句在執(zhí)行過程中,程式的流程不會發(fā)生轉移。常見的順序結構語句有:聲明語句、賦值語句和輸入輸出語句。例如:doubledval;//聲明語句dval=302.2948;//賦值語句,給變數(shù)賦值
cout<<"congratulation!";//輸出語句
cin>>dval;//輸入語句86§選擇控制語句選擇控制語句:又稱為分支語句,它通過對給定的條件進行判斷,從而決定執(zhí)行兩個或多個分支中的哪一支。因此,在編寫選擇語句之前,應該首先明確判斷條件是什麼,並確定當判斷結果為“真”或“假”時應分別執(zhí)行什麼樣的操作。選擇控制語句種類:if…else語句和switch語句。
⒈if語句有三種格式:
87運算式執(zhí)行語句2執(zhí)行語句1成立不成立運算式執(zhí)行語句成立不成立①
if(<運算式>)
<語句>②
if(<運算式>)
<語句1>
else<語句2>88運算式1運算式2運算式3運算式4語句1語句2語句3語句4假假假語句5假真真真真③if(運算式1)語句1
elseif(運算式2)語句2
elseif(運算式3)語句3
…
else語句n89例:求a和b兩數(shù)中較大的一個。a>b?max=bmax=a成立不成立#include<iostream.h>voidmain(){inta,b,max;cout<<"Inputaandb:";cin>>a>>b;if(a>b)max=a;elsemax=b;cout<<“Themaxofaandb:”<<max;}90例:判斷用戶的輸入,如果輸入的數(shù)值大於0,則在螢幕上顯示“正數(shù)”;否則在螢幕上顯示“不是正數(shù)”。#include<iostream.h>voidmain(){floata;cin>>a;if(a>0)cout<<“正數(shù)”<<endl;elsecout<<“不是正數(shù)”<<endl;}91例:輸入兩個整數(shù),比較兩個數(shù)的大小。#include<iostream.h>voidmain(){intx,y;cout<<"Enterxandy:";cin>>x>>y;
if(x!=y)
if(x>y)cout<<x<<“>“<<y<<endl;
elsecout<<x<<“<“<<y<<endl;
else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國空調通風道行業(yè)投資前景及策略咨詢研究報告
- 興安職業(yè)技術學院《數(shù)字合成》2023-2024學年第二學期期末試卷
- 2024屆山東省臨沂蘭陵縣聯(lián)考中考數(shù)學模擬試題含解析
- 甘肅省定西市渭源縣重點中學2024年中考數(shù)學押題試卷含解析
- 廣東普寧市下架山中學2023-2024學年初中數(shù)學畢業(yè)考試模擬沖刺卷含解析
- 2024-2025新進廠員工安全培訓考試試題(達標題)
- 2024-2025新進廠員工安全培訓考試試題附完整答案(網校專用)
- 2025年員工安全培訓考試試題預熱題
- 2025年班組安全培訓考試試題答案必考
- 2025年新入職工入職安全培訓考試試題及參考答案【突破訓練】
- 中西藥注射劑配伍禁忌表
- 工貿有限公司安全教育培訓安全風險分級清單
- 2022年湖南省政工師考試題庫匯總(含解析)
- 大學生創(chuàng)新創(chuàng)業(yè)教程(高職)PPT完整全套教學課件
- 日本大眾文化-北京科技大學中國大學mooc課后章節(jié)答案期末考試題庫2023年
- 科學語言動物音樂會
- 《大隨求陀羅尼》羅馬拼音與漢字對照版
- 心肺復蘇操作考核評分表 (詳)
- 打造媽祖文化品牌
- 內外科醫(yī)生聯(lián)合提高肝移植中長期生存
- 工作證明模板下載
評論
0/150
提交評論