C++程序设计开发教程课件_第1页
C++程序设计开发教程课件_第2页
C++程序设计开发教程课件_第3页
C++程序设计开发教程课件_第4页
C++程序设计开发教程课件_第5页
已阅读5页,还剩541页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第1章C++程式開發初步

2

C++程式開發初步最簡單的C++程式結構函數類與對象C++程式開發過程與環境3程式設計中主要應用兩大類模型面向過程的模型 概括為:數據結構+演算法面向對象的模型 認為世界是由一些對象(objects)組成的,每一個對象包括屬性和方法兩部分;屬性是描述對象特徵的一些數據或數據結構,方法表明對象的變化或一個對象對其他對象的作用,對象間通過消息傳遞進行通信4最簡單的C++程式結構一個簡單的C++程式運算符與運算式數據類型變數與常量5一個簡單的C++程式#include<iostream.h>intmain(){ intx,y,s; //定義3個整數:兩個代表加數,一個代表和

cout<<“輸入兩個整數:”; //給用戶發出輸入兩個數的提示

cin>>x>>y; //輸入兩個整數到x和y s=x+y; //將x和y相加,送到s中

cout<<“x+y=” //輸出提示

<<s //輸出s的值

<<endl; //換行,語句結束

return0;}6上例說明C++的注釋符有:“//”後面與“/*”和“*/”之間的“;”是C++語句的結束符,表明一個語句的結束x”、“y”和“s”稱為三個變數,是三個存儲數據的空間的名字“cout”稱為標準輸出設備,通常指顯示器“cin”稱為標準輸入設備,通常指鍵盤“endl”表示換行“#include”稱為檔包含7運算符與運算式運算符是一種程式記號,它作用於運算元而觸發某種操作由運算符和運算元組成的符號序列,就稱為運算式8最基本的運算符算術運算符賦值運算符複合賦值運算符9運算符在運算式中的運算順序運算符的優先順序別運算符與運算元的結合方向運算符的先後排列順序10各種運算符間的優先順序別和結合性運算符結合性優先順序別單目減:-←高低雙目算術運算符:*/→+-→標準輸入輸出:>><<

→賦值:=←11例1.1.1

#include<iostream.h>intmain(){intx,y;cout<<"x=3,y=8,x*=y+1:"<<(x=3,y=8,x*=y+1)<<endl;cout<<"x=3,y=8,x=x*y+1:"<<(x=3,y=8,x=x*y+1)<<endl;return0;}12++與--有兩種使用形式首碼形式,即它們在運算元前,如++x,--x尾碼形式,即它們在運算元後,如x++,x--++運算式與--運算式獨立使用時,首碼形式與尾碼形式無區別,但它們在運算式中被引用時,結果是不同的。首碼形式是先增(減)1,後被引用;尾碼形式是先被引用,後增(減)113例1.1.2

#include<iostream.h>intmain(){intx,y;x=5,y=x++;//先引用後增1cout<<"x=5,y=x++:"<<y<<",x="<<x<<endl;x=5,y=++x;//先增1後引用

cout<<"x=5,y=++x:"<<y<<",x="<<x<<endl; return0;}14數據類型整型類型與實型類型字元類型字串算術數據的類型轉換sizeof運算符15數據的規範化為數據分配相應大小的存儲空間;確定數據值的範圍;確定數據的表示精度;確定數據可以進行的運算種類。16最常用的數據類型的比較數據類型關鍵字意義存儲空間表數精度(有效數字)表數範圍運算類型char字元8位+、-、%short短整數16位-32768~32767+、-、*、/、%int整數32位-2147483648~2147483647float單精確度浮點32位7位

(3.4×10-38~3.4×1038)+、-、*、/、%double雙精度浮點64位16位

(2.23×10-308~1.79×10308)longdouble長雙精度80位18位±(3.37×10-4932~1.18×104932)17整型類型與實型類型

