西安交通大學(xué)大學(xué)C++程序設(shè)計(jì)教程總復(fù)習(xí)_第1頁(yè)
西安交通大學(xué)大學(xué)C++程序設(shè)計(jì)教程總復(fù)習(xí)_第2頁(yè)
西安交通大學(xué)大學(xué)C++程序設(shè)計(jì)教程總復(fù)習(xí)_第3頁(yè)
西安交通大學(xué)大學(xué)C++程序設(shè)計(jì)教程總復(fù)習(xí)_第4頁(yè)
西安交通大學(xué)大學(xué)C++程序設(shè)計(jì)教程總復(fù)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

大學(xué)C++程序設(shè)計(jì)教程綜合復(fù)習(xí)

授課內(nèi)容

考試系統(tǒng)介紹程序運(yùn)行錯(cuò)誤檢查例題分析上網(wǎng)費(fèi)用結(jié)算程序。鍵盤輸入上網(wǎng)時(shí)間(單位:小時(shí))和每小時(shí)的上網(wǎng)費(fèi)用(單位:元),計(jì)算并輸出上網(wǎng)費(fèi)用。若上網(wǎng)時(shí)間超過(guò)8小時(shí),則超過(guò)部分按60%計(jì)費(fèi)(結(jié)果按四舍五入法保留1位小數(shù))。評(píng)分標(biāo)準(zhǔn):程序框架完整,代碼規(guī)范(20%)數(shù)據(jù)類型的定義和使用方法正確(20%)程序控制結(jié)構(gòu)使用正確(20%)算法正確,清晰合理(20%)運(yùn)行結(jié)果正確,輸入和輸出格式如下所示(20%)輸入上網(wǎng)時(shí)間:10輸入每小時(shí)上網(wǎng)費(fèi)用:1上網(wǎng)費(fèi)用:9.2元//計(jì)算上網(wǎng)費(fèi)用#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ doubleh,f,t;

cout<<"輸入上網(wǎng)時(shí)間:";

cin>>h;

cout<<"輸入每小時(shí)上網(wǎng)費(fèi)用:";

cin>>f;

if(h>8) t=8*f+(h-8)*f*0.6; else t=h*f;

cout<<fixed<<setprecision(1);

cout<<"上網(wǎng)費(fèi)用:"<<t<<"元"<<endl; return0;}//計(jì)算上網(wǎng)費(fèi)用#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ doubleh,f,t;

cout<<"輸入上網(wǎng)時(shí)間:";

cin>>h;

cout<<"輸入每小時(shí)上網(wǎng)費(fèi)用:";

cin>>f;

if(h>8) t=8*f+(h-8)*f*0.6; else t=h*f;

cout<<fixed;

cout<<"上網(wǎng)費(fèi)用:"<<setprecision(1)<<t<<"元"<<endl; return0;}定義表示空間點(diǎn)的類Point,數(shù)據(jù)成員用變量X、Y和Z,分別表示點(diǎn)的三維坐標(biāo)。再定義表示球體的類Sphere,它以公有方式繼承Point,以該點(diǎn)為球心并增加數(shù)據(jù)成員R表示球體半徑?;愔杏杏?jì)算該點(diǎn)到坐標(biāo)原點(diǎn)距離的函數(shù),派生類中有計(jì)算球體表面積和體積的函數(shù)。另外,基類和派生類都有構(gòu)造函數(shù),并且可以通過(guò)構(gòu)造函數(shù)直接設(shè)定數(shù)據(jù)成員。編寫測(cè)試代碼,在主函數(shù)中輸入球心坐標(biāo)及半徑,然后輸出球心到原點(diǎn)距離、球體表面積和體積。評(píng)分標(biāo)準(zhǔn):程序框架完整,代碼規(guī)范(20%)基類與派生類的結(jié)構(gòu)聲明正確,數(shù)據(jù)成員聲明正確(20%)構(gòu)造函數(shù)及其他成員函數(shù)的定義方法正確(20%)主函數(shù)中的類對(duì)象的聲明、使用方法正確(20%)運(yùn)行結(jié)果正確,輸入和輸出格式如下所示(20%)請(qǐng)輸入球心坐標(biāo):111 請(qǐng)輸入球體半徑:1 球心坐標(biāo):1,1,1 球心到原點(diǎn)距離:1.73205 球體表面積:12.5664 球體體積:4.18879 輸入部分:請(qǐng)輸入球心坐標(biāo):111 請(qǐng)輸入球體半徑:1 輸出部分:

