版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編程題復(fù)習(xí)方法:做編程題時,先別著急動手,一定認(rèn)真把題意理解清楚,在紙上寫出解題方法和關(guān)鍵語句(用到什么算法),最后按照輸入數(shù)據(jù)-處理數(shù)據(jù)-輸出數(shù)據(jù)的流程實現(xiàn)主程序和相關(guān)函數(shù)。(按步驟給分,人工閱卷)編寫程序時一定要注意格式,要有縮進(jìn)或退格。1、 定義類的框架2、 成員函數(shù)的實現(xiàn)3、 在主函數(shù)中測試類具體實現(xiàn)的公式:class 類名private: 私有數(shù)據(jù)成員;public: 數(shù)據(jù)成員; 成員函數(shù);(構(gòu)造函數(shù)和析構(gòu)函數(shù)); 類名:類名() /構(gòu)造函數(shù)成員函數(shù)的個數(shù)與類中的個數(shù)相同,函數(shù)名前加類名:void main()類名 對象名( 參數(shù) );/是否帶參數(shù)取決于構(gòu)造函數(shù)構(gòu)造函數(shù)的定義方法 數(shù)
2、據(jù)成員是內(nèi)置類型變量,直接用該類型的形參變量初始化數(shù)據(jù)成員。class A int i;public: A(int x) i=x;數(shù)據(jù)成員是一維數(shù)組,通過一個for循環(huán)將形參數(shù)組元素初始化一維數(shù)組成員。class A int t5;public: A(int b,int n) for(int i=0;i<n;i+)ti=bi; ;數(shù)據(jù)成員是二維數(shù)組,通過雙重循環(huán)將形參數(shù)組元素初始化二維數(shù)組成員。class A int t34;public: A(int b4,int n) for(int i=0;i<n;i+) for(int j=0;j<4;j+)tij=bij;數(shù)據(jù)成員是
3、一維字符數(shù)組,可以用字符串拷貝函數(shù)strcpy,將形參字符數(shù)組中的字符串,初始化字符數(shù)組成員。#include <iostream.h>#include <string.h>class A char t100;public: A(char b ) strcpy(t,b);數(shù)據(jù)成員是字符類型指針變量,先用new動態(tài)申請長度為形參指針指向的字符串長度+1的內(nèi)存空間,把返回的首地址賦給指針成員,再把形參指向字符串拷貝到動態(tài)數(shù)組中。#include <iostream.h>#include <string.h>class A char *s;public
4、: A(char *b) if(b) s=new charstrlen(b)+1; strcpy(s,b);數(shù)據(jù)成員是數(shù)值類型指針變量,先用new動態(tài)申請長度為形參數(shù)組長度的內(nèi)存空間,把返回的首地址初始化指針成員,再把形參數(shù)組元素循環(huán)賦給動態(tài)數(shù)組元素。#include <iostream.h>class A int *s;public: A(int b 10) s=new int10; int i; for(i=0;i<10;i+) si=bi; ;編程的基本類型題分析:一、學(xué)生成績2016春VC01 (1)排序算法(2)四舍五入算法int(x+0.5)保留整數(shù) int(x*
5、10+0.5)/10.0 保留小數(shù)點后一位int(x*100+0.5)*100)/100.0 保留小數(shù)點后兩位(3)友元函數(shù)的定義和調(diào)用(4)字符串拷貝函數(shù)【題目】試定義一個實現(xiàn)計算學(xué)生課程成績的類STU,對學(xué)生學(xué)期總評成績進(jìn)行計算并排序。具體要求如下:(1) 私有數(shù)據(jù)成員int norm, ex, final,overall:分別表示平時成績、實驗成績、期末考試和總評成績。char name15:學(xué)生姓名。(2) 公有成員函數(shù)void init(char *name1, int nor1, int ex1, int fin1):用參數(shù)name1,nor1,exp1,fin1分別初始化成員na
6、me,norm, ex, final。void fun( ):計算學(xué)生的總評成績。計算方法為:總評成績=平時成績占*20%+實驗成績占*25%+期末成績占*55%??傇u成績計算時要求四舍五入,并且期末考試成績不足50分時,則期末考試成績即為總評成績。friend void sort(STU st, int n):友元函數(shù),對st按總評成績進(jìn)行從大到小排序。void print( ):輸出該學(xué)生信息。(3) 在主函數(shù)中先定義一個有5個元素的對象數(shù)組,用循環(huán)語句輸入學(xué)生信息,并根據(jù)這些信息利用成員函數(shù)init()更新學(xué)生信息,然后使用函數(shù)sort()對數(shù)組排序,最后輸出排序后的學(xué)生信息。輸入/輸出
7、示例(下劃線部分為鍵盤輸入):請輸入姓名、平時成績、實驗成績、期末成績:AAA 82 75 58請輸入姓名、平時成績、實驗成績、期末成績:BBB 93 60 84請輸入姓名、平時成績、實驗成績、期末成績:CCC 67 82 81請輸入姓名、平時成績、實驗成績、期末成績:DDD 54 78 51請輸入姓名、平時成績、實驗成績、期末成績:EEE 91 52 41按總評成績排序后:姓名 平時成績 實驗成績 期末成績 總評成績BBB 93 60 84 80CCC 67 82 81 78AAA 82 75 58 67DDD 54 78 51 58EEE 91 52 41 412016秋VC02編程題四舍
8、五入算法 int(x+0.5)保留整數(shù) int(x*10+0.5)/10.0 保留小數(shù)點后一位int(x*100+0.5)*100)/100.0 保留小數(shù)點后兩位【題目】假設(shè)二維數(shù)組的一行代表一名學(xué)生課程情況記錄,前5列為考勤記錄(出勤值為1,缺勤值0),第610列為作業(yè)得分記錄(5分制),第11列為實驗考核成績,第12列為期末考試成績。學(xué)生課程總評成績的計算式為(四舍五入保留整數(shù)):平時成績*20%+實驗成績*30%+期末考試成績*50%,其中,平時成績計算方法為:出勤一次記10分,作業(yè)每得1分,平時成績記2分。例如,設(shè)有如下學(xué)生課程情況記錄:考勤1考勤2考勤3考勤4考勤5作業(yè)1作業(yè)2作業(yè)3
9、作業(yè)4作業(yè)5實驗期末總評111104452490891011143434857511011345249580表中第一行學(xué)生的平時成績計算為:(1+1+1+1+0)*10+(4+4+5+2+4)*2=78,則其總評成績計算為78*0.2+90*0.3+89*0.5=87.1,總評成績四舍五入計為87分。試定義一個類Array,根據(jù)上述要求計算學(xué)生的總評成績。具體要求如下:(1)私有成員:l int a313: 學(xué)生課程情況記錄數(shù)組。(2)公有成員:l Array (float t13, int n): 構(gòu)造函數(shù),用參數(shù)t初始化成員數(shù)組a,參數(shù)n為t的行數(shù)。l int sum(int k): 輔助
10、函數(shù),計算并返回成員數(shù)組a的第k行學(xué)生的平時成績。l void fun( ): 根據(jù)題意計算每個學(xué)生的總評成績。l void print( ): 按示例格式輸出每個學(xué)生的信息。注意總評成績結(jié)果要四舍五入。(3)在主函數(shù)中給定原始數(shù)組(可利用題目中的樣例數(shù)據(jù),總評成績暫定為0),并用該數(shù)組對類Array進(jìn)行測試。 輸出示例:考勤: 1,1,1,1,0,作業(yè): 4,4,5,2,4,平時成績: 78 實驗: 90 期末: 89 總評: 87考勤: 1,0,1,1,1,作業(yè): 4,3,4,3,4,平時成績: 76 實驗: 85 期末: 75 總評: 78考勤: 1,1,0,1,1,作業(yè): 3,4,5,
11、2,4,平時成績: 76 實驗: 95 期末: 80 總評: 84【要求】打開T盤中myfc.cpp文件(空文件),編寫后的源程序文件myfc.cpp必須保存在T盤的根目錄下,供閱卷用。1答案#include<iostream.h>#include <string.h>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
12、 n); void print();void STU:init(char *name1,int norm1,int ex1,int fin1)strcpy(name,name1);norm=norm1;ex=ex1;final=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;i<n-1;i+)for(int j=i+1;j<
13、;n;j+)if(sti.overall<stj.overall)STU t;t=sti;sti=stj;stj=t;void STU:print()cout<<name<<'t'<<norm<<'t'<<ex<<'t'<<final<<'t'<<overall<<endl;void main()STU s3;char name100;int norm,ex,fin;for(int i=0;i<3;i
14、+)cout<<"請輸入姓名、平時成績、實驗成績、期末成績:"<<endl;cin>>name>>norm>>ex>>fin;si.init(name,norm,ex,fin);si.fun(); cout<<"按總評成績排序后:n姓名 平時成績 實驗成績 期末成績 總評成績"<<endl;sort(s,3); for(i=0;i<3;i+)si.print();2答案#include <iostream>using namespace st
15、d;class Arrayprivate:int a313;public:Array(float t13,int n);int sum(int k);void fun();void print();Array:Array(float t13,int n) for(int i=0;i<n;i+) for(int j=0;j<13;j+) aij=tij;int Array:sum(int k)int s1=0,s2=0,s=0; for(int i=0;i<5;i+)s1+=aki; for( i=5;i<10;i+) s2+=aki; s=s1*10+s2*2; ret
16、urn s;void Array:fun() for(int i=0;i<3;i+)ai12=int(sum(i)*0.2+ai10*0.3+ai11*0.5+0.5);void Array:print()for(int i=0;i<3;i+)cout<<"考勤:" for(int j=0;j<5;j+) cout<<aij<<',' cout<<endl; cout<<"作業(yè):" for(j=5;j<10;j+) cout<<aij<&
17、lt;',' cout<<endl; cout<<"平時成績:"<<sum(i)<<'t' cout<<"實驗成績:"<<ai10<<'t' cout<<"期末成績:"<<ai11<<'t' cout<<"總評成績:"<<ai12<<'t' cout<<endl; voi
18、d main()float b313=1,1,1,1,0,4,4,5,2,4,90,89,1,0,1,1,1,4,3,4,3,4,85,75,1,1,0,1,1,3,4,5,2,4,95,80; Array arr(b,3); arr.fun(); arr.print();二、二維數(shù)組問題2016春VC02 1素數(shù)算法,2從大到小排序算法3數(shù)據(jù)交換【題目】試定義一個類Array,首先求各列元素中的合數(shù)(非素數(shù))之和,再將數(shù)組各列以其合數(shù)之和的大小從大到小排序,具體要求如下: (1) 私有數(shù)據(jù)成員int a45:需要排序的二維數(shù)組。(2) 公有成員函數(shù)Array(int t5, int n):構(gòu)
19、造函數(shù),用參數(shù)t初始化成員數(shù)組a,n表示數(shù)組t的行數(shù)。int comp(int n):判斷整數(shù)n是否為合數(shù),如果是合數(shù),返回值為1,否則返回值為0。int sum_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ù)組:10 12 5 4 1516 17 8 19 1011 12 13 14 1516 70 18 1
20、9 20排序后的數(shù)組:12 15 10 5 417 10 16 8 1912 15 11 13 1470 20 16 18 192015秋VC031素數(shù)算法,2從大到小排序算法3數(shù)據(jù)交換【題目】試定義一個類Array,將二維數(shù)組各行按其各行元素中所有素數(shù)之和從大到小排序,具體要求如下:(1) 私有數(shù)據(jù)成員l int a54:待處理的數(shù)組。(2) 公有成員函數(shù)l Array(int t4, int n):構(gòu)造函數(shù),用參數(shù)t初始化成員數(shù)組a,n為數(shù)組t的行數(shù)。l int prime(int n):判斷整數(shù)n是否為素數(shù),如果是素數(shù),返回值為1,否則返回值為0。l int sum_prime(int
21、i):求數(shù)組a中第i行元素中所有素數(shù)之和。l void exch(int i1, int i2):交換數(shù)組a的第i1, i2行元素。l void fun( ):根據(jù)題意對二維數(shù)組進(jìn)行行排序。要求排序過程中交換數(shù)據(jù)時使用成員函數(shù)exch()。l void print( ):以矩陣的形式輸出成員數(shù)組。(3) 在主函數(shù)中定義一個二維數(shù)組,并使用該數(shù)組對類Array進(jìn)行測試。輸出示例:原數(shù)組:10 12 5 415 16 17 819 10 11 1213 14 15 1670 18 19 20排序后的數(shù)組:19 10 11 1270 18 19 2015 16 17 813 14 15 1610 1
22、2 5 4【要求】打開T盤中myfc.cpp文件(空文件),編寫后的源程序文件myfc.cpp必須保存在T盤的根目錄下,供閱卷用。2016秋VC041從大到小排序算法2數(shù)據(jù)交換【題目】試定義一個類Array,將二維數(shù)組各行按其各行元素中最大值的大小排序,具體要求如下:(1) 私有數(shù)據(jù)成員l int a54:需要排序的數(shù)組。(2) 公有成員函數(shù)l Array(int t4, int n):構(gòu)造函數(shù),用參數(shù)t初始化成員數(shù)組a,n為數(shù)組t的行數(shù)。l int max(int *p,int n):求指針p所指向的一維數(shù)組中n個元素的最大值。l void exch(int i1, int i2):交換數(shù)組
23、a的第i1, i2行。l void fun():根據(jù)題意對二維數(shù)組進(jìn)行行排序。提示:利用成員函數(shù)max()計算每行的最大元素。l void print():以矩陣的形式輸出成員數(shù)組a。(3) 在主函數(shù)中定義一個二維數(shù)組,并使用該數(shù)組對類Array進(jìn)行測試。輸出示例:原數(shù)組:10 12 5 415 16 17 819 10 11 1213 14 15 1670 18 19 20排序后的數(shù)組:70 18 19 2019 10 11 1215 16 17 813 14 15 1610 12 5 42016秋VC05編程題1奇數(shù)與偶數(shù)2選擇排序【題目】試定義一個類Array,實現(xiàn)對二維數(shù)組進(jìn)行按行排序
24、的功能。要求奇數(shù)行中的元素按升序排列,偶數(shù)行中的元素按降序排列(下標(biāo)從0開始計數(shù))。具體要求如下:(1)私有成員:l int a45: 需要排序的數(shù)組。(2)公有成員:l Array(int t5, int n): 構(gòu)造函數(shù),用參數(shù)t初始化成員數(shù)組a,參數(shù)n為t的行數(shù)。l void sort(int *p, int n, int f): 輔助函數(shù),對指針p所指向的數(shù)組排序。其中,n為數(shù)組p中元素的個數(shù);當(dāng)參數(shù)f的值為奇數(shù)時按升序排序,否則按降序排序。l void fun( ): 根據(jù)題意多次調(diào)用sort( )函數(shù)實現(xiàn)成員數(shù)組a的排序。l void print( ): 按矩陣形式輸出成員數(shù)組。(
25、3)在主函數(shù)中給定原始數(shù)組,并用該數(shù)組對類Array進(jìn)行測試。要求輸出處理前和處理后的數(shù)組。輸出示例:原數(shù)組:1 3 9 5 67 6 7 5 72 5 4 5 67 1 5 4 5處理后數(shù)組:9 6 5 3 15 6 7 7 76 5 5 4 21 4 5 5 7【要求】打開T盤中myfc.cpp文件(空文件),編寫后的源程序文件myfc.cpp必須保存在T盤的根目錄下,供閱卷用。1答案#include <iostream.h>class Arrayprivate:int a45;public:Array(int t5,int n);int comp(int n);int sum
26、_comp(int j);void exch(int j1,int j2);void fun();void print();Array:Array(int t5,int n) for(int i=0;i<n;i+) for(int j=0;j<5;j+) aij=tij;int Array:comp(int n) for(int i=2;i<n;i+) if(n%i=0) break; if(i=n) return 0; return 1;int Array:sum_comp(int j)int s=0;for(int i=0;i<4;i+) if(comp(aij)=
27、1) s+=aij; return s;void Array:exch(int j1,int j2) for(int i=0;i<4;i+) int d; d=aij1; aij1=aij2; aij2=d;void Array:fun()for(int i=0;i<4;i+)for(int j=i+1;j<5;j+) if(sum_comp(i)<sum_comp(j) exch(i,j);void Array:print () for(int i=0;i<4;i+) for(int j=0;j<5;j+) cout<<aij<<&
28、#39;t' cout<<endl; void main()int a45=10,12, 5, 4,15,6,17, 8,19,10,11,12, 13,14,15,16,70,18,19, 20;Array arr(a,4);cout<<"原數(shù)組:"<<endl;arr.print();arr.fun();cout<<"排序后的數(shù)組:"<<endl;arr.print();2答案#include <iostream.h>class Arrayprivate:int a54;
29、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;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
30、=0; for(int j=0;j<4;j+)if(prime(aij) 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
31、<4;j+) cout<<aij<<'t' cout<<endl;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ù)組:"cout<<endl;arr.print();arr.fun();cout<<"排序后的數(shù)組:"cout<<endl;arr.print();3答案#include <io
32、stream.h>class Arrayprivate:int a54;public:Array(int t4,int n);int max(int *p,int n);void exch(int i1,int i2);void fun();void print();Array:Array(int t4,int n) for(int i=0;i<n;i+) for(int j=0;j<4;j+) aij=tij;int Array:max(int *p,int n)int s=0; for(int i=0;i<n;i+) s+=pi;return s;void Arra
33、y: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(max(ai,5)<max(aj,5) exch(i,j);void Array:print () for(int i=0;i<5;i+) for(int j=0;j<4;j+) cout<<aij<<'t' cout<<endl; void
34、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ù)組:"<<endl;arr.print ();arr.fun();cout<<"排序后數(shù)組:"<<endl;arr.print ();4答案#include <iostream.h>class Arrayprivate:int a45;public: Array(int t5,int n);void
35、 sort(int *p,int n,int f);void fun();void print();Array:Array(int t5,int n)for(int i=0;i<n;i+)for(int j=0;j<5;j+)aij=tij;void Array:sort(int *p,int n,int f)if(f%2=1) for(int i=0;i<n-1;i+) for(int j=i+1;j<n;j+) if(pi<pj) int t=pi;pi=pj;pj=t; else for(int i=0;i<n-1;i+) for(int j=i+1;
36、j<n;j+) if(pi>pj) int t=pi;pi=pj;pj=t; void Array:fun() for(int i=0;i<4;i+) sort(ai,5,i+1);void Array:print()for(int i=0;i<4;i+) for(int j=0;j<5;j+) cout<<aij<<'t' cout<<endl; void main()int b45=1,3,9,5,6,7,6,7,5,7,2,5,4,5,6,7,1,5,4,5;Array arr(b,4);cout<&
37、lt;"原數(shù)組:"<<endl;arr.print();arr.fun ();cout<<"處理后的數(shù)組:"<<endl;arr.print ();三、數(shù)學(xué)問題2016春VC03二分法求方程的解【題目】用二分法求方程f(x)=ax2+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;(3)如果f(x)*f(x1)>0,方程的解在區(qū)間x, x2上,則令x1=x;否
38、則,解在區(qū)間x1, x,令x2=x;(4)重復(fù)步聚(2)、(3)直到f(x)滿足精度要求。試定義一個類EQU,實現(xiàn)利用二分法求方程ax2+bx+c=0在區(qū)間x1, x2內(nèi)的一個解。具體要求如下:(1) 私有數(shù)據(jù)成員l float a,b,c:存儲方程的系數(shù)a,b和c。l double x1, x2, x:x為方程在區(qū)間x1, x2上的解。l int k:如果在區(qū)間x1, x2內(nèi)方程有解,則k值為1,否則k值為0;(2) 公有成員函數(shù)l EQU(float a1, float b1, float c1):用參數(shù)a1,b1,c1分別初始化成員a,b,c。l void fun(double xx1,
39、 double xx2, double e):求方程ax2+bx+c=0在區(qū)間xx1, xx2內(nèi)的一個解x,要求最終誤差|f(x)|<e。l void print():若方程有解,則輸出所求得的解;若無解,則輸出“方程在給定區(qū)間內(nèi)無解”。 (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中的解
40、是:0.7015611答案#include <iostream.h>#include <math.h>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:EQU(float a1,float b1,float c1) a=a1,b=b1;c=c1;void EQU:fun(double xx1,double xx2,double e
41、)x1=xx1;x2=xx2; double f;double f1=a*x1*x1+b*x1+c;double f2=a*x2*x2+b*x2+c;if(f1*f2>0) k=0;else do x=(x1+x2)/2; f=a*x*x+b*x+c; if(f*f1>0) x1=x; else x2=x;while(fabs(f)>e);k=1;void EQU:print()if(k=1) cout<<x<<endl;else cout<<"方程在給定區(qū)間內(nèi)無解"<<endl;void main() fl
42、oat a,b,c; float x1,x2;double e; cout<<"請輸入方程的系數(shù)(a,b,c):" cin>>a>>b>>c; cout<<"請輸入?yún)^(qū)間(x1,x2)邊界:" cin>>x1>>x2; cout<<"請輸入誤差要求(e):" cin>>e; EQU t(a,b,c); t.fun (x1,x2,e);cout<<"該方程在區(qū)間"<<x1<<&
43、quot;,"<<x2<<"中的解是" t.print();2015秋VC04切線法求方程的解【題目】已知切線法求方程 f(x)=ax2+bx+c=0 在x附近的一個解的迭代公式為:x=x-f(x)/f(x),其中f(x)=2ax+b為函數(shù)f(x)的導(dǎo)數(shù)。試定義一個類EQU,用切線法求方程 f(x)=ax2+bx+c=0 在x附近的一個解。具體要求如下:(1) 私有數(shù)據(jù)成員l float a,b,c:保存方程的系數(shù)a,b和c。l double x:x為所求得的解。(2) 公有成員函數(shù)l EQU(float a1, float b1, flo
44、at c1):構(gòu)造函數(shù),用參數(shù)a1, b1, c1分別初始化成員a,b,c。l void fun(double x0, double e ):求方程在x0附近的一個解,所采用的算法是:依次計算x1=x0-f(x0)/f(x0), x2=x1-f(x1)/f(x1),, xn=xn-1-f(xn-1)/f(xn-1),直到|f(xn)|<e為止。l void print( ):輸出所求得的解。(3) 在主函數(shù)中建立EQU對象,并求出方程 f(x)=2x2+6x-7=0 在x=5.0附近的一個解,要求最終誤差|f(x)|<10-5,最后調(diào)用print()函數(shù)輸出所求得的解。正確程序的輸
45、入/輸出結(jié)果如下(下劃線部分為鍵盤輸入):請輸入方程的系數(shù)(a,b,c):2 6 -7請輸入預(yù)估的初始解x0: 5請輸入誤差要求(e):0.00001該方程的解是:0.897916【要求】打開T盤中myfc.cpp文件(空文件),編寫后的源程序文件myfc.cpp必須保存在T盤的根目錄下,供閱卷用。2答案#include <iostream.h>class EQUprivate:float a,b,c;double x;public:EQU(float a1,float b1,float c1);void fun(double x0,double e);void print();E
46、QU:EQU(float a1,float b1,float c1) a=a1;b=b1;c=c1; x=0.0;void EQU:fun (double x0,double e) double f;do double f0=a*x0*x0+b*x0+c; double ff=2*a*x0+b; x=x0-f0/ff; f=a*x*x+b*x+c; double f1=2*a*x+b; x0=x-f/f1; while(f>e);void EQU:print () cout<<x<<endl;void main() float a,b,c; double x0,e
47、; cout<<"請輸入方程的系數(shù)(a,b,c):" cin>>a>>b>>c; cout<<"請輸入預(yù)估的初始解x0:" cin>>x0; cout<<"請輸入誤差要求(e):" cin>>e; cout<<"該方程的解是:" EQU t(a,b,c); t.fun (x0,e); t.print();四、最大公約數(shù)和最小公倍數(shù)問題2016秋VC01編程題1最大公約數(shù)2最小公倍數(shù)【題目】試定義一個類NUM,
48、求成員數(shù)組所有元素的最大公約數(shù)和最小公倍數(shù)。具體要求如下:(1)私有成員:l int a5, m, n: m為數(shù)組a的最大公約數(shù),n為數(shù)組a的最小公倍數(shù)。(2)公有成員:l NUM(int t, int n): 構(gòu)造函數(shù),用參數(shù)t初始化成員數(shù)組a,參數(shù)n為參數(shù)t中元素的個數(shù)。l int fm(int k): 輔助函數(shù),判斷整數(shù)k是否為成員數(shù)組a的所有元素的公約數(shù),如果是,則返回值1,否則返回值0。l int fn(int k): 輔助函數(shù),判斷整數(shù)k是否為成員數(shù)組a的所有元素的公倍數(shù),如果是,則返回值1,否則返回值0。l void fun( ): 用窮舉法分別求數(shù)組a的最大公約數(shù)和最小公倍數(shù)。
49、l void print( ): 按示例格式輸出成員數(shù)據(jù)a,m和n。(3)在主函數(shù)中用一個數(shù)組對類進(jìn)行測試。輸出示例:數(shù)組: 12 15 18 39 9最大公約數(shù): 3 最小公倍數(shù): 2340【要求】打開T盤中myfc.cpp文件(空文件),編寫后的源程序文件myfc.cpp必須保存在T盤的根目錄下,供閱卷用。答案:#include <iostream>using namespace std;class NUMprivate:int a5,m,n;public:NUM(int t,int n);int fm(int k);int fn(int k); void fun();void
50、 print();NUM:NUM(int t,int n) for(int i=0;i<n;i+) ai=ti; m=1;int NUM:fm(int k) for(int i=0;i<5;i+)if(ai%k!=0) return 0;return 1;int NUM:fn(int k) for(int i=0;i<5;i+)if(k%ai!=0) return 0;return 1;void NUM:fun()int max=a0;int min=a0;for(int i=0;i<5;i+)if(max<ai) max=ai;if(min>ai) min=ai;for(int k=max;k>0;k-)if(fm(k)=1) m=k; break;for(k=min;k+)if(fn(k)=1)n=k;break;void NUM:print() cout<<"數(shù)組:" for(int i=0;i<5;i+) cout<<
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)行業(yè)財務(wù)總結(jié)
- 資本運作的可行性分析計劃
- 《創(chuàng)新與設(shè)計》課件
- 2021年貴州省黔南自治州公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年甘肅省武威市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2022年湖南省郴州市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年江蘇省連云港市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2024年黑龍江省大慶市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 寒假活動計劃
- 會總部領(lǐng)導(dǎo)發(fā)言稿
- 職業(yè)院校技能大賽模塊一展廳銷售裁判情境
- 湖北省部分學(xué)校2023-2024學(xué)年高一上學(xué)期期末數(shù)學(xué)試題(解析版)
- 《活著》讀書分享課件
- 2023-2024學(xué)年四川省成都市錦江區(qū)重點中學(xué)八年級(上)期末數(shù)學(xué)試卷(含解析)
- 農(nóng)業(yè)裝備與機(jī)械化行業(yè)的農(nóng)業(yè)智能制造
- 嚴(yán)重精神障礙患者管理課件
- 杏樹主要病蟲害及其防治方法
- 醫(yī)學(xué)檢驗技術(shù)專業(yè)《臨床實驗室管理》課程標(biāo)準(zhǔn)
- ACL導(dǎo)管維護(hù)三步曲臨床應(yīng)用
- 《計算智能》課件
- 《稀土礦石選礦》課件
評論
0/150
提交評論