整型就是不帶有小數點的數據類型C++還把整型數分為帶符號和不帶符號兩大類實數一般用小數形式或科學記數法(指數形式)書寫18C++的轉義字元序列序列值字元功能\a0X07BEL警告響鈴\b0X08BS退格\f0X0CFF走紙\n0X0ALF換行\r0X0DCR回車\t0X09HT水準製錶\v0X0BVT垂直製錶\\0X5c\反斜杠\'0X27'單引號\"0X22"雙引號\?0X3F?問號\o整數任意0[L1]:最多為3位的八進制數字串\xH整數任意H:十六進制數字串19字串字串常量也稱字串文字或字串,它們是括在一對雙撇號內的字元序列字串常量與字元型常量在內部存儲上是不同的20算術數據的類型轉換在運算式中,常常會發生數據類型的轉換,即將數據由一種類型轉換成另一種類型下麵介紹這些類型轉換規則。 常規轉換 傳送轉換 用類型運算符進行顯式轉換21例1.1.4#include<iostream.h>intmain(){shortinta=-32768,b,i=1234567890;//i溢出

unsignedshortintua=32768,ub;cout<<"b=ua:"<<(b=ua)<<endl;//注意ua對int溢出

cout<<"ub=a:"<<(ub=a)<<endl;//注意有符號負數向無符號數轉換

cout<<i;}22sizeof運算符sizeof是一個單目運算符,用以計算運算元在內存中佔用的位元組數。它的運算元可以是以下兩種情況:

括在圓括號中的類型識別字 一個運算式sizeof運算符具有最高優先順序,最高優先順序中的運算符都是從右向左結合的23例1.1.5#include<iostream.h>intmain()//該程式在16位和32位系統中的運行結果不同!

{cout<<"sizeofunsignedchar:"<<sizeof(unsignedchar)<<endl;cout<<"sizeofchar:"<<sizeof(char)<<endl;cout<<"sizeofunsignedint:"<<sizeof(unsignedint)<<endl;cout<<"sizeofshortint:"<<sizeof(shortint)<<endl;cout<<"sizeofint:"<<sizeof(int)<<endl;cout<<"sizeofunsignedlong:"<<sizeof(unsignedlong)<<endl;cout<<"sizeoflong:"<<sizeof(long)<<endl;cout<<"sizeoffloat:"<<sizeof(float)<<endl;cout<<"sizeofdouble:"<<sizeof(double)<<endl;cout<<"sizeoflongdouble:"<<sizeof(longdouble)<<endl;}24變數與常量程式變數字面常量與符號常量25程式變數程式變數簡稱變數。變數有以下特點:變數指稱了程式中使用的一個被命名存儲區域(稱程式實體),以存放可由程式修改的值,變數在某一時刻的值稱為變數值。變數的名稱為變數名。C++規定變數名由如下三種符號組成: 大小寫字母——可用於變數名的任何位置; 下劃線——可用於變數名的任何位置; 數字——不能用於變數名的首部。每個變數應屬於一個特定的類型26例1.1.6#include<iostream.h>intmain(){inti; //聲明i為整型

i=3; //給變數i賦值3cout<<"Thefirst\"i\"is:"<<i<<endl;i=5; //給變數i再賦值5cout<<"Thesecond\"i\"is:"<<i<<endl;cout<<"Enteranumber:";cin>>i; //由鍵盤給變數i輸入一個值

cout<<"\nThelast\"i\"is:"<<i<<endl;}27字面常量與符號常量常量可以是字面常量(也稱直接常量)或符號常量。前面使用的基本上都是字面常量下麵介紹兩種符號常量: (1)用const定義的符號常量 (2)用宏定義模擬符號常量28例1.1.7/******************************程式名:area_circum**功能:計算圓的面積與周長*******************************/#include<iostream.h>intmain(){floatfArea,fCircum;fArea=3.1415926*2.0*2.0;cout<<"Theareais:"<<fArea<<endl;fCircum=3.1415926*2.0*2.0;cout<<"Thecircumis:"<<fCircum<<endl;}29用宏定義模擬符號常量#include<iostream.h>#definePi3.1415926 //定義宏#definer2.0 //定義宏