球心到原點(diǎn)距離:1.73205 球體表面積:12.5664 球體體積:4.18879 //類與繼承#include<iostream>#include<iomanip>#include<cmath>usingnamespacestd;classPoint{private:

int

x,y,z;public:

Point(int

a,int

b,intc) { x=a; y=b; z=c; } doubleDis() { returnsqrt(x*x+y*y+z*z); }};classSphere:publicPoint{private: doubleR;public:

Sphere(int

a,int

b,int

c,double

r):Point(a,b,c) { R=r; } doubleArea() { return4*3.14159*R*R; } doubleVolume() { return4.0/3.0*3.14159*R*R*R; }};intmain(){

int

x,y,z,r;

cout<<"請(qǐng)輸入球心坐標(biāo):";

cin>>x>>y>>z;

cout<<"請(qǐng)輸入球體半徑:";

cin>>r; Spheres(x,y,z,r);

cout<<"球心到原點(diǎn)距離:"<<s.Dis()<<endl;

cout<<"球體表面積:"<<s.Area()<<endl;

cout<<"球體體積:"<<s.Volume()<<endl;

cout<<endl; return0;}定義一個(gè)基類shape,包含計(jì)算面積的虛函數(shù)。再由此派生出長(zhǎng)方形類(rectangle)和圓類(circle)。其中長(zhǎng)方形類中添加數(shù)據(jù)成員:長(zhǎng)和寬,圓類中添加數(shù)據(jù)成員:圓的半徑;兩個(gè)派生類中均包含帶參數(shù)的構(gòu)造函數(shù)并為數(shù)據(jù)成員初始化,均定義虛函數(shù)分別計(jì)算各自的面積。編寫主函數(shù),通過(guò)定義指向基類指針,分別指向長(zhǎng)方形和圓類的對(duì)象,計(jì)算并輸出相應(yīng)圖形的面積。輸入輸出格式如下:

輸入長(zhǎng)方形的長(zhǎng)和寬:3.04.0輸入圓的半徑:2.0長(zhǎng)方形的面積為:12圓的面積為:12.5664//虛函數(shù)的應(yīng)用#include<iostream>usingnamespacestd;classshape{public: virtualdoublearea()=0;};classrectangle:publicshape{private: doublelen,width;public:

rectangle(double

l,doublew) {

len=l; width=w; } virtualdoublearea() { returnlen*width; }};classcircle:publicshape{private: doubleradius;public:

circle(doubler) { radius=r; } virtualdoublearea() { return3.14159*radius*radius; }};intmain(){ shape*p; doublel,w,r;

cout<<"輸入長(zhǎng)方形的長(zhǎng)和寬:";

cin>>l>>w;

cout<<"輸入圓的半徑:";

cin>>r;

cout<<endl; rectanglerec(l,w); circlecir(r); p=&rec;

cout<<"長(zhǎng)方形的面積為:"<<p->area()<<endl; p=○

cout<<"圓的面積為:"<<p->area()<<endl; return0;}找出1000-2000之間所有整數(shù)中滿足如下條件的數(shù):該數(shù)的高端兩位數(shù)字的和與低端兩位數(shù)字的和值相等,如1001,1120。程序能輸出所有滿足條件的數(shù)以及它們的總個(gè)數(shù)。//循環(huán)的應(yīng)用#include<iostream>usingnamespacestd;intmain(){ int

n,a,b,c,d,s=0;

cout<<"滿足條件的數(shù)是:"<<endl;

for(n=1000;n<=2000;n++) { a=n/1000; b=n/100%10; c=n/10%10; d=n%10;

if(a+b==c+d) {cout<<n<<"\t"; s++; } }

cout<<endl;

cout<<"總個(gè)數(shù)為:"<<s<<endl; return0;}

將下列學(xué)生成績(jī)數(shù)據(jù)寫入文件”score.txt”,張三908085李一897896趙四789087吳五889990然后讀出文件中的數(shù)據(jù),并計(jì)算出總分,并按下列格式輸出到屏幕。姓名高數(shù)物理英語(yǔ)總分張三908085255李一897896263趙四789087255吳五889990277

//文件操作#include<iostream>#include<fstream>usingnamespacestd;intmain(){

ofstream

out("score.txt");

