001017面向?qū)ο蟪绦蛟O(shè)計(jì)考試參考資料答案_第1頁
001017面向?qū)ο蟪绦蛟O(shè)計(jì)考試參考資料答案_第2頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 46/46面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)題一、程序填空題1、入到數(shù)組a中的數(shù)據(jù)重新按逆序存放,然后將逆序存放后的數(shù)據(jù)輸出。 #include const int N 10;void main() int aN,*p=a,*q,r;cout”輸入10個(gè)整數(shù):”;for (int i=0; iaI+;p=a; q=&a9;while( # ) r=*p; p=q; *q=r;p+; # ;cout” 逆序存放結(jié)果:”;p= # ;for(i=0; iN ;i+)cout*p+ ;coutendl;答案:pq#q-#a2、以下程序?qū)膁ata1.dat中讀出的內(nèi)容顯示在屏幕上,并將其中的字母寫到文件data

2、2.dat中去。#include #include int main() char ch;fstream infile,outfile;infile.open( # , ios:in);if(!infile) cout文件1不能打開!n; return 0; outfile.open( # , ios:out);if(!outfile) cout文件2不能打開!n; return 0; while(infile.get(ch) cout=a&ch=A&ch=Z) # ; coutendl;infile.close();outfile.close();return 1; 答案:” data1.d

3、at”# ” data2.dat”#ouffile.put(ch)3、以下程序用友元函數(shù)實(shí)現(xiàn)復(fù)數(shù)加和復(fù)數(shù)賦制運(yùn)算,完成程序。#include class complexprivate:double real,image;public:complex( )real=0; image=0; complex(double r , double i )real=r; image=i; # complex operator+(complex &a,const complex &b);complex &operator=(complex &c);void print();complex operator

4、+ (complex &a,const complex &b)return complex( # );complex &complex:operator = (complex &c) # # return *this;void complex:print()coutreal”+”imageendl;void main() complex c1,c2(1.5,4.0),c3(6.5, -2.8);complex c4=c2+c3;c1=c4;c1.print();c4.print(); 答案:friend#a.real+b.real, a.image+b.image#real=c.real;#i

5、mag=c.imag;4、以下程序的功能是輸出100以內(nèi)被4整除且個(gè)位數(shù)為6的所有整數(shù)。請(qǐng)?jiān)跈M線處填寫適當(dāng)內(nèi)容。#include void main( )int i,k;for(i=0; i (1) # ;i+) k= (2) # +6; if( (3) # ) continue; coutkendl;答案:100#i*10#k%45、以下程序?qū)逆I盤輸入的20個(gè)整數(shù)按升序進(jìn)行排序,并在屏幕上輸出排序結(jié)果。請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include (4) # ;void main() int a20,i; for(i=0;iai; (5) # ; for(i=0;i20;i+) /輸出排序后