intmain(){floatfArea,fCircum;fArea=Pi*r*r; //引用宏

cout<<"Theareais:"<<fArea<<endl;fCircum=2.0*Pi*r; //引用宏

cout<<"Thecircumferenceis:"<<fCircum<<endl;}30函數函數的意義與用法函數定義與函數結構函數原型與函數聲明函數調用與內聯函數傳值調用與引用類型庫函數應用31函數的意義與用法函數是C++程式中組織過程的機制。它對較大的程式比較有效。這裏,主要介紹函數的用法,因此仍然使用前面介紹過的求圓的面積的例子,只不過用函數的形式來描述32例1.2.1#include<iostream.h>#definePi3.1415926 intmain(){floatflR=1.2,fArea;floatArea(float); //函數聲明fArea=Area(flR); //函數調用cout<<"Theareais:"<<fArea<<endl;}floatArea(floatfR) //定義求圓面積的函數{ return(Pi*fR*fR);}33C++程式的一般結構系統調用返回系統f1()f11(){④{↓③↓⑤main()②f11();⑥}{↓⑦↓①}f21()f1();⑧{↓⑨f2()12↓13f2();10{}↓21↓1114}f21();f22()20↓1516{f22();↓17↓1918}}34函數定義與函數結構一個C++函數的定義由函數頭與函數體兩部分組成,形式如下:

函數首部

{

函數體

}35函數首部函數首部是函數的介面部分,其組成形式如下:

類型名

函數名(形式參數表列)函數類型規定為函數返回值的類型函數名是函數的標識,它應是一個有效的C++識別字形式參數表列是括在園括弧中的0個或多個以逗號分隔的形式參數36函數體一個函數體是一個語句塊,是用一對花括弧封裝的語句序列。它描述了函數實現一個功能的過程。它最後執行一個函數返回,返回的作用是: 將流程從當前函數返回其上級(調用函數); 撤銷函數調用時為各參數及變數分配的記憶體空間; 向調用函數返回頂多一個值37例1.2.2voidArea(floatfR) //定義求圓面積的函數{cout<<"Theareais:"<<(Pi*fR*fR)<<endl;return;}或voidArea(floatfR) //定義求圓面積的函數{cout<<"Theareais:"<<(Pi*fR*fR)<<endl;return;}38主函數main()main()函數是一個特殊的函數。它的名字是固定的。它可看作是由操作系統調用的一個函數。其返回值可以是void型或int型(可以缺省)。當其返回值為int型時,用0或非0,告訴操作系統程式是否正常結束39例1.2.3

#include<iostream.h>main(){cout<<"ok!";return(0);}40函數原型函數原型也稱函數模型,是由函數定義中抽取出來的能代表函數應用特徵的部分:

·

函數類型

·

函數名

·

參數個數及其類型函數原型的形式為:類型函數名(參數類型1,參數類型2,…,參數類型n)41函數提前聲明當函數定義在前調用在後時,編譯器在調用函數之前,能從其定義中抽取函數原型當函數調用在前定義在後時,要求程式員在調用之前用函數原型對函數進行聲明,以便編譯器從中得到函數原型所提供的有關資訊函數聲明中的參數名對編譯器沒有意義42函數調用與內聯函數函數調用的作用是:

·

用實參數(如例1.2.1中的nR)向形式參數(如例1.2.1中的fR)傳遞數據;

·

中斷現行(調用)函數,把流程轉向(被調用)函數的入口處,開始執行被調函數在調用與返回過程中,需要付出一定的時間與空間代價用於處理現場。當函數較小,又反復使用時,處理現場的開銷比重會急劇增大。若把函數體嵌入函數調用處,便可以大大提高運行速度,節省開銷。內聯函數就可以自動實現這一功能43例1.2.4#include<iostream.h>#definePi3.1415926 intmain(){floatfR1=1.2,fR1=2.3,fArea;floatArea(float); //函數原型聲明fArea=Area(fR1); //函數調用1cout<<"Theareais:"<<fArea<<endl;fArea=Area(fR2); //函數調用2cout<<"Theareais:"<<fArea<<endl;}floatArea(floatfR) { return(Pi*fR*fR);}44例1.2.5#include<iostream.h>#definePi3.1415926 intmain(){floatfR1=1.2,fR1=2.3;floatArea(float); //函數原型聲明cout<<"Theareais:"<<Area(fR1)<<endl;//函數調用1cout<<"Theareais:"<<Area(fR2)<<endl;//函數調用2}floatArea(floatfR) { return(Pi*fR*fR);}45例1.2.6#include<iostream.h>#definePi3.1415926 intmain(){floatflR=1.2,fArea;inlinefloatArea(float); //內聯函數以聲明為主fArea=Area(flR); cout<<"Theareais:"<<fArea<<endl;}inlinefloatArea(floatfR) //定義內聯函數{ return(Pi*fR*fR);}46內聯函數定義方法一種是將函數定義內嵌在類的介面中一種是定義在類介面的外部注意,由於編譯器必須知道內聯函數的函數體才能進行內聯替換,因此,內聯函數在程式中被調用之前,必須被編譯器看見,即內聯函數必須在調用之前定義或聲明47傳值調用與引用類型傳值調用(即“值傳遞”)是C++函數調用的重要特徵,即調用函數向被調用函數傳送的是參數值引用(reference)。這一概念的引入,大大簡化了許多語法規則,並使得一些本來困難或不可能的實體操作成為可能48例1.2.7#include<iostream.h>

