版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第6~14章習(xí)題課,楊琦計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心西安交通大學(xué),第6章 指針,習(xí)題6-1 用指針重新編寫冒泡排序程序。習(xí)題6-2 編寫程序,將某一個(gè)輸入的位數(shù)不確定的正整數(shù)按照標(biāo)準(zhǔn)的三位分節(jié)格式輸出,例如,當(dāng)用戶輸入82668634時(shí),程序應(yīng)該輸出82,668,634。習(xí)題6-3 編寫程序,把10個(gè)整數(shù)1、2、…、10賦予某個(gè)int型數(shù)組,然后用int型指針輸出該數(shù)組元素的值。習(xí)題6-4 用指針編寫一個(gè)程序,當(dāng)輸入一個(gè)字符串后,要求不
2、僅能夠統(tǒng)計(jì)其中字符的個(gè)數(shù),還能分別指出其中大、小寫字母、數(shù)字以及其他字符的個(gè)數(shù)。,第6章 指針,習(xí)題6-5 編寫一個(gè)函數(shù), 用于將一個(gè)字符串轉(zhuǎn)換為整型數(shù)值。其原型為: int atoi(char *string);習(xí)題6-6 編寫一個(gè)函數(shù),用于生成一個(gè)空白字符串,其原型為:char *mystrspc(char *string, int n);,習(xí)題6-1冒泡排序程序,void bubble_up(int *ptr,
3、 int count){for(int i=0; ii; j=j-1)if(*(ptr+j-1)>*(ptr+j)){int tmp = *(ptr+j-1);*(ptr+j-1) = *(ptr+j);*(ptr+j) = tmp;}},ptr為指針,int main(){const int COUNT=16;int list[COUNT]={50
4、3, 87, 512, 61, 908, 170, 897, 275,653, 426, 154, 509, 612, 677, 765, 703};bubble_up(list, 16);cout << "The result is :" << endl;for(int i=0; i<16; i++)cout <<list[i] <<
5、" ";cout<<endl;return 0;},習(xí)題6-2,例如,當(dāng)用戶輸入82668634時(shí),程序應(yīng)該輸出82,668,634。,int main(){int num; char array[50];char *ptr=array;cout>num; int k=0;while(num!=0){*ptr=num%10+'0';num=nu
6、m/10;ptr++;k++;if(k%3==0){*ptr=',';ptr++;}};*ptr=0; strrev(array);cout<<"該整數(shù)按照標(biāo)準(zhǔn)的三位分節(jié)格式輸出為:";cout<<array<<endl;return 0;},習(xí)題6-5,編寫一個(gè)函數(shù),將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)
7、 函數(shù)原型: int atoi(char *string);,輸入與輸出:請(qǐng)輸入待轉(zhuǎn)換的字符串值:-529轉(zhuǎn)換后的整型數(shù)值是:-529,習(xí)題6-5,int atoi(char *string){int num=0;int s=1;if(*string=='-'){s=-1; string++;}if(*string=='+'){s=1;string++;
8、} while(*string!=0&&*string>='0'&&*string<='9'){num=num*10+*string-'0';string++;}return s*num;},習(xí)題6-6 char *mystrspc(char *string, int n);,char *mystrspc(cha
9、r * string, int n){char * ptr = string;while (n>0){*string=' ';string++;n--;}*string = 0;return ptr;},int main(){char *str;int n;cout>n;str=new char[n];cout<<“\n結(jié)果如下,
10、注意觀察#之間的空格數(shù):\n"<<endl;cout<<"#"<<mystrspc(str,n)<<"#"<<endl;cout<<" ";for(int i=0;i<n;i++)cout<<i%10; cout<<endl<<e
11、ndl;return 0;},第7章 函數(shù)與指針,習(xí)題7-1 使用遞歸算法編寫如下程序:對(duì)于任意給定的實(shí)數(shù)X和整數(shù)k>0,計(jì)算Xk。習(xí)題7-2 Ackermann函數(shù)ack(m,n)由以下遞歸定義:習(xí)題7-3 使用遞歸算法編寫求斐波那契數(shù)列的第n項(xiàng)的函數(shù),并編出主函數(shù)進(jìn)行驗(yàn)證。,,第7章 函數(shù)與指針,習(xí)題7-4 編寫一個(gè)求立方的函數(shù)cube,并重載它,使之可以對(duì)輸入的整型量和實(shí)型量數(shù)值求立方。習(xí)題7-5 重載判
12、斷兩個(gè)數(shù)值大小的函數(shù)max,這些數(shù)值可能是整型數(shù)、實(shí)型數(shù)和字符型,函數(shù)的返回值為兩個(gè)數(shù)值中的最大值。習(xí)題7-6 編寫一個(gè)函數(shù),用于去掉字符串尾部的空格符,其原型為:char *mytrim(char *string);習(xí)題7-7 編寫一個(gè)函數(shù),用于去掉字符串前面的空格,其原型為:char *myltrim(char *string);,第7章 函數(shù)與指針,習(xí)題7-8 編寫一個(gè)程序,當(dāng)輸入一個(gè)整數(shù)以后,可以轉(zhuǎn)換成相應(yīng)的英文單詞輸
13、出。如:123轉(zhuǎn)換成one hundred twenty three。習(xí)題7-9 用牛頓法或者二分法編寫一個(gè)求方程f(x)=0在區(qū)間[a, b]中的實(shí)根的函數(shù), 其原型為: double equation(double (*func)(double), double a, double b, double eps);,習(xí)題7-2,#includeusing namespace std;int ack(int m, int n)
14、{if(m==0)return n+1;else if(n==0)return ack(m-1, 1);return ack(m-1, ack(m, n-1));},結(jié)果:ack (0,0)=1 ack(2,3)=9 ack(2,4)=11,習(xí)題7-6 mytrim(char *string);,char *mytrim(char *string){char *ptr=string;while(*pt
15、r!=0)ptr++;do{ptr--;}while(*ptr==' ');*(++ptr)=0;return string;},int main(){char str[] = "The art of computer programming ";cout << "截取前的原始字符串是: [" <<st
16、r<<']'<<endl;cout << "截取空格后的字符串是: [" <<mytrim(str)<<']';return 0;},習(xí)題7-7 myltrim(char *string);,char *myltrim(char * string){char *ptr=string;while(*ptr==
17、' ')ptr++;strcpy(string, ptr);return string;},第8章 結(jié)構(gòu)化設(shè)計(jì)方法,1.輸入某小組5個(gè)人的姓名、性別、出生年份等信息,統(tǒng)計(jì)男女人數(shù)以及1988年以后(含1988年)出生的人數(shù)。2.定義一個(gè)名為Circle(圓)的結(jié)構(gòu)體,其數(shù)據(jù)成員是圓的外接矩形的左上角和右下角兩點(diǎn)的坐標(biāo),計(jì)算該圓的面積。3.讀入5個(gè)用戶的姓名和電話號(hào)碼,按姓名的字典順序排列后,輸出每
18、個(gè)用戶的姓名和電話號(hào)碼。4.口袋中有紅、黃、藍(lán)、白、黑五種顏色的小球若干個(gè)。如果每次都從口袋中取出3個(gè)不同顏色的小球,共有多少種組合,請(qǐng)打印出每種組合的3種顏色。要求使用枚舉類型來(lái)表示小球的顏色。5.用自頂向下、逐步求精的程序設(shè)計(jì)方法找出2~10000之內(nèi)的所有完全數(shù)(所謂完全數(shù),即其各因子之和正好等于本身的數(shù)。如6=1+2+3,28=1+2+4+7+14,所以6,28都是完全數(shù)),第9章 類和對(duì)象,習(xí)題9-1設(shè)計(jì)一個(gè)Dog類,包含
19、name、age、sex和weight等屬性以及對(duì)這些屬性操作的方法。實(shí)現(xiàn)并測(cè)試這個(gè)類。 習(xí)題9-2設(shè)計(jì)并測(cè)試一個(gè)名為Ellipse的橢圓類,其屬性為外接矩形的左上角與右下角兩個(gè)點(diǎn)的坐標(biāo),并能計(jì)算出橢圓的面積。習(xí)題9-3.仿照Date類設(shè)計(jì)一個(gè)Time類,可以設(shè)置時(shí)間、進(jìn)行時(shí)間的加減運(yùn)算、按各種可能的格式輸出時(shí)間。,習(xí)題9-1設(shè)計(jì)一個(gè)Dog類,#include #include using namespace std;clas
20、s Dog{string name;intage;char sex;float weight;public:Dog(string Name, int Age, char Sex, float Weight);string GetName() {return name;}int GetAge() {return age;}char GetSex() {return sex;}float GetWeigh
21、t() {return weight;}void Speak() {cout<<"Arf!Arf!"<<endl;}};,Dog::Dog(string Name, int Age, char Sex, float Weight){name=Name;age = Age;sex = Sex;weight = Weight;}int main(){Dog dog1(&q
22、uot;ahuang", 3, 'm', 2.4);cout<<"Dog's name: "<<dog1.GetName()<<endl;cout<<"Dog's age: "<<dog1.GetAge()<<endl;cout<<"Dog'
23、s sex: "<<dog1.GetSex()<<endl;cout<<"Dog's weight: "<<dog1.GetWeight()<<endl;cout<<"Dog speak: ";dog1.Speak();return 0;},習(xí)題9-3.設(shè)計(jì)一個(gè)Time類,class T
24、ime{int hour,minute,second;public:int SecCalc();Time( int h = 0, int m = 0, int s = 0 );//構(gòu)造函數(shù)void SetTime(int h = 0, int m = 0, int s = 0 );//時(shí)間設(shè)置void print_12();void print_24();Time Add(Time&);T
25、ime Sub(Time&);};,第9章 類和對(duì)象,習(xí)題9-4.合并Date類和Time類為一個(gè)DateAndTime類,修改相應(yīng)的成員函數(shù),當(dāng)時(shí)間遞增到新的一天時(shí),應(yīng)能夠修改日期值。,#include #include class CDateTime{CTime t;public:CDateTime(int y,int m,int d,int h,int mm, int s){ t=CTim
26、e(y,m,d,h,mm,s); }void AddDay(int days){ t=t+CTimeSpan(days,0,0,0); }void IncDay(){ t=t+CTimeSpan(1,0,0,0); }void print_ymd(){ CString s=t.Format("%Y, %m %d");
27、 cout<<s<<endl; }};,int main(){CDateTime x(2007,4,27,1,2,3);x.print_ymd();x.AddDay(5);x.print_ymd();return 0;},第10章 類和對(duì)象(二),1.定義一個(gè)Dog類,包含name、age、sex、weight等屬性,設(shè)計(jì)一個(gè)構(gòu)造函數(shù),可以對(duì)這些屬性進(jìn)行初始化。實(shí)現(xiàn)并測(cè)試這個(gè)
28、類。2.設(shè)計(jì)并測(cè)試一個(gè)名為Ellipse的橢圓類,其屬性為其圓心坐標(biāo)以及半長(zhǎng)軸和半短軸的長(zhǎng)度。設(shè)計(jì)一個(gè)構(gòu)造函數(shù)對(duì)這些屬性進(jìn)行初始化,并通過(guò)成員函數(shù)計(jì)算出橢圓的面積。3.仿照Date類設(shè)計(jì)一個(gè)Time類,設(shè)計(jì)多個(gè)重載的構(gòu)造函數(shù),可以設(shè)置時(shí)間、進(jìn)行時(shí)間的加減運(yùn)算、按各種可能的格式輸出時(shí)間。4.合并Date類和Time類為一個(gè)DateAndTime類,修改相應(yīng)的成員函數(shù),當(dāng)時(shí)間遞增到新的一天時(shí),應(yīng)能夠修改日期值。,習(xí)題10-1 定義一個(gè)
29、Dog類,class Dog{char name[20];intage;char sex;double weight;public:Dog(char *Name="", int Age=0, char Sex='m', double Weight=0){strcpy(name,Name);age = Age;sex = Sex;weight = Weig
30、ht;}char * GetName() {return name;}int GetAge() {return age;}char GetSex() {return sex;}double GetWeight() {return weight;}void Speak() {cout<<"Arf!Arf!"<<endl;}};,習(xí)題10-2 設(shè)計(jì)Ellipse類,cla
31、ss Ellipse{int x1,y1,x2,y2;public:Ellipse(int a=0,int b=0,int c=0,int d=0): x1(a),y1(b),x2(c),y2(d){} void GetPosition(int &a,int &b,int &c,int &d) { a=x1,b=y1,c=x2,d=y2; } doubl
32、e Area() { return (double)x2*y2*3.1415926; }};,習(xí)題10-3 設(shè)計(jì)Time類,class Time{int hour,minute,second;public:int SecCalc();Time( int h = 0, int m = 0, int s = 0 );//構(gòu)造函數(shù)void SetTime(int h = 0, int m = 0,
33、int s = 0 );//時(shí)間設(shè)置void print_12();void print_24();Time Add(Time&);Time Sub(Time&);};,第11章 繼承,習(xí)題11-1從類Person中派生出一個(gè)教師類,新增的屬性有:專業(yè)、職稱和主講課程(一門),并為這些屬性定義相應(yīng)的方法。習(xí)題11-2許多研究生既有學(xué)生的屬性,又有教師的屬性。試通過(guò)多重繼承說(shuō)明一個(gè)研究生類。習(xí)題11
34、-3修改例10-4,從Point類中派生出一個(gè)Line類。Line類增加一個(gè)數(shù)據(jù)成員EndPoint,計(jì)算線的長(zhǎng)度。試比較一下與直接使用Point類來(lái)構(gòu)造Line類的不同之處。習(xí)題11-4.從Date類和Time類派生一個(gè)DateAndTime類,修改相應(yīng)的成員函數(shù),當(dāng)時(shí)間遞增到新的一天時(shí),應(yīng)能夠修改日期值。,習(xí)題11-1從類Person派生Teacher類,class Person{protected:char Name[1
35、0];intAge;intSex;public:Person(char *name="", int age=0, char sex='m') {strcpy(Name, name);Age = age;Sex=(sex=='m'?0:1);}void ShowMe(){cout<<Name<<"
36、\t"<<Sex<<"\t"<<Age<<"\t";} };,習(xí)題11-1從類Person派生Teacher類,class Teacher: public Person {char Specialty[20];char Position[20]; char MajorCourse[20];public: Te
37、acher(char *name="xxx",int age=0,char sex='m',char *spec="x",char *pos="x",char *maj="x"):Person(name,age,sex){strcpy(Specialty,spec);strcpy(Position,pos);strcpy(
38、MajorCourse,maj);}void Teacher::ShowMe (){Person::ShowMe();cout<<Specialty<<"\t"<<Position<<"\t"<<MajorCourse<<endl;}};,第12章 多態(tài)性,習(xí)題12-2擴(kuò)充例11-6,從中派生出一個(gè)正
39、方形類和圓柱體類,寫一個(gè)測(cè)試程序,輸出正方形的面積和圓柱體的體積。提示:正方形數(shù)據(jù)成員:一個(gè)頂點(diǎn)和邊長(zhǎng);圓柱體數(shù)據(jù)成員:圓和高。,Point,Square,Circle,Cylinder,,,,第12章 多態(tài)性,習(xí)題12-3擴(kuò)充實(shí)例編程中的日期類,為Date類增加一個(gè)成員函數(shù),可以判斷一個(gè)日期是否是系統(tǒng)當(dāng)前日期。從鍵盤輸入你的生日,如果今天是你的生日則顯示:“Happy Birthday!”,否則顯示“還有xx天是你的生日”或“你的生日
40、已經(jīng)過(guò)去了xx天,明年的生日要再等yy天”。,第13章 模板與異常處理,習(xí)題13-1 編寫一個(gè)求絕對(duì)值的函數(shù)模板,并測(cè)試。習(xí)題13-2 請(qǐng)將例4-5的冒泡排序函數(shù)改寫成為模板函數(shù)并編寫一個(gè)程序進(jìn)行測(cè)試。習(xí)題13-3 例13-6中所定義的通用棧類實(shí)際上是不完善的,如無(wú)法根據(jù)用戶需求改變棧的大小,沒(méi)有提供棧滿溢出無(wú)法壓入和空棧無(wú)法彈出提示等,請(qǐng)改進(jìn)該程序。。習(xí)題13-5例6-1給出的求階乘n!的函數(shù),當(dāng)用戶的輸入太大時(shí)(如51),會(huì)
41、出現(xiàn)錯(cuò)誤,請(qǐng)編寫一個(gè)程序,使用異常處理機(jī)制來(lái)解決這一問(wèn)題。,第14章 標(biāo)準(zhǔn)庫(kù)和輸入/輸出流,習(xí)題14-1編寫一個(gè)程序,分別用不同的域?qū)挘?~10)打印出整數(shù)12345和浮點(diǎn)數(shù)1.2345。觀察當(dāng)域?qū)捫∮跀?shù)值的實(shí)際需要的域?qū)挄r(shí)會(huì)發(fā)生什么情況。,輸出:1234512345123451234512345 12345 12345 12345 12345 12345,輸出:1.23451.23451
42、.23451.23451.23451.2345 1.2345 1.2345 1.2345 1.2345,第14章 標(biāo)準(zhǔn)庫(kù)和輸入/輸出流,習(xí)題14-2編寫一個(gè)程序,將華氏溫度0度~212度轉(zhuǎn)換為浮點(diǎn)型攝氏溫度,浮點(diǎn)數(shù)精度為3。轉(zhuǎn)換公式如下:Celsius = 5.0 / 9.0 * (Fahrenheit-32);,輸出:Fahrenheit Celsius 0 -
43、17.778 1 -17.222 2 -16.667…… 210 98.889 211 99.444 212 100.000,第14章 標(biāo)準(zhǔn)庫(kù)和輸入/輸出流,習(xí)題14-3編寫一個(gè)程序,打印出ASCII字符集中碼值為33~126的字符的ASCII碼表。要求輸出十進(jìn)制值、
44、八進(jìn)制值、十六進(jìn)制值以及碼值所表示的字符。,輸出: dec oct hex char 33 41 21 ! 22 42 22 " 23 43 23 #…… 7c 174 7c | 7d 175 7d } 7e 176 7e ~,第14章 標(biāo)準(zhǔn)庫(kù)和輸入/輸出流,習(xí)題14-5編寫一個(gè)程序,可以讀入一個(gè)C++語(yǔ)言的源文件,每一行加上行號(hào)后保存到另一個(gè)后綴為.p
45、rn的同名文件中。,輸出:假定上述文件名為"test.cpp",程序執(zhí)行后生成"test.prn"文件,內(nèi)容如下: 1 // Exercise 13_5 2 #include 3 #include …… 26 out.close(); 27 return 0; 28 },學(xué)好程序設(shè)計(jì)語(yǔ)言的唯一途徑是
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++程序設(shè)計(jì)基礎(chǔ)第版上習(xí)題解答
- c++程序設(shè)計(jì)教程2-
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)第5版
- c語(yǔ)言程序設(shè)計(jì)教程 (第2版)
- 重大2016年c++程序設(shè)計(jì)語(yǔ)言 ( 第2次 )
- c++程序設(shè)計(jì)課程-說(shuō)課
- c++程序設(shè)計(jì)
- c++程序設(shè)計(jì)
- 譚浩強(qiáng)c++程序設(shè)計(jì)(ppt版)
- c++程序設(shè)計(jì)基礎(chǔ)復(fù)習(xí)題a
- 《c++程序設(shè)計(jì)》譚浩強(qiáng)課后習(xí)題答案
- c語(yǔ)言程序設(shè)計(jì)ppt-第2版-第7章-指針程序設(shè)計(jì)
- c++程序設(shè)計(jì)基礎(chǔ)(第3版)課后習(xí)題答案及經(jīng)典算法
- 譚浩強(qiáng)c++程序設(shè)計(jì)課后習(xí)題答案
- c++程序設(shè)計(jì)基礎(chǔ)復(fù)習(xí)題a
- 《c++程序設(shè)計(jì)》譚浩強(qiáng)課后習(xí)題答案
- 重大2015年c++程序設(shè)計(jì)語(yǔ)言 ( 第2次作業(yè) )
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)課后習(xí)題答案譚浩強(qiáng)版
- c++程序設(shè)計(jì)題解與上機(jī)指導(dǎo)習(xí)題程序.
- 《程序設(shè)計(jì)基礎(chǔ)c++》
評(píng)論
0/150
提交評(píng)論