應(yīng)用實(shí)踐編程題答案new_第1頁
應(yīng)用實(shí)踐編程題答案new_第2頁
應(yīng)用實(shí)踐編程題答案new_第3頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、類編程題1. 【題目】試定義一個類 NUM驗(yàn)證下列命題是否成立:任意一個正整 數(shù)與其反序數(shù)相加,得到一個新的正整數(shù),再對這個新正整數(shù)重復(fù)上述 步驟,最終一定可以得到一個回文數(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ù)成員numvoid set(int a):將 num的值設(shè)置為 a

2、。int yn(int 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. 【題目】試定義一個實(shí)現(xiàn)計算學(xué)生課程成績的類STU對學(xué)生學(xué)期總評成績進(jìn)行計算并排序。具體要求如下:(1) 私有數(shù)據(jù)成員int norm, ex, final,overall :分別表示平時成績、實(shí)驗(yàn)成績、期末考 試和總評成績。char name15 :學(xué)生姓名。(2)

3、 公有成員函數(shù)void init(char *name1, int nor1, int ex1, int fin1) :用參數(shù) name1,nor1,exp1,fin1 分別初始化成員 name,norm, ex, final。void fun( ) :計算學(xué)生的總評成績。計算方法為:總評成績=平時成績占*20%+實(shí)驗(yàn)成績占 *25%+期末成績占 *55%??傇u成績計算時要求四舍五 入,并且期末考試成績不足 50 分時,則期末考試成績即為總評成績。 friend void sort(STU st, int n):友元函數(shù),對 st 按總評成績進(jìn)行從大到小排序。void print( ) :輸出

4、該學(xué)生信息。(3) 在主函數(shù)中先定義一個有 5 個元素的對象數(shù)組,用循環(huán)語句輸入學(xué) 生信息,并根據(jù)這些信息利用成員函數(shù) init() 更新學(xué)生信息,然后使用 函數(shù) sort() 對數(shù)組排序,最后輸出排序后的學(xué)生信息。輸入/輸出示例 (下劃線部分為鍵盤輸入 ): 請輸入姓名、平時成績、實(shí)驗(yàn)成績、期末成績:AAA 82 75 58請輸入姓名、平時成績、實(shí)驗(yàn)成績、期末成績:BBB 93 60 84請輸入姓名、平時成績、實(shí)驗(yàn)成績、期末成績:CCC 67 82 81請輸入姓名、平時成績、實(shí)驗(yàn)成績、期末成績: DDD 54 78 51請輸入姓名、平時成績、實(shí)驗(yàn)成績、期末成績: EEE 91 52 41 按

5、總評成績排序后: 姓名平時成績實(shí)驗(yàn)成績期末成績總評成績BBB93608480CCC67828178AAA82755867DDD54785158EEE915241413【題目】試定義一個類 Array ,首先求各列元素中的合數(shù)(非素數(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。ints

6、um_comp(int j) :求數(shù)組 a 第 j 列元素中所有合數(shù)之和。void exch(int j1, int j2):交換數(shù)組 a 的第 j1, j2 列元素。void fun() :根據(jù)題意對二維數(shù)組進(jìn)行列排序。void print() :以矩陣的形式輸出成員數(shù)組。(3) 在主函數(shù)中定義一個二維數(shù)組, 并使用該數(shù)組對類 Array 進(jìn)行測試。輸出示例:原數(shù)組:1012541516178191011121314151670181920排序后的數(shù)組:12151054171016819121511131470201618194【題目】 已知切線法求方程 f(x)=ax 2+bx+c=0 在

7、 x 附近的一個解的 迭代公式為: x=x- f(x)/f '(x) ,其中 f '(x)=2ax+b 為函數(shù) f(x) 的導(dǎo)數(shù)。2試定義一個類EQU用切線法求方程f(x)=ax +bx+c=O在x附近的一個 解。具體要求如下:(1) 私有數(shù)據(jù)成員float a,b,c :保存方程的系數(shù) a,b 和 c。double x :x 為所求得的解。(2) 公有成員函數(shù)EQU(float a1, float b1, float c1)分別初始化成員 a,b,c 。:構(gòu)造函數(shù),用參數(shù) a1, b1, c1void fun(double x0, double e ) :求方程在 x0 附近

8、的一個解,所采用的算法是:依次計算 x1=xO-f(xO)/f ' (xO), x2=x1-f(x1)/f' (x1),xn=xn-1-f(xn- 1)/f ' (xn -1), 直到 |f(xn)|<e 為止。void print( ) :輸出所求得的解。(3) 在主函數(shù)中建立EQU寸象,并求出方程f(x)=2x2+6x-7=0 在x二附 近的一個解,要求最終誤差 |f(x)|<1O -5,最后調(diào)用 print() 函數(shù)輸出所 求得的解。正確程序的輸入 /輸出結(jié)果如下(下劃線部分為鍵盤輸入) : 請輸入方程的系數(shù) (a,b,c): 2 6 -7請輸入預(yù)估的

9、初始解 xO: 5請輸入誤差要求 (e) : 該方程的解是:5【題目】試定義一個類 Array ,將二維數(shù)組各行按其各行元素中所有 素數(shù)之和從大到小排序,具體要求如下:(1) 私有數(shù)據(jù)成員int a54 :待處理的數(shù)組。(2) 公有成員函數(shù)Array(int t4, int n):構(gòu)造函數(shù),用參數(shù) t 初始化成員數(shù)組 a, n為數(shù)組 t 的行數(shù)。int prime(int n) :判斷整數(shù)n是否為素數(shù),如果是素數(shù),返回值為1,否則返回值為 O。intsum_prime(inti) :求數(shù)組 a 中第 i 行元素中所有素數(shù)之和。void fun( ) :根據(jù)題意對二維數(shù)組進(jìn)行行排序。要求排序過程

10、中交換數(shù) 據(jù)時使用成員函數(shù) exch() 。void print( ) :以矩陣的形式輸出成員數(shù)組。(3) 在主函數(shù)中定義一個二維數(shù)組, 并使用該數(shù)組對類 Array 進(jìn)行測試 輸出示例:原數(shù)組:1012541516178191011121314151670181920排序后的數(shù)組 :19101112701819201516178131415161012546. 【題目】判斷某人是否為青年的標(biāo)準(zhǔn)是男性不超過 35 周歲或女性不超 過 40 周歲。已知身份證號從第 7 位開始的連續(xù) 8 位表示持證人的出生年 月日,身份證號的第 17位為奇數(shù)表示持證人為男性,身份證號第 17 位數(shù)字為偶數(shù)表示持證

11、人為女性。例如:身份證號為的持證人出生年月為1983年1月3日,性別為男性。試定義一個類ID,根據(jù)身份證號判斷持證人截止到 2015年 10 月 1 日是否為青年。具體要求如下:(1) 私有數(shù)據(jù)成員char * id :保存18位身份證號。inty,m,d, yes : y,m,d分別表示持證人的出生年、月、日。yes取值為 1或0分別表示持證人是青年或不是青年。char *sex :持證人的性別(”男”或”女”)。(2) 公有成員函數(shù)ID(char * s):用參數(shù)s初始化成員id (需申請動態(tài)內(nèi)存),并將 y,m,d 初始化為0,并為指針sex分配足夠的存儲空間。void fun():根據(jù)

12、身份證號計算持證人的出生年月和性別,并判斷其是 否為青年。void prin t():輸出持證人的信息。ID():析構(gòu)函數(shù),進(jìn)行必要的操作。(3) 在主函數(shù)中輸入一個身份證號,生成相應(yīng)的對象,判斷并輸出持證人截止到2015年10月1日是否為青年??梢允褂靡韵律矸葑C號測試程序:身份證號1:身份證號2: 輸入/輸出示例(下劃線部分為鍵盤輸入):身份證號 出生日期:性別:男 是否青年:是!1 21(ai )2bi ; e 27. 【題目】設(shè)數(shù)組a派生出數(shù)組b的規(guī)則為2 2,其中,u為數(shù)組a中n個元素的平均值,為數(shù)組a中n個元素的方差,1-(ai n)2試定義一個類Array,實(shí)現(xiàn)上述數(shù)組的派生。具體

13、要求如下:(1) 私有數(shù)據(jù)成員double a5,b5:數(shù)組 a,派生數(shù)組 b。(2) 公有成員函數(shù)Array(double t, int n):構(gòu)造函數(shù),用參數(shù)t的前n個元素初始化成員數(shù)組a。double ave():計算并返回數(shù)組a中所有元素的平均值。 double dat():計算并返回數(shù)組a中全部n個元素的方差。void fun():根據(jù)題意派生數(shù)組b。注:頭文件中的函數(shù)double pow(double x, double y)返回值為 xy。void prin t():輸出成員數(shù)組。(3) 在主函數(shù)中定義一個數(shù)組,并使用該數(shù)組對類Array進(jìn)行測試,要求輸出原數(shù)組和派生數(shù)組。輸出示

14、例: 原數(shù)組a:派生數(shù)組b:8【題目】用二分法求方程f(x)=ax 2+bx+c=0在區(qū)間x1, x2內(nèi)的一個解的迭代算法如下(假設(shè)f(x)在區(qū)間x1, x2內(nèi)單調(diào)):(1) 如果f(x1)*f(x2)>0,則方程在區(qū)間x1, x2上無解;(2) 令x=(x1+x2)/2 ; 如果f(x)*f(x1)>0,方程的解在區(qū)間x, x2上,則令x1=x;否貝打解在區(qū)間x1, x,令x2=x;(4) 重復(fù)步聚(2)、( 3)直到f(x)滿足精度要求。試定義一個類EQU實(shí)現(xiàn)利用二分法求方程ax2+bx+c=0在區(qū)間x1, x2 內(nèi)的一個解。具體要求如下:(1) 私有數(shù)據(jù)成員float a,b

15、,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)的一個解x,要求最終誤差|f(x)|<e。void print() :若方程有解,則輸出所求得的解;若無解,則輸出“方 程在給定區(qū)間內(nèi)

16、無解”。(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) :該方程在區(qū)間0,10中的解是:函數(shù)編程題1. 定義兩個獨(dú)立函數(shù),void print(intb);實(shí)現(xiàn)將一維數(shù)組元素一行輸出,void sort(int b,int n);實(shí)現(xiàn)將一維數(shù)組的元素按從大到小排序;在主函數(shù)中定義一個整型數(shù)組 a8

17、,從鍵盤輸入8個數(shù)為數(shù)組元素 賦值,分別調(diào)用兩個函數(shù)。2. 字符串處理:設(shè)計一個通用函數(shù)實(shí)現(xiàn)在字符串si中從第m個字符開 始插入字符串s2,在主程序中對該函數(shù)進(jìn)行測試。初始狀態(tài):si: abcdefgs2:1234輸入插入字符串的位置:3目標(biāo)狀態(tài):si: ab1234cdefgs2: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

18、-3 -14. 編寫程序:定義一個函數(shù) void dtor(i ntn ,i nt 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)換。(算法介紹:例如輸入8 2 輸出結(jié)果為1000輸入20 16 輸出結(jié)果為14類編程題答案1.答案#in elude <> class NUM private:int num;public:NUM(i nt x);void set(i nt a);int yn (i nt n);void fun();NUM:NUM(i nt x)num=x;void NUM:set(i nt a)num=a;

19、int NUM:y n(int n)int t=n, s=0;while(t)s=s*1O+t%1O;t/=10;if(s=n) return 1; else return 0;void NUM:fu n()int m;cout«" num="< <n umvv'的驗(yàn)證過程如下: while(1)int n=nu m,s=0; verall<stj.overall)STU t; t=sti;sti =stj;stj =t; p201)<<e ndl;void STU:pri nt()coutv <n ame«&

20、#39;t'v <no rmvv't'v<exvv't'vvfi nal<v't'v<overallvve ndl;void mai n()STU s5; char name100; int no rm,ex,fi n; for(int i=0;i<5;i+) coutvv"請輸入姓名、平時成績、實(shí)驗(yàn)成績、期末成績:"<<endl; cin>>n ame> >no rm>>ex>>fi n; si.i nit( name, nor

21、m,ex,fi n); si.fu n();for(i=0;i<5;i+)si.pri nt();coutvv"按總評成績排序后:n姓名平時成績實(shí)驗(yàn)成績期末成績總評成績 "<<e ndl;sort(s,5);for(i=0;i<5;i+) si.pri nt();3答案#in clude <>class Arrayprivate:int a4 5;public:Array(i nt t5,i nt n);int comp(i nt n);int sum_comp(i nt j);void exch(i nt j1,int j2);void

22、 fun();void prin t();Array:Array(int t5,int n)for(int i=0;i<n;i+)for(i nt j=0;j<5;j+) aij=tij;int Array:comp(i nt n)for(i nt i=2;i <n ;i+)if(n %i=0) return 1;return 0;int Array:sum_comp(i nt j)int s=0;for(int i=0;i<4;i+) if(comp(aij)=1) s+=aij; return s;void Array:exch(i nt j1,i nt j2)fo

23、r(int i=0;i<4;i+)int d=aij1;aij1=aij2; aij2=d;void Array:fu n()for(int i=0;i<4;i+) for(i nt j=i+1;j<5;j+) if(sum_comp(i)<sum_comp(j) exch(i,j);void Array:pri nt()for(int i=0;i<4;i+)for(i nt j=0;j<5;j+) cout<<aijvv't' cout«e ndl;void mai n(void)int b45=10,12,5,4,1

24、5,16,17,8,19,10,11,12,13,14,15,16,70,18,19,20;Array arr(b,4);cout«"原數(shù)組:"<<endl;();();cout«"排序后的數(shù)組:"<<e ndl;();4答案#in clude <>#in clude <>class EQU private: float a,b,c; double x;public:EQU(float a1,float b1,float c1);void fun( double x0,double e)

25、;void prin t();;EQU:EQU(float a1,float b1,float c1) a=a1;b=b1;c=c1;x=;void EQU:fu n (double xO,double e)double f;double fO=a*xO*xO+b*xO+c;double ff=2*a*x0+b;while(fabs(fO)>e)xO=xO-fO/ff;fO=a*xO*xO+b*xO+c; ff=2*a*x0+b;x=xO;void EQU:pri nt ()cout<<x<<e ndl;void mai n()float a,b,c;double

26、 xO,e;cout«"請輸入方程的系數(shù)(a, b, c):cin> >a>>b>>c;coutvv"請輸入預(yù)估的初始解xO:"cin> >x0;cout«"請輸入誤差要求(e):"cin> >e;coutvv"該方程的解是:"EQU t(a,b,c);(xO,e);();5. #include <>class Arrayprivate:int a 54;public:Array(int t4,int n);int prime(i n

27、t n);int sum_prime(i nt i);void exch(int i1,int i2);void fun();void prin t();Array:Array(int t4,int n)for(int i=0;i<n;i+) for(int j=0;j<4;j+) aij=tij;int Array:prime (int n)for(int i=2;i<n;i+) if(n%i=0) return 0; return 1;int Array:sum_prime (int i)int s=0;for(int j=0;j<4;j+) if(prime(ai

28、j) s+=aij;return s;void Array:exch(int i1,int i2) for(int j=0;j<4;j+)int d=ai1j; ai1j=ai2j; ai2j=d;void Array:fun () for(int i=0;i<4;i+) for(int j=i+1;j<5;j+) if(sum_prime(i)<sum_prime(j) exch(i,j);void Array:print()for(int i=0;i<5;i+)for(int j=0;j<4;j+) cout<<aij<<'

29、;t' cout<<endl;void main()intb54=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ù)組: " cout<<endl;();();coutvv"排序后的數(shù)組:"cout«e ndl;();6. #include <>#in elude <>class IDprivate:char * id;int y,m,d, yes; char *

30、sex;public:ID(char * s);void fun();void prin t();ID();ID:ID(char * s)id=new char strle n(s)+1;strcpy(id,s);y=0;m=0;d=0;sex=new char5;sex0='0'yes=0;void ID:fu n( )int i=6;while(i<10)y=y*10+idi+-'0'while(i<12)m=m*10+idi+-'0'while(i<14)d=d*10+idi+-'0'if(id16-

31、9;0')%2=1)strcpy(sex," 男");elsestrcpy(sex,"女");int age=2015-y;if(age<=40&&strcmp(sex,"女")=0)yes=1;if(age<=35&&strcmp(sex,"男")=0)yes=1;void ID:pri nt( )cout«"身份證號:"cout<<id<<e ndl;coutvv" 出生日期:"cout

32、vvyvv'.'vvmvv'.'vvd<ve ndl;cout«"性別:"cout<vsexvvendl;coutvv"是否青年:"if(yes=1)coutvv"是"<<endl;elsecoutvv"不是"vvendl;ID:ID()if(id) delete id; if(sex) delete sex;void main()cout<<"Input an ID: "include <>#includ

33、e <> 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;i<n;i+) ai=ti; bi=0; double Array:ave() double s=0; for(int i=0;i<5;i+) s+=ai;return s/5; double Array:dat() double s=0;for(int i

34、=0;i<5;i+) s+=(ai-ave()*(ai-ave();return s/5;void Array:fun()double pi=,e=;double t=sqrt(2*pi*dat(),s;for(int i=0;i<5;i+)s=-(ai-ave()*(ai-ave()/(2*dat();bi=pow(e,s)/t;void Array:print() cout<<" 原數(shù)組 a:"<<endl; for(int i=0;i<5;i+) cout<<ai<<'t'cout<

35、;<endl; cout<<" 派生數(shù)組 b:"<<endl; for(i=0;i<5;i+) cout<<bi<<'t'cout<<endl;void main() double t5=,;Array arr(t,5);();();8#include <>#include <>class EQUprivate:float a,b,c;double x1,x2,x;int k;public:EQU(float a1,float b1,float c1);void

36、fun(double xx1,double xx2,double e);void print();EQU: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*f2>0)k=0;else k=1;x=(x1+x2)/2;f=a*x*x+b*x+c;while(fabs(f)>=e&&k)if

37、(f1*f>0)x1=x;else x2=x;x=(x1+x2)/2;f=a*x*x+b*x+c;void EQU:print() if(k) cout<<x<<endl;else cout<< ”無解” <<endl; void main()float a,b,c; double x1,x2,e;cout<<" 請輸入方程的系數(shù) (a,b,c) : " 案 #include <> void print(int b)for(int i=0;i<8;i+) cout<<bi<

38、<'t'cout<<endl; void sort(int b,int n)for(int i=0;i<n-1;i+) for(int j=i+1;j<n;j+) if(bi<bj) int t; t=bi; bi=bj; bj=t;void main()int a8;cout<<" 請輸入 8 個數(shù)存放到一維數(shù)組 a: "<<endl; for(int i=0;i<8;i+)cin>>ai; print(a); sort(a,8); print(a);2. 答案 #include <> #include <> void insert(c

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論