intmain()

{

intx=3,y=5;

cout<<"Befor\'swap\':x="<<x<<",y="<<y<<endl;voidswap(int,int);swap(x,y);cout<<"After\'swap\':x="<<x<<",y="<<y<<endl;}

voidswap(inta,intb){inttemp;temp=a;a=b;b=temp;cout<<"In\'swap\':a="<<a<<",b="<<b<<endl;}49例1.2.8#include<iostream.h>intmain(){inti=5;int&ri1=i;cout<<"i="<<i<<",ri1="<<ri1<<endl;i*=3; //改寫變數cout<<"i="<<i<<",ri1="<<ri1<<endl;ri1+=5; //改寫引用cout<<"i="<<i<<",ri1="<<ri1<<endl;}50例1.2.9#include<iostream.h>intmain(){inti=5;int&ril=i;cout<<"&i="<<&i<<",&ril="<<&ril<<endl; //&為求地址運算符

}51引用參數的swap()函數#include<iostream.h>intmain(){intx=3,y=5;voidswap(int&,int&);//引用參數

swap(x,y);cout<<"x="<<x<<",y="<<y<<endl;}voidswap(int&n1,int&n2){inttemp=n1;n1=n2;n2=temp;}52庫函數應用庫函數是C++廠商收集的一些成熟的函數,以供用戶“拿來就用”。程式員使用庫函數無須再自行定義,只要注意事先瞭解以下3點便可:

·

函數的功能;

·

函數的原型——函數名、參數個數及類型、返回類型,以便正確調用;

·

使用庫函數所需的頭檔——其中有函數原型聲明。程式員使用庫函數之前只需在程式中使用#include指令嵌入相應的頭檔而不必再進行函數的原型說明53例1.2.12#include<iostream.h>#include<math.h>//嵌入數學函數庫頭檔

intmain(){floatf;cout<<"Enterarealnumber:";cin>>f; cout<<"Thesqnarerootof“<<f<<”is:”<<sqrt(f)<<endl; //sqrt是數學函數庫math中的一個庫函數

}5415個標準頭檔檔案名功能檔案名功能assert.h程式斷言診斷signal.h中斷信號處理ctype.h字元處理stdarg.h可變參數的宏處理errno.h報告庫函數出錯stddef.h公共定義float.h實型類型的特徵參數stdio.hI/O函數庫limit.h整型量大小的限制參數stdlib.h常用函數庫local.h地方特徵string.h字串處理math.h數學函數庫time.h日期與時間函數庫setjmp.h非局部跳轉55類與對象一個簡單的面向對象的例子類的定義與實現對象的生成與構造函數對象的撤銷與釋放函數友元56一個簡單的面向對象的例子一個面向對象的C++程式由三部分組成:

·

類介面的定義;

·

主函數的編寫;

·

類的實現——

成員函數的定義57面向對象的程式描述的圓#include<iostream.h>#definePi3.1415926classCircle{ //定義一個Circle類,描述了抽象的圓

private: //私有成員

floatmfR; //數據成員:半徑

public:Circle(floatfR); //成員函數:構造函數

voidOutputArea(); //成員函數:求面積

voidOutputCircum(); //成員函數:求周長};58intmain() //進行具體的計算{Circlea(1.23),b(5.67); //聲明兩個Circle類對象a和ba.OutputArea(); //輸出對象a的面積