6、結(jié)果,每行輸出5個(gè)數(shù) coutai ; if((6) # ) coutendl; void sortdata(int a ) int t; for(int i=0;i19;i+) for(int j=0;j20-i-1;j+) if((7) # ) t=aj; aj=aj+1; aj+1=t; 答案:void sortdata(int a)#sortdata(a)#+i%5=0#ajaj+16、以下程序?qū)崿F(xiàn)復(fù)數(shù)加和復(fù)數(shù)賦制運(yùn)算,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include class complexprivate:double real,image;public:complex( )real=0

7、; image=0; complex(double r , double i )real=r; image=i; (8) # complex operator+(complex &a,const complex &b);complex (9) # (complex &c);void print();complex operator + (complex &a,const complex &b)return complex(a.real+b.real, a.image+b.image);complex &complex:operator = (complex &c)real=c.real;ima

8、g=c.imag;return (10) # ;void complex:print()coutreal”+”imageendl;void main() complex c1,c2(1.5,4.0),c3(6.5, -2.8);complex c4=c2+c3;c1=c4;c1.print();c4.print();答案:friend#&operator=#*this7、以下的程序?qū)崿F(xiàn)求分?jǐn)?shù)序列2/1,3/2,5/3,8/5,13/8,21/13,前10項(xiàng)的和。在橫線處填寫適當(dāng)內(nèi)容。#include#define N 10void main( )int i, m, n, k; (1) # ;m

9、=2, n=1;for( i=1;(2) # ; i+)s=s+1.0*m/n;k=m;m= (3) # ;n= (4) # ;cout”s=”sendl; 答案:double s=0#i=N#m+n#k8、為使下面的程序執(zhí)行后輸出矩形的面積,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#includeclass Point /定義點(diǎn)類 public: Point(double i, double j) x=i; y=j; (8) # double Area() const return 0.0; private: double x,y;class Rectangle:public Point /定義矩形類(點(diǎn)

10、類的公有派生類) public: Rectangle(double i,double j,double k,double l):Point(i,j) w=k ; h=l; (9) # return w*h; private: double w, h;void main() Point *p; Rectangle rec(3.5,1.2,5.2,7.5); (10) # ; cout矩形的面積是:Area()endl;答案:virtual#virtual double Area() const 或 double Area() const#p=&rec9、下面程序用于求解10個(gè)整數(shù)中的最大值,在橫

11、線處填寫適當(dāng)內(nèi)容。#include # ;void main() int xN;int i,amax; cout輸入10個(gè)整數(shù):; for(i=0;ixi; # ; for(i=1;iN;i+) if( # ) amax=xi; cout最大值為:amaxendl; 答案:const int N=10#amax=x0#amaxxi10、下面是統(tǒng)計(jì)一個(gè)英文句子中單詞個(gè)數(shù)、最長單詞及其字符數(shù)的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include #include void main() const int SIZE=20; char bufSIZE; char largestSIZE; int cur

12、Len, maxLen=-1; # ; coutInput words:n; while( # ) curLen=strlen(buf); cnt+; if( # ) maxLen=curLen; # ; coutendl; coutcntendl; coutmaxLenendl; coutlargestbuf #curLenmaxLen #strcpy(largest, buf)11、下面是利用運(yùn)算符重載實(shí)現(xiàn)等長一維整型數(shù)組相加的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include #include class array private: int *x; int n; public: arra

13、y (int n1) n=n1;x=new intn; void input() cout請(qǐng)輸入n個(gè)整數(shù):; for(int i=0;ixi; # if( # ) cout數(shù)組長度不等,不能相加!endl; exit(1); else for(int i=0;in;i+) xi+=y.xi; void show() for(int i=0;in;i+) coutxi ; coutendl; ;void main() array x1(3),x2(3); x1.input(); x2.input(); # ; x1.show();答案:void operator+=(array &y)#n!=y

14、.n#x1+=x212、以下的程序?qū)崿F(xiàn)求分?jǐn)?shù)序列2/1,3/2,5/3,8/5,13/8,21/13,前15項(xiàng)的和。#include#define N 15void main( )int i, m, n, k; # ;m=2, n=1;for( i=1; i=N; i+)s=s+10*m/n;k=m;m= # ;n= # ;cout”s=”sendl; 答案:double s=0 #m+n#k13、輸入一串有字母和數(shù)字混合的字符串,編程序?qū)⒆址械淖帜负蛿?shù)字分開,分別存入兩個(gè)不同的文件。# include # # includevoid main() char ch100; cout請(qǐng)輸入一

15、串有字符和數(shù)字的字符串:endl; ofstream fout1(shuzitxt); ofstream fout2(zimutxt); if(!fout1) cout文件打開失?。?endl; exit(1); if(!fout2) cout文件打開失?。?ch; int i=0; do if( # ) fout1chi; if(a=chi&chi=z)|(A=chi&chi=Z) # ; i+; while(chi!=0); fout1close(); fout2close();答案:# include #0=chi&chi=9#fout2chi14、下面的程序輸出小于200的素?cái)?shù),而且每

16、行最多輸出10個(gè)素?cái)?shù)。 # include # include class Prime int p;public: Prime(int n)if (n3) p=3;else p=n; # ;void Prime:Run() int k,j,flag,line=0;for(j=2;jp;j+) flag=1;for (k=2;kj;k+)if(j%k=0) # ;if(flag)coutsetw(5)j;line+;if( # )coutendl;coutendl;void main() # ;objRun(); 答案:void Run();#flag=0#line%10=0#Prime obj

17、(200)15、下面程序用于統(tǒng)計(jì)一串字符中數(shù)字字符占所有字符的百分比,在橫線處填寫適當(dāng)內(nèi)容。#includevoid main() double digits,m; char s80; _#_; couts; for(int i=0; # ;i+) if(si=0&si=9) digits+; # ; cout該字符串中數(shù)字字符占所有字符的百分比為m%endl;答案:digits=0#si!=0#m=digits/i*10016、下面是將一個(gè)一維數(shù)組及各元素和寫入文本文件test2.txt的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include #include #include void main

18、() int a53,s5,i,j; ofstream bout(dat.txt); if( # ) cout打開文件失敗,程序終止!endl; exit(1); cout請(qǐng)輸入一個(gè)5行3列的數(shù)組:; for (i=0;i5;i+) for(j=0;jaij; for(i=0;i5;i+) # ; for (j=0;j3;j+) si+=aij; # ; boutendl; bout.close(); 答案:!bout #si=0 #boutsi 17、下面是利用運(yùn)算符重載實(shí)現(xiàn)平面點(diǎn)相加的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include class Point private: int xco

19、rd,ycord; public: Point (int x=0, int y=0) xcord =x; ycord =y; # Point pp; # ; # ; return pp; void show() cout( xcord , ycord ); ;void main() Point p1(1,2),p2(3,4); # ; /顯示p1+p2的結(jié)果 答案:Point operator + (Point &p)#pp.xcord =xcord+p.xcord#pp.ycord =ycord+p.ycord#(p1+p2).show()18、下面是實(shí)現(xiàn)字符在字符串中出現(xiàn)頻率的程序,請(qǐng)?jiān)诳?/p>

20、白處填入合適的內(nèi)容。#include int nchar(char *s,char c) int n(0); for(int i=0;_#_;i+) if(si=c) n+; _#_ void main() char str80,ch; coutstr; coutch ; coutch 在str 中的出現(xiàn)頻率是:_#_ endl ;答案:si #return n; #nchar(str,ch)19、下面是一個(gè)判斷一個(gè)整數(shù)是否素?cái)?shù)的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include class integer int number; public: integer(int n)_#_ int ge

21、tnum()return number; bool isprime() for(int i=2;inumber;i+) if(number%i=0) break; if(_#_) return true; else return false; ;void main() integer n1(19); if(_#_) coutn1.getnum()是素?cái)?shù)!endl; else coutn1.getnum()不是素?cái)?shù)!endl; 答案: number = n; #number=i; #n1.isprime() 20、下面是利用運(yùn)算符重載實(shí)現(xiàn)兩個(gè)一維等長數(shù)組相加(+)的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容

22、。#includeclass Array int *a; int n; public: Array (int n1) _#_ n=n1; void input() for(int i=0;iai; _#_ void list() for(int i=0;in;i+) coutai ; coutendl; ;Array Array:operator+( Array &a1) Array a2(n); for(int i=0;in;i+) _#_ return _#_; void main() Array a1(5),a2(5); a1.input(); a2.input(); a1.list()

23、; a2.list(); (a1+a2).list();答案:a=new intn1;#Array operator+( Array &a1);#a2.ai=ai+a1.ai;#a221、菲波納齊數(shù)列為:1,1,2,3,5,8,13,;下面是實(shí)現(xiàn)計(jì)算該數(shù)列前20項(xiàng)的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include long f(int n) /遞歸函數(shù) long h;if(n2)_#_ else _#_ return h; void main()for(int i=1;i=20;i+) cout_#_ “ ”; coutendl; 答案:h=f(n-1)+f(n-2);#h=1;#f(i)22

24、、下面是將一個(gè)一維數(shù)組及各元素和寫入文本文件test2.txt的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。_#_ #include void main() int buf5=1,2,3,4,5,sum=0; _#_ if(!bout) /打開文件失敗 coutCannot open the file!endl; exit(1); int i; for(i=0;i5;i+) sum+=bufi; _#_ /將數(shù)組元素寫入文件 _#_ /將元素的和寫入文件 bout.close(); 答案:#include #ofstream bout(test2.txt); #boutbufiendl; #boutsum

25、endl; 23、下面是利用運(yùn)算符重載實(shí)現(xiàn)字符串加等的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include#includeclass Cstringchar *s;public: Cstring(char *s1=0) s=new charstrlen(s1)+1; strcpy(s,s1); _#_ void list()coutsendl;Cstring Cstring:operator+=(Cstring &s1) char *t=new charstrlen(s)+strlen(s1.s)+1; strcpy(t,s); strcat(t,s1.s); delete s; s=t; _#_

26、 void main() Cstring cstr1(abcd),cstr2(1234); _#_ cstr1.list(); 答案:Cstring operator+=(Cstring &s1);#return *this;#cstr1+=cstr2;24、菲波納齊數(shù)列為:1,1,2,3,5,8,13,;下面是實(shí)現(xiàn)計(jì)算該數(shù)列前10項(xiàng)的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include long fa(int m) /遞歸函數(shù) long f; if(m2) _#_ else _#_ return f; void main() for(int i=1;i11;i+) cout_#_ “ ”; co

27、utendl;答案:f=fa(n-1)+fa(n-2); #f=1;#fa(i)25、下面是將一個(gè)一維數(shù)組及各元素乘積寫入文本文件data.txt的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。_#_ #include void main() int a10=1,2,3,4,5,6,7,8,9,10,cum=0; _#_ if(!fout) /打開文件失敗 coutCannot open the file!endl; exit(1); int i; for(i=0;i10;i+) cum*=ai; _#_ /將數(shù)組元素寫入文件 _#_ /將元素的乘積寫入文件 fout.close(); 答案:#includ

28、e #ofstream bout(test2.txt); #boutbufiendl; #boutsumendl; 26、下面是利用運(yùn)算符重載實(shí)現(xiàn)字符串賦值(=)的程序,請(qǐng)?jiān)诳瞻滋幪钊牒线m的內(nèi)容。#include#includeclass Cstringchar *s;public: Cstring(char *s1=0) s=new charstrlen(s1)+1; strcpy(s,s1); _#_ void list()coutsendl;Cstring Cstring:operator=(Cstring &s1) delete s;s=new charstrlen(s1.s)+1;

29、strcpy(s,s1.s); _#_ void main() Cstring cstr1(abcd),cstr2(1234); _#_ cstr1.list();答案:Cstring operator+=(Cstring &s1);#return *this;#cstr1+=cstr2;27、下面的程序?qū)崿F(xiàn)求n個(gè)整數(shù)中的奇數(shù)個(gè)數(shù)。#includeint codd(int x,int n); void main() int n,*p; do coutn; while(n=0); # cout請(qǐng)輸入n個(gè)整數(shù):; for(int i=0;ipi; cout奇數(shù)的個(gè)數(shù)是: # endl; delet

30、e p; int codd(int x,int n) int count=0; for(int i=0;in;i+) if( # ) count+; return count; 答案:p=new intn;#codd(p,n) # xi%228、下面程序的功能是將鍵盤上輸入的一串字符存入一個(gè)名為data.txt的文件。字符串中不包含空格并以“*”作為輸入結(jié)束標(biāo)志。#include#include#includevoid main()char s280,ch;int i=0; cout輸入一個(gè)字符串:endl; do # ; s2i=ch;i+; while( # ); s2i=0; # ; o

31、utfiles2ch # ch!=* # ofstream outfile(“data.txt”) 29、下面程序從鍵盤將10名學(xué)生的學(xué)號(hào)和成績輸入到對(duì)象數(shù)組,按成績由高到低進(jìn)行排序后輸出排名前30% 的學(xué)生。#include #include class Studentpublic: Student(char no,int g) # ; score=g; ; Student() void out(); friend void sort(Student *s,int n);private: char sNo10; int score; # out() cout學(xué)號(hào)sNo成績scoreendl;

32、void sort(Student *s,int n) Student temp; int i,j; for(i=0;in;i+) for(j=0;jn-i-1;j+) if(sj.score # ) temp=sj; sj=sj+1; sj+1=temp; void main() const int number=10; Student teststudentnumber; int i,s; char no10; for(i=0;inos; teststudenti=Student(no,s); sort(teststudent, number); for(i=0;inumber*0.3;i

33、+) # .out();答案:strcpy(sNo,no) # void Student: # sj+1.score # teststudenti二、編程題1、編寫程序?qū)崿F(xiàn)如下功能能,從鍵盤輸入一個(gè)最長不超過80個(gè)字符的字符串,將其中的所有小寫字母轉(zhuǎn)換成大寫字母,其他字符不變,屏幕輸出轉(zhuǎn)換后的字符串。 答案:2、編寫一個(gè)可以返回一個(gè)整數(shù)的反序值的函數(shù)。例如,對(duì)整數(shù)7631,函數(shù)的返回值為1367。在主函數(shù)中調(diào)用上述函數(shù),對(duì)由鍵盤輸入的任意一個(gè)大于10的整數(shù)n求出其反序值,屏幕輸出n及其反序值。注意:程序中不的能使用全局變量。 答案: 3、從由鍵盤輸入的若干整數(shù)中找出其中最大的數(shù)并輸出。當(dāng)輸入為

34、負(fù)數(shù)時(shí)結(jié)束輸入。 答案: 4、編寫一個(gè)函數(shù)void delchar(char*s1,char s2),從字符串s1中刪去與字符s2相同的字符,并用main ()測(cè)試該函數(shù)。 答案: 5、將鍵盤輸入的一串字符中的大寫字母挑出并輸出到屏幕上。說明:字符串中不含空格,長度不超過40個(gè)字符。 答案: 6、編寫求n個(gè)整數(shù)之和的函數(shù),函數(shù)原型為:int sum(int x,int n);并編寫主函數(shù),調(diào)用該函數(shù)求55矩陣的主對(duì)角線元素之和及輔對(duì)角線上元素之和,并在屏幕上輸出。矩陣數(shù)據(jù)由鍵盤輸入。 答案: 7、求(即求1!+2!+3!+。+10!)之和。答案: 8、編寫求兩個(gè)整數(shù)的最小公倍數(shù)的函數(shù),函數(shù)原型為:int maxb(int x,inty);并編寫主函數(shù),調(diào)用該函數(shù)求鍵盤輸入的兩個(gè)整數(shù)的最小公倍數(shù),并在屏幕輸出。 答案:9、用switch語句編寫程序,統(tǒng)計(jì)輸入的一串字符中每個(gè)元音字母(a、e、i、o、u)的出現(xiàn)的次數(shù)和字符總數(shù),并輸出到屏幕。當(dāng)輸入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論