if(!out){

cout<<"Filenotfound!";return1;}out<<"張三908085"<<endl;out<<"李一897896"<<endl;out<<"趙四789087"<<endl;out<<"吳五889990"<<endl;

out.close();ifstream

in("score.txt");cout<<"姓名"<<"\t"<<"高數(shù)"<<"\t"<<"物理"<<"\t"<<"英語(yǔ)"<<"\t"<<"總分"<<endl;charname[7];floatc1,c2,c3,c;if(!in){

cout<<"Filenotopened!";return2;}in>>name>>c1>>c2>>c3;while(in){c=c1+c2+c3;

if(in)cout<<name<<"\t"<<c1<<"\t"<<c2<<"\t"<<c3<<"\t"<<c<<endl;

in>>name>>c1>>c2>>c3;}

in.close();return0;}寫一函數(shù),原形為:voidreverse(int

x[],intstart,intend);功能是將x數(shù)組中下標(biāo)從start到end之間的元素逆置。并在主函數(shù)中定義數(shù)組a,初始值為:23,43,12,3,5,7,19,41,56,78,90。輸出下標(biāo)從0到4和5到最后一個(gè)元素逆置后的結(jié)果。結(jié)果為:53

12

43

23

90

78

56

41

19

7//數(shù)組、指針與函數(shù)#include<iostream>usingnamespacestd;voidreverse(int

x[],int

start,intend){

intt;

int*s,*e;

for(s=&x[start],e=&x[end];s<e;s++,e--) {t=*s; *s=*e; *e=t; }}intmain(){voidreverse(int

x[],int

start,intend);

inta[]={23,43,12,3,5,7,19,41,56,78,90};reverse(a,0,4);reverse(a,5,10);

for(inti=0;i<11;i++)

cout<<a[i]<<"";

cout<<endl;return0;}題目一:文件操作,題目:在當(dāng)前工程所在目錄中創(chuàng)建文本文件123.txt,內(nèi)容如下:"Thisisasample.",然后在屏幕上顯示文件內(nèi)容,同時(shí)能夠計(jì)算出文件的大?。醋址麛?shù))。編程要求:(1)程序框架完整,代碼規(guī)范(20%)(2)文件的打開與關(guān)閉方法正確,能處理新建文件失敗的情形(20%)(3)數(shù)據(jù)類型、程序控制結(jié)構(gòu)使用正確(20%)(4)算法正確,清晰合理(20%)(5)運(yùn)行結(jié)果正確,文件內(nèi)容正確顯示到屏幕上,并顯示該文件有多少字節(jié)(20%)運(yùn)行過(guò)程如下:文件內(nèi)容如下:Thisisasample.文件長(zhǎng)度為:17#include<iostream>#include<fstream>usingnamespacestd;intmain(){

ofstreamout("123.txt");

if(!out) {

cout<<"Filenotopenederror!"; return1; } out<<“Thisisasample.”;//創(chuàng)建123.txt文件

out.close();

ifstreamin("123.txt");

if(!in) {

cout<<"Filenotfound!"; return2; } charch;

intcount=0;

cout<<"文件內(nèi)容如下:"<<endl;

in.get(ch);

while(in) {

cout.put(ch); count++;

in.get(ch);

}

cout<<endl;

cout<<"文件長(zhǎng)度為:"<<count<<endl; return0;}題目二:

建立一個(gè)代表平面點(diǎn)的基類Point,它的數(shù)據(jù)成員為點(diǎn)的二維坐標(biāo),分別用成員變量X、Y表示。建立代表橢圓的派生類Ellipse,繼承Point,并增加了數(shù)據(jù)成員A和B分別表示橢圓長(zhǎng)半軸和短半軸?;愔杏杏?jì)算該點(diǎn)到坐標(biāo)原點(diǎn)距離的方法,派生類中有計(jì)算橢圓面積的方法。另外,基類和派生類都有構(gòu)造函數(shù),并且可以通過(guò)構(gòu)造函數(shù)直接設(shè)定數(shù)據(jù)成員。(橢圓面積為3.1415926*A*B)請(qǐng)編制應(yīng)用程序,在主函數(shù)中讓用戶輸入橢圓中心坐標(biāo)及長(zhǎng)半軸和短半軸,然后輸出橢圓中心到原點(diǎn)距離、橢圓面積。