a.OutputCircum(); //輸出對象a的周長

b.OutputArea(); //輸出對象b的面積

b.OutputCircum(); //輸出對象b的周長}Circle::Circle(floatfR) //構造函數定義{mfR=fR;}voidCircle::OutputArea() //成員函數OutputArea()的定義{cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}voidCircle::OutputCircum() //成員函數OutputCircum()的定義{cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}59類的定義與實現類的定義包含兩部分:

·

數據成員:描述某類對象的屬性;

·

成員函數:描述某類對象的行為和變化等私有成員不允許外界直接訪問,只能由本類的成員函數訪問。外界與對象間的資訊傳送只能通過公開成員進行,數據成員是對象隱藏的部分,由關鍵字private說明為私有的由關鍵字public說明為公開的,資訊隱藏是面向對象程式設計的基本原則,它將外界不需要知道的資訊都隱藏起來,以減少程式設計的複雜性。因此默認的成員都是私有的,即當私有成員放在類介面的開頭部分時,關鍵字private可以缺省60定義內聯成員函數的方法將成員函數直接定義在類的定義中將成員函數定義在類定義之外時使用關鍵字inline61成員函數直接定義在類的定義中#include<iostream.h>#definePi3.1415926classCircle{ private: floatmfR; public:voidCircle::OutputArea()//內聯OutputArea(){cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}voidCircle::OutputCircum() //內聯OutputCircum(){cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}};62成員函數定義在類定義之外時使用關鍵字inline

#include<iostream.h>#definePi3.1415926classCircle{ private: floatmfR; public: voidOutputArea(); voidOutputCircum(); };inlinevoidCircle::OutputArea()//內聯的OutputArea()定義{cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}inlinevoidCircle::OutputCircum() //內聯的OutputCircum()定義{cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}63對象的生成與構造函數創建對象時,要做的工作是:

·

給對象一個識別字;

·

給對象開闢一個記憶體空間;

·

將對象中的成員數據初始化64構造函數的特點構造函數具有特定名字──與類名相同。如類Circle的構造函數名也為Circle。構造函數不能標以返回類型。它的返回值是隱含的,是指向類本身的值。因此在例1.3.1中定義的構造函數沒有返回類型。構造函數也可以定義為內聯函數當系統執行對象聲明語句時,構造函數會被自動調用,去初始化被聲明的對象刪除構造函數允許參數缺省調用65對象的撤銷與釋放函數釋放函數在對象撤銷時被自動調用,用於執行一些清理任務,如釋放由構造函數分配的記憶體等釋放函數有如下一些特點:

·

與類同名,之前冠以波浪號,以區別於構造函數;

·

不指定返回類型;

·

不能指定參數。66友元用friend聲明了的外部函數稱為這個類的友元函數元函數的使用有三個要點:

·

在類定義中用關鍵字friend聲明;

·

在類定義之外定義;

·

使用類對象引用作參數。外部友元函數的作用域是所在類的類作用域友元函數不僅可以訪問對象的公開成員,而且可以訪問對象的私有成員67友元函數是另一個類的成員函數友元函數作為一個類的成員函數時,除應當在它所在的類定義中聲明之外,還應當在另一個類中聲明它的友元關係友元函數既可以引用本類對象的私有成員,這時毋須本類對象的引用參數;還可以引用聲明它是友元的類對象中的私有成員,這時必須有友員類對象的引用參數一個類的成員函數作另一個類的友元函數時,必須先定義它,而不僅僅是聲明它68友元關係classx{private:

成員1…………public:pf();……}classx{private:

成員1……public:pf();friendf();……}f();f();可以訪問可以訪問不可訪問聲明友元關係可以訪問可以訪問69例1.3.2#include<iostream.h>#include<string.h>classGirl{char*name,*dial;public:Girl(char*n,char*d){name=newchar[strlen(n)+1];strcpy(name,n);dial=newchar[strlen(d)+1];strcpy(dial,d);}friendvoiddisp(Girl&);//聲明友元函數

~Girl(){deletename;deletedial;}};voiddisp(Girl&x)//定義外部友元函數,不是定義成員函數

