版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)或者侵權(quán),請(qǐng)聯(lián)系改正或者刪除?!睹嫦?qū)ο蟪绦蛟O(shè)計(jì)(C++)》課程實(shí)驗(yàn)指導(dǎo)書(shū)安陽(yáng)工學(xué)院計(jì)算機(jī)科學(xué)與信息工程學(xué)院軟件工程教研室.9編號(hào):課程總學(xué)時(shí):64實(shí)驗(yàn)學(xué)時(shí):32課程總學(xué)分:3.5實(shí)驗(yàn)學(xué)分:先修課程:C語(yǔ)言程序設(shè)計(jì)適用專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與技術(shù),網(wǎng)絡(luò)工程,軟件工程本課程實(shí)驗(yàn)的主要目的與任務(wù)《面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)》是計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的一門(mén)專(zhuān)業(yè)基礎(chǔ)課。C++是一種高效而又實(shí)用的程序設(shè)計(jì)語(yǔ)言,它既能夠進(jìn)行過(guò)程化程序設(shè)計(jì),也能夠進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì),因此成為了編程人員最廣泛使用的工具。主要任務(wù)是介紹C++語(yǔ)言中的數(shù)據(jù)類(lèi)型,運(yùn)算,語(yǔ)句結(jié)構(gòu)及其程序設(shè)計(jì)的基本方法。使學(xué)生掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言,了解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念與方法,進(jìn)而學(xué)會(huì)利用C++語(yǔ)言學(xué)會(huì)解決一般應(yīng)用問(wèn)題,從而掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本知識(shí)和基本技能。并為后續(xù)的專(zhuān)業(yè)課程奠定程序設(shè)計(jì)基礎(chǔ)。實(shí)驗(yàn)1C++基礎(chǔ)一、實(shí)驗(yàn)?zāi)康?.加強(qiáng)學(xué)生掌握C++的基本知識(shí)點(diǎn);2.加強(qiáng)學(xué)生掌握I/O流;3加強(qiáng)學(xué)生進(jìn)一步理解函數(shù)的用法;4理解引用的概念及應(yīng)用。三、實(shí)驗(yàn)內(nèi)容1.用函數(shù)返回值實(shí)現(xiàn)統(tǒng)計(jì)A類(lèi)學(xué)生和B類(lèi)學(xué)生個(gè)數(shù),平均分大于等于80的為A類(lèi),其余為B類(lèi)。四.實(shí)驗(yàn)指導(dǎo)1.參考程序:#include<iostream.h>intmain(){cout<<”MynameisJone\n”;cout<<”theIDis”;cout<<2;cout<<endl;}2.參考程序:#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);//重新設(shè)置成原默認(rèn)設(shè)置}3.參考程序:#include<iostream.h>#include<iomanip.h>intmain(){intnumber=1001;cout<<"Decimal:"<<dec<<number<<endl<<"Hexadecimal:"<<hex<<number<<endl<<"Octal:"<<oct<<number<<endl;return0;}4.參考程序:#include<iostream.h>#include<iomanip.h>intmain(){cout<<setfill('*')<<setw(2)<<21<<endl<<setw(3)<<21<<endl<<setw(4)<<21<<endl;cout<<setfill('');//恢復(fù)默認(rèn)設(shè)置return0;}5.參考程序:#include<iostream.h>#include<iomanip.h>voidmain(){cout<<setiosflags(ios::right)<<setw(5)<<1<<setw(5)<<2<<setw(5)<<3<<endl;cout<<setiosflags(ios::left)<<setw(5)<<1<<setw(5)<<2<<setw(5)<<3<<endl;}6.參考程序:#include<iostream.h>voidmain(){ constfloatPI=3.1415926f; floatr; floatz,s; cout<<"請(qǐng)輸入圓的半徑r="; cin>>r; z=2*PI*r; s=PI*r*r; cout<<"圓的周長(zhǎng)為:"<<z<<endl; cout<<"圓的面積為:"<<s<<endl;}7.參考程序:#include<iostream>usingnamespacestd;intarray[6][4]={{60,80,90,75},{75,85,65,77},{80,88,90,98},{89,100,78,81},{62,68,69,75},{85,85,77,91}};int&level(intgrade[],intsize,int&tA,int&tB);intmain(){inttypeA=0,typeB=0;intstudent=6;intgradesize=4;for(inti=0;i<student;i++)//處理所有的學(xué)生level(array[i],gradesize,typeA,typeB)++;//函數(shù)調(diào)用作為左值cout<<"numberoftypeAis"<<typeA<<endl;cout<<"numberoftypeBis"<<typeB<<endl;//system("PAUSE");return0;}int&level(intgrade[],intsize,int&tA,int&tB){intsum=0;for(inti=0;i<size;i++)//成績(jī)總分sum+=grade[i];sum/=size;//平均分if(sum>=80)returntA;//typeAstudentelsereturntB;//typeBstudent}運(yùn)行結(jié)果:實(shí)驗(yàn)2類(lèi)和對(duì)象1、實(shí)驗(yàn)?zāi)康?掌握類(lèi)的定義,根據(jù)具體需求設(shè)計(jì)類(lèi);深入理解C++中類(lèi)的封裝性;會(huì)根據(jù)類(lèi)創(chuàng)立各種對(duì)象;掌握對(duì)象的各種成員的使用方法。2、實(shí)驗(yàn)內(nèi)容定義一個(gè)滿(mǎn)足如下要求的Date類(lèi)。(1)用下面的格式輸出日期:日/月/年;(2)可運(yùn)行在日前上加一天操作;(3)設(shè)置日期。參考代碼:#include<iostream.h>classDate{public:voidDisplay();voidAddOneDay();voidSetDay(inty,intm,intd);protected:boolLegal(inty,intm,intd);boolIsLeapYear(inty);intyear;intmonth;intday;};voidDate::Display(){cout<<day<<"/"<<month<<"/"<<year<<endl;}voidDate::AddOneDay(){if(Legal(year,month,day+1))day++;elseif(Legal(year,month+1,1))month++,day=1;elseif(Legal(year+1,1,1))day=1,month=1,year++;}voidDate::SetDay(inty,intm,intd){if(Legal(y,m,d))day=d,month=m,year=y;}boolDate::Legal(inty,intm,intd){if(y>9999||y<1||d<1||m<1||m>12)returnfalse;intdayLimit=31;switch(m)case4:case6:case9:case11:dayLimit--;if(m==2)dayLimit=IsLeapYear(y)?29:28;return(d>dayLimit)?false:true;}boolDate::IsLeapYear(inty){return!(y%4)&&(y%100)||!(y%400);}intmain(){Dated;d.SetDay(,2,28);d.Display();d.AddOneDay();d.Display();system("PAUSE");}運(yùn)行結(jié)果:實(shí)驗(yàn)3繼承與派生1、實(shí)驗(yàn)?zāi)康?理解繼承的概念,學(xué)習(xí)如何使用基類(lèi)成員,了解基類(lèi)成員在派生類(lèi)中的訪問(wèn)控制;理解類(lèi)的派生對(duì)代碼復(fù)用的作用。2、實(shí)驗(yàn)內(nèi)容:設(shè)計(jì)一個(gè)人員類(lèi)person和一個(gè)日期類(lèi)date,由人員類(lèi)派生出學(xué)生類(lèi)Student和教師類(lèi)professor,學(xué)生類(lèi)和教師類(lèi)的數(shù)據(jù)成員birthday為日期類(lèi)。參考代碼:#include<string>#include<iostream>usingnamespacestd;classdate{public:date(){cout<<"Birthday:";cin>>year>>month>>day;}voiddisplay(){cout<<year<<"-"<<month<<"-"<<day;}private:intyear;intmonth;intday;};classperson{protected:char*name;public:person();};person::person(){charnamestr[50];cout<<"Name:";cin>>namestr;name=newchar[strlen(namestr)+1];strcpy(name,namestr);}classstudent:publicperson{private:intID;intscore;datebirthday;public:student(){cout<<"studentID:";cin>>ID;cout<<"studentscore:";cin>>score;}voiddisplay(){cout<<"Thebasicinformation:"<<endl;cout<<ID<<"\t"<<name<<"\t"<<score<<"\t";birthday.display();cout<<endl;}};classprofessor:publicperson{public:professor(){cout<<"TeacherID:";cin>>No;cout<<"schoolteachingmajor:";cin>>major;}voiddisplay(){cout<<"Thebasicinformation:"<<endl;cout<<"\t"<<No<<"\t"<<name<<"\t"<<major<<"\t";birthday.display();cout<<endl;}private:intNo;charmajor[10];datebirthday;};intmain(){studentstu;stu.display();professorprof;prof.display();system("PAUSE");return0;}運(yùn)行結(jié)果:實(shí)驗(yàn)4多態(tài)1、實(shí)驗(yàn)?zāi)康?掌握函數(shù)的概念及應(yīng)用方法;理解多態(tài)性的運(yùn)用和作用。2、實(shí)驗(yàn)內(nèi)容:新建一個(gè)基類(lèi)shape類(lèi)是一個(gè)表示形狀的抽象類(lèi),area()為求圖形面積的函數(shù)。請(qǐng)從shape類(lèi)派出矩形類(lèi)(rectangle)、三角形類(lèi)(triangle)、圓類(lèi)(circles)、并給出具體的求面積函數(shù)。參考代碼:#include<iostream>#include<math.h>usingnamespacestd;classshape{public:virtualdoublearea()=0;virtualvoiddisplay()=0;shape(){}};classrectangle:publicshape{public:rectangle(doublea=1,doubleb=1){x=a;y=b;}doublearea(){returnx*y;}voiddisplay(){cout<<area()<<endl;;}private:doublex;doubley;};classtriangle:publicshape{public:triangle(doublea=1,doubleb=1,doublec=1){x=a;y=b;z=c;}doublearea(){doublel=(x+y+z)/2;return(sqrt((l-x)*(l-y)*(l-z)*l));}voiddisplay(){cout<<area()<<endl;;}private:doublex;doubley;doublez;};classcircles:publicshape{public:circles(doubleR=1){r=R;}doublearea(){return3.14*r*r;}voiddisplay(){cout<<area()<<endl;;}private:doubler;};intmain(){shape*p;p=newrectangle(2,3);p->display();p=newtriangle(3,4,5);p->display();p=newcircles(2);p->display();system("PAUSE");return0;}運(yùn)行結(jié)果:實(shí)驗(yàn)5運(yùn)算符重載1、實(shí)驗(yàn)?zāi)康?掌握運(yùn)算符重載的概念及使用方法,掌握特殊運(yùn)算符的重載要求和方法。2、實(shí)驗(yàn)內(nèi)容:定義整數(shù)集合類(lèi)intSet,實(shí)現(xiàn)如下功能:定義類(lèi)的構(gòu)造函數(shù),并根據(jù)需要能夠定義多個(gè)構(gòu)造函數(shù)。(1)Clear函數(shù):清空整數(shù)集合(2)IsEmpty():整數(shù)集合是否空集;(3)IsMemberOf():判斷某個(gè)整數(shù)是否在整數(shù)集合內(nèi)(4)Operator+:增加一個(gè)整數(shù)到整數(shù)集合中(5)Operator-:從整數(shù)集合中刪除一個(gè)整數(shù)元素;(6)Operator==:判斷兩個(gè)整數(shù)集合是否相等;(7)Operator*:求兩個(gè)整數(shù)結(jié)合的交集;(8)Operator+:求兩個(gè)整數(shù)集合的交集;(9)Operator=:整數(shù)集合的對(duì)象之間的賦值;(10)Operator<<:輸出整數(shù)集合中的元素。提示:類(lèi)intSet能夠用數(shù)組的方式定義整數(shù)集合。例如:intelement[200]:保存整數(shù)集合數(shù)據(jù);intElementNum:指示整數(shù)集合的最后一個(gè)元素位置注意:一個(gè)整數(shù)集合中不允許有相同元素存在,二是集合中的元素沒(méi)有順序。參考代碼:#include<iostream>usingnamespacestd;classintSet{public:intSet();intSet(inta[],intsize);voidClear();boolIsEmpty();boolIsMemberOf(inta);booloperator+(inta);booloperator-(inta);booloperator==(intSet&set);intSetoperator+(intSet&set);intSetoperator*(intSet&set);voidoperator=(intSet&set);friendostream&operator<<(ostream&,intSet&);protected: intelement[100]; intElementNum;};//初始化整數(shù)集合元素intSet::intSet(){ for(inti=0;i<100;i++) element[i]=0; ElementNum=-1;}intSet::intSet(inta[],intsize){ if(size>=100) ElementNum=99; else ElementNum=size-1; for(inti=0;i<=ElementNum;i++) element[i]=a[i]; for(inti=size;i<100;i++) element[i]=0;}//清空整數(shù)集合元素voidintSet::Clear(){ for(inti=0;i<100;i++) { element[i]=0; } ElementNum=-1;}//判斷整數(shù)集合是否為空boolintSet::IsEmpty(){ if(ElementNum==-1) returnfalse; else returntrue;}//判斷元素是否在整數(shù)集合中boolintSet::IsMemberOf(inta){ for(inti=0;i<ElementNum;i++) if(element[i]==a) returntrue; returnfalse;}//往集合中增加一個(gè)元素boolintSet::operator+(inta){ if(IsMemberOf(a)) returntrue; else { if(ElementNum==99) returnfalse; else { ElementNum++; element[ElementNum]=a; returntrue; } }}//從集合中刪除一個(gè)元素boolintSet::operator-(inta){ intpos; if(!IsMemberOf(a)) returnfalse; for(inti=0;i<=ElementNum;i++) { if(element[i]==a) { pos=i; break; } } for(inti=pos;i<ElementNum;i++) element[i]=element[i+1]; ElementNum--; returntrue;}//判斷兩個(gè)整數(shù)集合是否相等boolintSet::operator==(intSet&set){ boolEqual; if(ElementNum!=set.ElementNum) returnfalse; for(inti=0;i<=ElementNum;i++) { Equal=false; for(intj=0;j<set.ElementNum;j++) { if(element[i]==set.element[i]) { Equal=true; break; } } if(!Equal) returnfalse; } returntrue;}//求兩個(gè)集合的交集intSetintSet::operator+(intSet&set){ inta[100],size=0; for(inti=0;i<=ElementNum;i++) for(intj=0;j<=set.ElementNum;j++) { if(element[i]==set.element[j]) { a[size]=element[i]; size++; break; } } returnintSet(a,size);}//求兩個(gè)集合的并集intSetintSet::operator*(intSet&set){ inta[100],size; for(inti=0;i<=ElementNum;i++) a[i]=element[i]; size=ElementNum+1; for(inti=0;i<=set.ElementNum;i++) if(IsMemberOf(set.element[i])) continue; else { if(size==99) break; a[size]=set.element[i]; size++; }returnintSet(a,size);}//整數(shù)集合對(duì)象間賦值voidintSet::operator=(intSet&set){ for(inti=0;i<=set.ElementNum;i++) element[i]=set.element[i]; ElementNum=set.ElementNum;}//輸出整數(shù)集合中的元素ostream&operator<<(ostream&os,intSet&s){ for(inti=0;i<=s.ElementNum;i++) os<<"element["<<i<<"]"<<s.element[i]<<endl; returnos;}intmain(){ inta[7]={1,2,3,4,5,6,7}; intb[6]={5,6,7,8,9,0}; intSetS1(a,7),S2(b,6),S3;S3=S1+S2;cout<<S3;system("PAUSE"); return0;}運(yùn)行結(jié)果:實(shí)驗(yàn)6輸入輸出流1、實(shí)驗(yàn)?zāi)康?掌握流的概念;掌握文件的打開(kāi)與關(guān)閉;掌握文件的讀寫(xiě)操作;2、實(shí)驗(yàn)內(nèi)容:定義一個(gè)學(xué)生類(lèi),包含學(xué)生的學(xué)號(hào)、姓名和成績(jī)等基本信息,將學(xué)生信息寫(xiě)入二進(jìn)制文件student.dat中,實(shí)現(xiàn)對(duì)學(xué)生信息的顯示、查詢(xún)和刪除等基本功能。參考代碼:#include<iostream>#include<fstream>usingnamespacestd;classStudent{private:longNo;char*Name;intScore;public:Student(longstu_no=0,char*stu_name=NULL,intstu_score=0);longGetNo();char*GetName();intGetScore();voidShowStudent();};Student::Student(longstu_no,char*stu_name,intstu_score){No=stu_no;Name=stu_name;Score=stu_score;}voidStudent::ShowStudent(){cout<<No<<"\t"<<Name<<"\t"<<Score<<endl;}longStudent::GetNo(){returnNo;}char*Student::GetName(){returnName;}intStudent::GetScore(){returnScore;}intmain(){Studentstu[3]={Student(07001,"Liming",70),Student(07002,"Hujun",80),Student(07003,"Wangtian",90)};inti,k,pos;fstreaminfile,outfile;outfile.open("Students.dat",ios::out|ios::binary|ios::trunc);if(!outfile){cerr<<"Fileopenerror!"<<endl;exit(1);}for(i=0;i<3;i++){outfile.write((char*)&stu[i],sizeof(stu[i]));}outfile.close();cout<<"Students.dat:"<<endl;infile.open("Students.dat",ios::in|ios::binary);for(i=0;i<3;i++){infile.read((char*)&stu[i],sizeof(Student));cout<<stu[i].GetNo()<<"\t"<<stu[i].GetName()<<"\t"<<stu[i].GetScore()<<endl;}infile.close();infile.open("Students.dat",ios::in|ios::binary);cout<<"pleaseinputthenumberofrecord:";cin>>k;pos=(k-1)*sizeof(Student);infile.seekg(pos);infile.read((char*)&stu[i],sizeof(Student));cout<<stu[i].GetNo()<<"\t"<<stu[i].GetName()<<"\t"<<stu[i].GetScore()<<endl;infile.close();cout<<"DeletetheSecondrecord!"<<endl;infile.open("Students.dat",ios::in|ios::binary|ios::trunc);for(i=0;i<3;i++){if(i!=1)outfile.write((char*)&stu[i],sizeof(stu[i]));}outfile.close();infile.open("Students.dat",ios::in|ios::binary);for(i=0;i<2;i++){infile.read((char*)&st
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蕪湖2025年安徽蕪湖某機(jī)關(guān)單位招聘派遣工作人員(二)筆試歷年參考題庫(kù)附帶答案詳解
- 益陽(yáng)2025年湖南益陽(yáng)市住房公積金管理中心招聘15人筆試歷年參考題庫(kù)附帶答案詳解
- 濟(jì)寧2025年山東濟(jì)寧嘉祥縣教育系統(tǒng)急需緊缺人才引進(jìn)18人筆試歷年參考題庫(kù)附帶答案詳解
- 汕尾2025年廣東汕尾市市直學(xué)校招聘教師13人筆試歷年參考題庫(kù)附帶答案詳解
- 新疆2025年新疆喀什大學(xué)附屬中學(xué)招聘事業(yè)單位工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 平頂山2025年河南平頂山市衛(wèi)東區(qū)事業(yè)單位招聘50人筆試歷年參考題庫(kù)附帶答案詳解
- 安慶2025年安徽安慶宿松縣衛(wèi)生健康系統(tǒng)部分事業(yè)單位招聘22人筆試歷年參考題庫(kù)附帶答案詳解
- 臺(tái)州浙江臺(tái)州玉環(huán)市海洋經(jīng)濟(jì)發(fā)展局招聘編外工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 南京江蘇南京師范大學(xué)商學(xué)院招聘非事業(yè)編制辦事員筆試歷年參考題庫(kù)附帶答案詳解
- 其他地區(qū)2025年新疆伊犁州中醫(yī)醫(yī)院招聘編制外醫(yī)務(wù)人員48人筆試歷年參考題庫(kù)附帶答案詳解
- 民法典與生活同行宣傳手冊(cè)
- 財(cái)務(wù)調(diào)賬管理辦法
- 老年醫(yī)學(xué)科老年綜合評(píng)估表
- 銷(xiāo)售內(nèi)勤年終總結(jié)
- 妊娠合并梅毒治療指南
- 共線清潔驗(yàn)證方案
- 亞馬遜運(yùn)營(yíng)廣告培訓(xùn)
- 北方工業(yè)集團(tuán) 筆試題目
- 環(huán)境監(jiān)測(cè)機(jī)構(gòu)質(zhì)量保證制度
- 酒店消殺方案
- 當(dāng)前消費(fèi)者權(quán)益保護(hù)工作中出現(xiàn)的新情況新問(wèn)題與對(duì)策建議百度文剖析
評(píng)論
0/150
提交評(píng)論