




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、類編程題1【題目】試定義一個(gè)類NUM,驗(yàn)證下列命題是否成立:任意一個(gè)正整數(shù)與其反序數(shù)相加,得到一個(gè)新的正整數(shù),再對這個(gè)新正整數(shù)重復(fù)上述步驟,最終一定可以得到一個(gè)回文數(shù)。例如,正整數(shù)350的反序數(shù)為053(即53),350+53=403, 403+304=707,707是回文數(shù),命題成立。又如,正整數(shù)2015的反序數(shù)為5102,2015+5102 =7117,7117是回文數(shù),命題成立。具體要求如下:私有數(shù)據(jù)成員int num:存放用于驗(yàn)證命題的正整數(shù)。公有成員函數(shù)NUM(int x):構(gòu)造函數(shù),用x初始化數(shù)據(jù)成員num。void set(int a):將num的值設(shè)置為a。int yn(int
2、 n):判斷n是否回文數(shù),若是,返回1;否則返回0。void fun():使用num驗(yàn)證命題是否成立,并顯示驗(yàn)證過程。在主函數(shù)中對該類進(jìn)行測試。輸出示例:num=350的驗(yàn)證過程如下:350+53=403403+304=707命題成立!num=2015的驗(yàn)證過程如下:2015+5102=7117命題成立!2【題目】試定義一個(gè)實(shí)現(xiàn)計(jì)算學(xué)生課程成績的類STU,對學(xué)生學(xué)期總評成績進(jìn)行計(jì)算并排序。具體要求如下:(1) 私有數(shù)據(jù)成員int norm, ex, final,overall:分別表示平時(shí)成績、實(shí)驗(yàn)成績、期末考試和總評成績。char name15:學(xué)生姓名。(2) 公有成員函數(shù)void ini
3、t(char *name1, int nor1, int ex1, int fin1):用參數(shù)name1,nor1,exp1,fin1分別初始化成員name,norm, ex, final。void fun( ):計(jì)算學(xué)生的總評成績。計(jì)算方法為:總評成績=平時(shí)成績占*20%+實(shí)驗(yàn)成績占*25%+期末成績占*55%。總評成績計(jì)算時(shí)要求四舍五入,并且期末考試成績不足50分時(shí),則期末考試成績即為總評成績。friend void sort(STU st, int n):友元函數(shù),對st按總評成績進(jìn)行從大到小排序。void print( ):輸出該學(xué)生信息。(3) 在主函數(shù)中先定義一個(gè)有5個(gè)元素的對象數(shù)
4、組,用循環(huán)語句輸入學(xué)生信息,并根據(jù)這些信息利用成員函數(shù)init()更新學(xué)生信息,然后使用函數(shù)sort()對數(shù)組排序,最后輸出排序后的學(xué)生信息。輸入/輸出示例(下劃線部分為鍵盤輸入):請輸入姓名、平時(shí)成績、實(shí)驗(yàn)成績、期末成績:AAA 82 75 58請輸入姓名、平時(shí)成績、實(shí)驗(yàn)成績、期末成績:BBB 93 60 84請輸入姓名、平時(shí)成績、實(shí)驗(yàn)成績、期末成績:CCC 67 82 81請輸入姓名、平時(shí)成績、實(shí)驗(yàn)成績、期末成績:DDD 54 78 51請輸入姓名、平時(shí)成績、實(shí)驗(yàn)成績、期末成績:EEE 91 52 41按總評成績排序后:姓名平時(shí)成績實(shí)驗(yàn)成績期末成績總評成績BBB 93 60 84 80CC
5、C 67 82 81 78AAA 82 75 58 67DDD 54 78 51 58EEE 91 52 41 413【題目】試定義一個(gè)類Array,首先求各列元素中的合數(shù)(非素?cái)?shù))之和,再將數(shù)組各列以其合數(shù)之和的大小從大到小排序,具體要求如下: (1) 私有數(shù)據(jù)成員int a45:需要排序的二維數(shù)組。(2) 公有成員函數(shù)Array(int t5, int n):構(gòu)造函數(shù),用參數(shù)t初始化成員數(shù)組a,n表示數(shù)組t的行數(shù)。int comp(int n):判斷整數(shù)n是否為合數(shù),如果是合數(shù),返回值為1,否則返回值為0。intsum_comp(int j):求數(shù)組a第j列元素中所有合數(shù)之和。void e
6、xch(int j1, int j2):交換數(shù)組a的第j1, j2列元素。void fun():根據(jù)題意對二維數(shù)組進(jìn)行列排序。void print():以矩陣的形式輸出成員數(shù)組。(3) 在主函數(shù)中定義一個(gè)二維數(shù)組,并使用該數(shù)組對類Array進(jìn)行測試。輸出示例:原數(shù)組:10 12 5 4 1516 17 8 19 1011 12 13 14 1516 70 18 19 20排序后的數(shù)組:12 15 10 5 417 10 16 8 1912 15 11 13 1470 20 16 18 194【題目】 已知切線法求方程 f(x)=ax2+bx+c=0 在x附近的一個(gè)解的迭代公式為:x=x-f(x
7、)/f(x),其中f(x)=2ax+b為函數(shù)f(x)的導(dǎo)數(shù)。試定義一個(gè)類EQU,用切線法求方程 f(x)=ax2+bx+c=0 在x附近的一個(gè)解。具體要求如下:(1) 私有數(shù)據(jù)成員float a,b,c:保存方程的系數(shù)a,b和c。double x:x為所求得的解。(2) 公有成員函數(shù)EQU(float a1, float b1, float c1):構(gòu)造函數(shù),用參數(shù)a1, b1, c1分別初始化成員a,b,c。void fun(double x0, double e ):求方程在x0附近的一個(gè)解,所采用的算法是:依次計(jì)算x1=x0-f(x0)/f(x0), x2=x1-f(x1)/f(x1),
8、, xn=xn-1-f(xn-1)/f(xn-1),直到|f(xn)|e為止。void print( ):輸出所求得的解。(3) 在主函數(shù)中建立EQU對象,并求出方程 f(x)=2x2+6x-7=0 在x=5.0附近的一個(gè)解,要求最終誤差|f(x)|0,則方程在區(qū)間x1, x2上無解;(2)令x=(x1+x2)/2;(3)如果f(x)*f(x1)0,方程的解在區(qū)間x, x2上,則令x1=x;否則,解在區(qū)間x1, x,令x2=x;(4)重復(fù)步聚(2)、(3)直到f(x)滿足精度要求。試定義一個(gè)類EQU,實(shí)現(xiàn)利用二分法求方程ax2+bx+c=0在區(qū)間x1, x2內(nèi)的一個(gè)解。具體要求如下:(1) 私
9、有數(shù)據(jù)成員float a,b,c:存儲方程的系數(shù)a,b和c。double x1, x2, x:x為方程在區(qū)間x1, x2上的解。int k:如果在區(qū)間x1, x2內(nèi)方程有解,則k值為1,否則k值為0;(2) 公有成員函數(shù)EQU(float a1, float b1, float c1):用參數(shù)a1,b1,c1分別初始化成員a,b,c。void fun(double xx1, double xx2, double e):求方程ax2+bx+c=0在區(qū)間xx1, xx2內(nèi)的一個(gè)解x,要求最終誤差|f(x)|e。void print():若方程有解,則輸出所求得的解;若無解,則輸出“方程在給定區(qū)間內(nèi)
10、無解”。 (3) 在主函數(shù)中首先輸入方程的系數(shù)、區(qū)間和誤差要求,建立EQU對象并初始化,然后調(diào)用fun()函數(shù)求出方程的解,最后調(diào)用print()函數(shù)輸出所求得的解。正確程序的輸入/輸出結(jié)果如下(下劃線部分為鍵盤輸入):請輸入方程的系數(shù)(a,b,c):1 5 -4請輸入?yún)^(qū)間(x1,x2)邊界:0 10請輸入誤差要求(e):0.00001該方程在區(qū)間0,10中的解是:0.701561函數(shù)編程題1. 定義兩個(gè)獨(dú)立函數(shù),void print(int b);實(shí)現(xiàn)將一維數(shù)組元素一行輸出,void sort(int b,int n);實(shí)現(xiàn)將一維數(shù)組的元素按從大到小排序;在主函數(shù)中定義一個(gè)整型數(shù)組a8,從鍵
11、盤輸入8個(gè)數(shù)為數(shù)組元素賦值,分別調(diào)用兩個(gè)函數(shù)。2字符串處理:設(shè)計(jì)一個(gè)通用函數(shù)實(shí)現(xiàn)在字符串s1中從第m個(gè)字符開始插入字符串s2,在主程序中對該函數(shù)進(jìn)行測試。初始狀態(tài):s1: abcdefg s2:1234輸入插入字符串的位置:3目標(biāo)狀態(tài):s1: ab1234cdefg s2:12343編寫程序?qū)崿F(xiàn)的功能是:調(diào)整數(shù)組中元素的存放順序,使得所有正數(shù)放置在數(shù)組的前部,負(fù)數(shù)放置在數(shù)組的后部(假定數(shù)組中所有元素的值均不為0)。輸出結(jié)果如下:處理前的數(shù)組為:-1 2 -3 -4 5 -6 7 8 -9 -10 11 12處理后的數(shù)組為:12 2 11 8 5 7 -6 -4 -9 -10 -3 -14編寫程
12、序:定義一個(gè)函數(shù)void dtor(intn,int r);實(shí)現(xiàn)將十進(jìn)制整型數(shù)轉(zhuǎn)換為r進(jìn)制數(shù)。從鍵盤輸入十進(jìn)制數(shù)和要轉(zhuǎn)換的進(jìn)制數(shù),在主函數(shù)中調(diào)用該函數(shù)實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換。(算法介紹:p201)例如 輸入8 2 輸出結(jié)果為1000 輸入20 16 輸出結(jié)果為14類編程題答案1答案#include class NUMprivate:int num;public:NUM(int x);void set(int a);int yn(int n);void fun();NUM:NUM(int x) num=x;void NUM:set(int a) num=a;int NUM:yn(int n)int t=n
13、,s=0;while(t)s=s*10+t%10; t/=10;if(s=n) return 1;else return 0;void NUM:fun() int m;coutnum=num的驗(yàn)證過程如下:endl;while(1)int n=num,s=0; /350do s=s*10+n%10;/ 053 n/=10;while(n); m=s+num; /403if(yn(m)=1) coutnum+s=mn命題成立!endl;break;else coutnum+s=mendl; num=m;void main() NUM arr(350); arr.fun(); arr.set(20
14、15); arr.fun ();2答案#include#include class STUprivate:int norm,ex,final,overall;char name15;public: void init(char *name1,int norm1,int ex1,int fin1); void fun(); friend void sort(STU st,int n); void print();void STU:init(char *name1,int norm1,int ex1,int fin1)strcpy(name,name1);norm=norm1;ex=ex1;fin
15、al=fin1;overall=0;void STU:fun() if(final=50) overall=int(norm*0.2+ex*0.25+final*0.55+0.5); else overall=int(final+0.5);void sort(STU st,int n)for(int i=0;in-1;i+)for(int j=i+1;jn;j+)if(sti.overallstj.overall)STU t;t=sti;sti =stj;stj =t;void STU:print()coutnametnormtextfinaltoverallendl;void main()S
16、TU s5;char name100;int norm,ex,fin;for(int i=0;i5;i+)cout請輸入姓名、平時(shí)成績、實(shí)驗(yàn)成績、期末成績:namenormexfin;si.init(name,norm,ex,fin);si.fun();for(i=0;i5;i+)si.print(); cout按總評成績排序后:n姓名平時(shí)成績實(shí)驗(yàn)成績期末成績總評成績endl;sort(s,5); for(i=0;i5;i+)si.print();3答案#include class Arrayprivate:int a45;public:Array(int t5,int n);int comp
17、(int n);int sum_comp(int j);void exch(int j1,int j2);void fun();void print();Array:Array(int t5,int n)for(int i=0;in;i+)for(int j=0;j5;j+)aij=tij;int Array:comp(int n) for(int i=2;in;i+)if(n%i=0) return 1;return 0;int Array:sum_comp(int j)int s=0; for(int i=0;i4;i+) if(comp(aij)=1) s+=aij;return s;v
18、oid Array:exch(int j1,int j2) for(int i=0;i4;i+) int d=aij1; aij1=aij2; aij2=d;void Array:fun() for(int i=0;i4;i+) for(int j=i+1;j5;j+) if(sum_comp(i)sum_comp(j) exch(i,j);void Array:print()for(int i=0;i4;i+)for(int j=0;j5;j+)coutaijt;coutendl;void main(void)int b45=10,12,5, 4,15,16,17,8,19,10,11,12
19、,13,14,15,16,70,18,19,20;Array arr(b,4);cout原數(shù)組:endl;arr.print();arr.fun(); cout排序后的數(shù)組:endl;arr.print();4答案#include #include class EQUprivate:float a,b,c;double x;public:EQU(float a1,float b1,float c1);void fun(double x0,double e);void print();EQU:EQU(float a1,float b1,float c1) a=a1;b=b1;c=c1; x=0.
20、0;void EQU:fun (double x0,double e)double f;double f0=a*x0*x0+b*x0+c;double ff=2*a*x0+b;while(fabs(f0)e) x0=x0-f0/ff; f0=a*x0*x0+b*x0+c;ff=2*a*x0+b; x=x0;void EQU:print () coutxendl;void main() float a,b,c; double x0,e; coutabc; coutx0; coute; cout該方程的解是:; EQU t(a,b,c); t.fun (x0,e); t.print();5#inc
21、lude class Arrayprivate:int a54;public:Array(int t4,int n);int prime(int n);int sum_prime(int i);void exch(int i1,int i2);void fun();void print();Array:Array(int t4,int n) for(int i=0;in;i+) for(int j=0;j4;j+) aij=tij;int Array:prime (int n) for(int i=2;in;i+)if(n%i=0) return 0;return 1;int Array:su
22、m_prime (int i)int s=0; for(int j=0;j4;j+)if(prime(aij) s+=aij;return s;void Array:exch(int i1,int i2) for(int j=0;j4;j+) int d=ai1j; ai1j=ai2j; ai2j=d; void Array:fun ()for(int i=0;i4;i+)for(int j=i+1;j5;j+)if(sum_prime(i)sum_prime(j) exch(i,j);void Array:print() for(int i=0;i5;i+)for(int j=0;j4;j+
23、) coutaijt; coutendl;void main() int b54=10,12,5,4,15,16,17,8,19,10,11,12,13,14,15,16,70,18,19,20; Array arr(b,5);cout原數(shù)組:;coutendl;arr.print();arr.fun();cout排序后的數(shù)組:;coutendl;arr.print();6#include #include class IDprivate: char * id; int y,m,d, yes; char *sex;public: ID(char * s); void fun(); void p
24、rint(); ID();ID:ID(char * s)id=new char strlen(s)+1;strcpy(id,s);y=0;m=0;d=0;sex=new char5;sex0=0;yes=0;void ID:fun( ) int i=6; while(i10) y=y*10+idi+-0; while(i12) m=m*10+idi+-0; while(i14) d=d*10+idi+-0;if(id16-0)%2=1) strcpy(sex,男);else strcpy(sex,女); int age=2015-y; if(age=40&strcmp(sex,女)=0) ye
25、s=1; if(age=35&strcmp(sex,男)=0) yes=1;void ID:print( ) cout身份證號:;coutidendl; cout出生日期:;couty.m.dendl;cout性別:;coutsexendl;cout是否青年:; if(yes=1) cout是endl; else cout不是endl;ID:ID() if(id) delete id; if(sex) delete sex;void main() char card1100 /char card2100; cout
26、card2; ID person(card1); person.fun(); person.print();7.#include #include class Arrayprivate:double a5,b5;public:Array(double t, int n); double ave(); double dat(); void fun(); void print();Array:Array(double t, int n)for(int i=0;in;i+) ai=ti;bi=0;double Array:ave()double s=0;for(int i=0;i5;i+)s+=ai
27、; return s/5;double Array:dat()double s=0;for(int i=0;i5;i+)s+=(ai-ave()*(ai-ave(); return s/5;void Array:fun() double pi=3.1415926,e=2.71828; double t=sqrt(2*pi*dat(),s; for(int i=0;i5;i+)s=-(ai-ave()*(ai-ave()/(2*dat(); bi=pow(e,s)/t; void Array:print()cout原數(shù)組a:endl;for(int i=0;i5;i+)coutait;coute
28、ndl; cout派生數(shù)組b:endl;for(i=0;i5;i+)coutbit;coutendl;void main()double t5=6.1,2.6,15.8,4.3,1.72; Array arr(t,5); arr.fun(); arr.print();8#include #include class EQUprivate:float a,b,c;double x1,x2,x;int k;public:EQU(float a1,float b1,float c1);void fun(double xx1,double xx2,double e);void print();EQU:
29、EQU(float a1,float b1,float c1) a=a1;b=b1;c=c1; void EQU:fun(double xx1,double xx2,double e) x1=xx1;x2=xx2; double f1=a*x1*x1+b*x1+c,f2=a*x2*x2+b*x2+c; double f; if(f1*f20)k=0; else k=1; x=(x1+x2)/2;f=a*x*x+b*x+c;while(fabs(f)=e&k) if(f1*f0) x1=x;else x2=x; x=(x1+x2)/2; f=a*x*x+b*x+c; ;void EQU:prin
30、t() if(k) coutxendl;else cout”無解”endl;void main()float a,b,c;double x1,x2,e; coutabc; coutx1x2; coute; EQU s(a,b,c);s.fun(x1,x2,e); cout該方程在區(qū)間0,10中的解是:;/0.701561 s.print ();函數(shù)編程題答案1.答案#include void print(int b) for(int i=0;i8;i+) coutbit; coutendl;void sort(int b,int n) for(int i=0;in-1;i+)for(int j=i+1;jn;j+)if(b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠房 改造 豪宅合同范本
- 合同范本 付款方式
- 農(nóng)家花椒出售合同范本
- 中外貿(mào)易買方信貸合同范本
- 單位變更合同范例
- 主播獨(dú)家簽約合同范本
- 區(qū)塊鏈技術(shù)合同范本
- 合伙買汽車合同范本
- 2025年人造板類家具合作協(xié)議書
- 廠房用電合同范本
- 欽針治療惡心嘔吐
- 第六章質(zhì)量和密度-基礎(chǔ)練(原卷版)
- 《稅收負(fù)擔(dān)對我國制造業(yè)資本金融化的影響研究》
- 中學(xué)美術(shù)《剪紙藝術(shù)》完整課件
- 現(xiàn)代家政導(dǎo)論-課件 5.1.3家庭管家
- 適用的法律法規(guī)和其他要求的符合性評價(jià)
- 中國古典園林史復(fù)習(xí)
- 東湖高新區(qū)調(diào)研報(bào)告
- 腎包膜下血腫護(hù)理
- 丁善德藝術(shù)歌曲《愛人送我向日葵》創(chuàng)作特征及演唱技巧研究
- 2024華中區(qū)域電力并網(wǎng)運(yùn)行管理實(shí)施細(xì)則
評論
0/150
提交評論