{cout<<"Girl\'snameis:"<<;<<",tel:"<<x.dial<<"\n";}main(void){Girle("Eluza",);

disp(e);//調用友元函數

}70C++程式開發過程與環境C++程式開發的基本過程C++的版本71C++程式開發的基本過程電腦由硬體和軟體兩部分組成。硬體是電腦的物理組成,包括一些電路板、電子元件、接插件以及電源、外殼等。光有硬體,電腦還不能工作。電腦的工作是由程式控制的。程式是對電腦完成工作的成員函數的描述72一個程式的開發需要經過如下步驟1.分析問題,建立問題的模型2.表現模型3.程式的編譯(或解釋)與連接4.程式的測試與調試5.程式的維護73表現模型表現模型就是用一種符號系統——語言來描述模型。或者說是用一種語言來寫程式。這種語言就稱為程式設計語言程式設計語言分為低級語言(面向機器的語言)和高級語言兩大類高級程式設計語言可分為面向過程的程式設計語言和麵向對象的程式設計語言兩大類74程式測試的正確指導思想以任何程式都存在錯誤為前提測試的目的是找出程式中的錯誤,而不是證明程式的正確為了保證測試成功,需要很好地設計一組測試用例,試運行程式一般說來,測試不可能是完全的,成功的測試是能夠找出更多的錯誤的測試75維護程式的原因

原來的程式沒有完全滿足用戶要求;用戶要求的改變;程式中遺留有錯誤,在運行中被發現76程式開發的一般過程提出問題分析問題建立模型表現模型編輯根源程式編譯連接測試與調試運行維護錯誤目標檔可執行檔未發現錯誤根源程式檔根源程式代碼模型問題編輯錯誤建模錯誤分析錯誤不再適宜77C++的版本C++是以C語言為基礎擴充、發展起來的一種優秀的通用程式設計語言。它保持了C語言的緊湊、靈活、高效和移植性好的優點,又吸收了一些著名程式設計語言的優秀特性:從Simula中吸收了類的機制;從ALGOL68中吸收了運算符重載、引用和在局部的任何地方聲明變數;綜合了Ada的類屬和異常處理機制

演算法設計與程式結構判斷與選擇結構迴圈結構常用演算法設計變數的存儲屬性多檔程式結構判斷與選擇結構關係運算與邏輯運算if…else結構條件運算符與條件運算式elseif結構

switch結構關係運算與邏輯運算關係運算符與關係運算式邏輯運算符與邏輯運算式關係運算符

<(小於)<=(小於等於)

>(大於)>=(大於等於)==等於)!=(不等於)關係運算符特點關係運算的結果為邏輯型“==”與“!=”兩種關係運算符的優先順序比其他關係運算符的優先順序別略低邏輯運算符

&&(邏輯“與”)

||(邏輯“或”)!(邏輯“非”)運算符優先順序比較優先順序運

符結合方向()後置++後置--→!前置++後置---*(間接引用)&(取地址)←*/%→+-…<<=>>===!=…&&||…←=+=-=*=/=%=

if…else結構if…else結構的基本形式為:

if(判斷運算式)

語句1 else

語句2例程include<iostream.h>classThreeNumber{ intm1,m2,m3;public: voidInput3Integers();

voidGetMax();}; intmain(){ThreeNumbera;a.Input3Integers();a.GetMax();return0;}

兩個成員函數的實現voidThreeNumber::Input3Integers(){cout<<“Input3Integers:\n”;cin>>m1>>m2>>m3;}intThreeNumber::GetMax(){intmax;if(m1>m2) if(m1>m3) max=m1; else max=m3;else if(m2>m3) max=m2; else max=m3;cout<<“TheMaxintegeris:”<<max<<endl;}條件運算符與條件運算式條件運算式的一般形式為:

e1?e2:e3

elseif結構if(判斷運算式1)

語句1elseif(運算式2)

語句2…elseif(運算式n)

語句nelse

語句n+1switch結構

switch(開關運算式){case常量1:

語句表列

case常量2:

語句表列

…default:

語句表列

}