編程要求及評(píng)分標(biāo)準(zhǔn):程序框架完整,代碼規(guī)范(20%)基類與派生類的結(jié)構(gòu)聲明正確,數(shù)據(jù)成員聲明正確(20%)基類的構(gòu)造函數(shù)及其他成員函數(shù)定義正確;(20%)派生類的構(gòu)造函數(shù)及其他成員函數(shù)定義正確;(20%)主函數(shù)中的類對(duì)象的聲明、使用方法正確并且運(yùn)行結(jié)果正確,輸入和輸出格式如下所示(20%)請(qǐng)輸入橢圓中心坐標(biāo):12 請(qǐng)輸入橢圓半長(zhǎng)軸、半短軸:53 橢圓中心坐標(biāo):1,2 橢圓心到原點(diǎn)距離:2.23607 橢圓面積:47.1239

編寫函數(shù),根據(jù)以下函數(shù)關(guān)系,對(duì)輸入的每個(gè)x值,計(jì)算并返回相應(yīng)的函數(shù)值,函數(shù)原型為:doublef(doublex);編寫主函數(shù)進(jìn)行測(cè)試。輸入任意3個(gè)大小不等的三位正整數(shù),按如下條件形成一個(gè)新的三位數(shù):該數(shù)的最高位為3個(gè)正整數(shù)中最大數(shù)的百位數(shù)字,最低位為3個(gè)正整數(shù)中最小數(shù)的個(gè)位數(shù)字,中間數(shù)位為3個(gè)正整數(shù)中剩下數(shù)的十位數(shù)字。計(jì)算s=1!+2!+3!+4!+…+n!+….,直到n!>105時(shí)為止,并輸出滿足條件后的s值和對(duì)應(yīng)的n值。鍵盤輸入n個(gè)浮點(diǎn)數(shù)(n≤50),求其平均值,并統(tǒng)計(jì)出高于平均值(包括平均值)的浮點(diǎn)數(shù)的個(gè)數(shù)。程序中輸出以下結(jié)果:平均值、高于平均值的各個(gè)數(shù)以及高于平均值的數(shù)的個(gè)數(shù)。按照如下數(shù)列的規(guī)律,輸出前n項(xiàng)各數(shù)據(jù)值。數(shù)列如下:0,1,3,6,10,15,21,…找出從1001開始的50個(gè)素?cái)?shù)。所謂素?cái)?shù),指該數(shù)只有1和其本身兩個(gè)約數(shù),再無(wú)別的約數(shù)。設(shè)計(jì)一個(gè)Point類,包含其坐標(biāo)x和y兩個(gè)屬性以及對(duì)這些屬性操作的方法。實(shí)現(xiàn)并測(cè)試這個(gè)類。要求:所有的屬性聲明為私有的數(shù)據(jù)成員;設(shè)計(jì)一個(gè)構(gòu)造函數(shù),在創(chuàng)建對(duì)象時(shí)可以對(duì)所有屬性賦值;設(shè)計(jì)成員函數(shù)ShowMe(),能夠輸出類的所有數(shù)據(jù)成員;編寫測(cè)試用主函數(shù),創(chuàng)建2個(gè)Point類對(duì)象,分別輸入他們的坐標(biāo),并調(diào)用ShowMe()進(jìn)行輸出。設(shè)計(jì)一個(gè)Circle類,其屬性有圓心坐標(biāo)x和y,半徑r。實(shí)現(xiàn)并測(cè)試這個(gè)類。編程要求:(1)所有的屬性聲明為私有的數(shù)據(jù)成員;(2)設(shè)計(jì)成員函數(shù)voidSet(int,int,double),可以通過(guò)參數(shù)對(duì)所有屬性賦值;(3)設(shè)計(jì)成員函數(shù)doubleArea(),能夠計(jì)算圓的面積;(4)編寫測(cè)試用主函數(shù),創(chuàng)建1個(gè)Circle類對(duì)象,分別輸入其屬性值,計(jì)算并輸出其面積。有一個(gè)已經(jīng)排好序的數(shù)組,現(xiàn)將從鍵盤輸入的一個(gè)數(shù)插入到該數(shù)組中,并繼續(xù)保持有序。最后輸出數(shù)組各元素值。例如:原數(shù)組序列為{1,3,7,9,12,15,21,27,30,77,101},程序插入49后的數(shù)組為{1,3,7,9,12,15,21,27,30,49,77,101}編寫一個(gè)程序,將兩個(gè)指定的文本文件合并為

溫馨提示

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

評(píng)論

0/150

提交評(píng)論