switch結構描述例程voidCharacter::GetClass(){switch(mCh){ case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':cout<<"\nIt'sadigitcharacter.";break;case'':case'\n':case'\t':cout<<"\nIt'sawhitecharacter.";break;default:cout<<"\nIt'salettercharacter.";break;}}迴圈結構for結構

while結構與do…while結構for結構結構的基本形式為:

for(運算式1;運算式2;運算式3)

循環體高斯(Gauss)問題#include<iostream.h>classGauss{ intmi;public: InputInteger(); GetGaussSum();};intmain(){ Gaussg1; g1.InputInteger(); g1.GetGaussSum(); return0;}voidGauss::InputInteger(){cout<<"Enteracharacter:\n";cin>>mi;}voidGauss::GetGaussSum(){inti,isum=0;for(i=1;i<=mi;i++)

isum+=i;cout<<"\nThesumis:"<<isum;}

for結構的流程for(初始化運算式;→判斷運算式;←修正運算式)↓”真”循環體進入迴圈退出迴圈假while結構while結構的一般形式:

while(判斷運算式)

循環體語句進一步說明運算式是循環體語句能否進行以及能否繼續的條件。也就是說,在進入迴圈之前,先測試一次判斷運算式,如果判斷運算式為真(值不為0),則就進入迴圈,開始執行循環體語句;以後每執行完一次循環體語句,就再測試一次判斷運算式,如果判斷運算式還為“真”(值不為0),就繼續執行循環體語句;如此重複,直到某一次循環體語句執行完,判斷運算式變為“假”至do…while結構do…while結構形式為:

do

循環體語句

while(判斷運算式);進一步說明do…while結構與while結構非常相似,一點微小的區別僅在於while結構是先判斷後執行循環體,而do…while結構是先執行一次循環體再判斷。也就是說,do…while結構最少要執行循環體一次,而while結構有可能一次也不執行循環體常用演算法設計窮舉遞推模擬遞歸窮舉窮舉歸納是數學上最常用的方法之一它的基本思想是一一列舉各種可能進行測試,從中找出符合條件的解電腦能夠實現高速運算,借迴圈結構實現窮舉,比人工更為有效大獎賽評分程式#include<iostream.h>classScore{ intmNumber_Adjudicator; //評委人數

public: Score(intiNum_Adj) { mNumber_Adjudicator=iNum_Adj; } voidGetResult(); //計算並給出結果};intmain(){ Scorem(15); //假定有15個評委

m.GetResult(); return0;}voidScore::GetResult(){ intiScore, //每個評委的給分

i, //臨時變數

max, //最高分

min; //最低分

max=0; //先假設當前最大分為0 min=100; //先假設當前最小分為最大分(100)

floatfSum=0; //均分

for(i=1;i<=mNumber_Adjudicator;i++){ cout<<"\n輸入第“

<<i<<“個分”; cin>>iScore; //輸入評委評分

fSum+=iScore; //計算總分

if(score>max)max=score; //篩選最高分

if(score<min)min=score; //篩選最低分

}cout<<"\n均分為"<<(fSum-max-min)/(mNumber_Adjudicator-2));}列印3~N中的素數#include<iostream.h>classPrimer{ intmNumber; public: Primer(intn) { mNumber=n; } void GetPrimers();};intmain(){ Primer n(m); n.GetPrimers(); return0;}36塊磚,36人搬classRemoveBricks{ intiNumberOfPeople; intiNumberOfBrick; public: RemoveBrick(intiNumPeop,intiNumBrc)//構造函數

{ iNumberOfPeople=iNumPeop; iNumberOfBrick=iNumBrc;} voidCalculate();};

intmain(){ BrickProblem rb(36,36);//用構造函數創建對象並初始化

rb.Calculate(); //調用對象的成員函數進行計算

return0;}

函數Calculate()#include<iostream.h>voidBrickProblem::Calculate(){cout<<"men*****women***children\n");intmen=0; //賦初值

while(men++<iNumberOfPeople/4) //修訂並判斷

{ intwomen=0; //賦初值

while(women++<iNumberOfPeople/3) //修訂並判斷

{intchildren;children=iNumberOfPeople–men-women;if(4*men+3*women+children/2==iNumberOfBrick) { cout.width(6); //設置輸出域寬

cout<<men<<women<<children;}}}}遞推遞推就是採用不斷由已知推出新值,直到求得解為止

求兩個非負整數的最大公因數#include<iostream.h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论