《面向对象程序设计期末综合练习三(程序填充)资料.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计期末综合练习三(程序填充)资料.doc(24页珍藏版)》请在三一办公上搜索。
1、面向对象程序设计期末综合练习三(程序填充)1. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。#includevoid main() int f,f1,f2,i; cout” 斐波那契数列:n”; f1=0; f2=1; coutsetw(6)f1setw(6)f2; for(i=3;i=20;i+) f=_(1)_; coutsetw(6)f;if(_(2)_) coutendl;f1=f2;f2=_(3)_; coutendl; (1) (2) (3) 2. 计算的值。 #include void m
2、ain() double x,p1=1,p2=1,s=0; int i,j=1; coutx; for(i=1;i=10;i+) p1*=_(1)_; p2*=_(2)_; s+=j*p1/p2; /j的值为(-1)i+1 j=_(3)_; coutsendl; (1) (2) (3) 3. 打印出2至99之间的所有素数(即不能被任何数整除的数)。 #include #include void main() int i,n; for(n=2; _(1)_; n+) int temp=int(sqrt(n); /求出n的平方根并取整 for(i=2; _(2)_; i+) if(n%i=0) _
3、(3)_; if(itemp) coutn ; coutn; (1) (2) (3) 4. 采用辗转相除法求出两个整数的最大公约数。 #include void main() int a,b; coutab; while(a=0 | _(1)_) coutab; while(b) int r; r=a%b; _(2)_; _(3)_; /分别修改a和b的值 coutaendl; /输出最大公约数 (1) (2) (3) 5. 把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到的输出结果为“2 5 5”,输入37时得到的输出结果
4、为“37”。 #include void main() int x; coutx; while(_(1)_); int i=2; do while(_(2)_) couti ; x/=i; _(3)_; while(ix); if(x!=1) coutx; cout=i & _(3)_); return p*a*b; (1) (2) (3) 7. 在输出屏幕上打印出一个由字符*组成的等腰三角形,该三角形的高为5行,从上到下每行的字符数依次为1,3,5,7,9。 #include void main() int i,j; for(i=1;_(1)_;i+) for(j=1;j=9;j+) if(
5、j=5-i | _(2)_) cout ; else _(3)_; coutendl; (1) (2) (3) 8. 统计字符串中英文字母个数的程序。 #include int count (char str); void main() char s180; cout s1; cout ”count=”count(s1)=a & stri=z |_(1)_ ) _(2)_; _(3)_; (1) (2) (3) 9. 主函数调用一个fun函数将字符串逆序。 #include #include _(1)_; void main( ) char s80; cins; _(2)_; cout”逆序后
6、的字符串:”sendl ; void fun(char ss) int n=strlen(ss); for(int i=0; _(3)_; i+) char c=ssi; ssi=ssn1i; ssn1i=c; (1) (2) (3) 10. 从一个字符串中删除所有同一个给定字符后得到一个新字符串并输出。 #include const int len=20; void delstr(char a,char b,char c); void main() char str1len,str2len; char ch; coutstr1; coutch; delstr(str1,str2,ch); c
7、outstr2endl; void delstr(char a,char b,char c) int j=0; for(int i=0; _(1)_; i+) if(_(2)_) bj+=ai; bj=_(2)_; (1) (2) (3) 11. 采用指针访问方式从键盘给数组aN输入数据,然后对元素值重新按逆序存放并输出。 #include const int N=8; void main() int aN,*p,*q; for(p=a; pa+N; p+) _(1)_; p=a;q=a+N-1; while(pq) int r=*p; *p=*q; *q=r; _(2)_; _(3)_; f
8、or(p=a;pa+N; p+) cout*p ; coutendl; (1) (2) (3) 12. 从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。注意二进制数的存放是按照从低位到高位的次序进行的。 #include void main() int x; coutx; int a20,k=0,r; do r=x%2; ak+=r; x=_(1)_; while(_(2)_); for(-k;k=0;k-) _(3)_; coutendl; (1) (2) (3) 13. 对数组an按升序进行的选择排序算法 void SelectSort(int
9、 a, _(1)_) int i,j,k; for(i=1;in;i+) /进行n-1次选择和交换 k=i-1; for(j=i;jn;j+) if(ajak) _(2)_; int x=ai-1; ai-1=ak; _(3)_; (1) (2) (3) 14. 对数组an按升序进行的插入排序算法 void InsertSort(_(1)_, int n) int i,j,x; for(i=1;i=0;j-) /为x顺序向前寻找合适的插入位置 if(xaj) _(2)_; else _(3)_; aj+1=x; (1) (2) (3) 15. 对按从小到大排列的有序数组an进行二分查找x的算法
10、,若查找成功返回该元素下标,否则返回-1。 int BinarySearch(int a,int x) int low=0, high=N-1; /定义并初始化区间下界和上界变量 int mid; /定义保存中点元素下标的变量 while(low=high) mid=_(1)_; if(x=amid) _(2)_; else if(x=0 ; j-) if(strcmp(p,tablej)0) _(2)_; else break; tablej+1=_(3)_; (1) (2) (3) 17. 假定有定义为“struct NODEint data; NODE* next;”,下面算法根据tab
11、le数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。void f5(NODE*& L, int table, int n) if(n=0) L=NULL; return;L=new NODE; /生成附加的头结点int i=0; NODE* p=L;while(_inext=_new NODE_;p-data=_tablei_;i+;p-next=NULL; /把最后一个结点的指针域置空p=L;L=L-next; /使L指向链表的第一个带值的结点delete p;(1) (2) (3) 18. 假定有定义为“struct NODEint data; NOD
12、E* next;”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。void f6(NODE*& L, int table, int n) L=NULL;if(n=0) return;int i=0; NODE* p;while(_idata=_tablei_;p-next=L;_L=p_;i+;void main()NODE *head;int a=1,2,3,4,5;f6(head,a,5);while(head)coutdatanext;coutendl;(1) (2) (3) 19. 假定有定义为“struct NODEi
13、nt data; NODE* next;”,下面算法是依次显示输出以L为表头指针的链表中各结点的值。void f7(NODE* L)for(_(1)_; p!=NULL; _(2)_)cout_(3)_ ;coutnext=_(2)_;p=t;_(3)_;(1) (2) (3) 21. 已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符 要对下标是否越界进行检查。class ARRAY int *v; /指向存放数组数据的空间int s; /数组大小 public: ARRAY(int a, int n); ARRAY()delete v; int size()
14、 return s; int& operator(int n); ;_(1)_ operator(int n) / 的运算符成员函数定义if(n0 | _(2)_) cerr下标越界!; exit(1); return _(3)_;(1) (2) (3) 22. 已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。class ARRAY int *v; /指向存放数组数据的空间int s; /数组大小 public: ARRAY(int a, int n); ARRAY()delete v; int s
15、ize() return s; int& operator(int n); ;_(1)_ ARRAY(int a, int n)if(n=0) v=NULL;s=0;return;s=n;v=_(2)_;for(int i=0; in; i+) _(3)_;(1) (2) (3) 23. 下面是一维数组类ARRAY的定义,ARRAY与普通一维数组区别是:(a)用()而不是进行下标访问,(2)下标从1而不是从0开始,(c)要对下标是否越界进行检查。class ARRAY int *v; /指向存放数组数据的空间int s; /数组大小 public: ARRAY(int a, int n); A
16、RRAY()delete v; int size() return s; int& operator()(int n); int& ARRAY: operator()(int n) / ()的运算符函数定义 if(ns) cerr下标越界!; exit(1); return vn-1;(1) (2) (3) 24. 已知一个类的定义如下:#includeclass AA int a10;int n;public:void SetA(int aa, int nn); /用数组aa初始化数据成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void Sor
17、tA(); /采用选择排序的方法对数组a中前n个元素 /进行从小到大排序 void InsertA();/采用插入排序的方法对数组a中前n个元素进行从小到大排序void PrintA(); /依次输出数组a中的前n个元素; 该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。int AA:MaxA() int x=a0;for(int i=1; ix) x=ai;return x;(1) (2) (3) 25. 已知一个类的定义如下:#includeclass AA int a10;int n;public:void SetA(int aa, int nn); /用数组aa初始化数据
18、成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void SortA(); /采用选择排序的方法对数组a中前n个元素 /进行从小到大排序 void InsertA();/采用插入排序的方法对数组a中前n个元素进行从小到大排序void PrintA(); /依次输出数组a中的前n个元素;void AA:SortA()int i,j;for(i=0; in-1; i+) int x=ai, k=i;for(j=i+1; jn; j+)if(ajx) x=aj; k=j;ak=ai;ai=x;(1) (2) (3) 26. 已知一个类的定义如下:#incl
19、udeclass AA int a10;int n;public:void SetA(int aa, int nn); /用数组aa初始化数据成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void SortA(); /采用选择排序的方法对数组a中前n个元素 /进行从小到大排序 void InsertA();/采用插入排序的方法对数组a中前n个元素进行从小到大排序void PrintA(); /依次输出数组a中的前n个元素;void AA:InsertA() int i,j;for(i=1; i=0; j-)if(xaj) aj+1=aj;else
20、break;aj+1=x;(1) (2) (3) 27. 已知一个类的定义如下:#includeclass AA int a10;int n;public:void SetA(int aa, int nn);void AA:SetA(int aa,int nn)n=nn;for(int i=0;in;i+)ai=aai; /用数组aa初始化数据成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void SortA(); /采用选择排序的方法对数组a中前n个元素 /进行从小到大排序 void InsertA();/采用插入排序的方法对数组a中前n个元素进
21、行从小到大排序void PrintA(); void AA:PrintA()for(int i=0;in;i+)coutai ;coutendl; /依次输出数组a中的前n个元素 /最后输出一个换行; 使用该类的主函数如下:void main()int a10=23,78,46,55,62,76,90,25,38,42;AA x; x.SetA(a,6);int m= x.MaxA();x.PrintA();coutmendl; 该程序运行结果为:23 78 46 55 62 76/ x.PrintA()只输出6个数,所以(1)只能是x.SetA(a,6)78(1) (2) (3) 28. 已
22、知一个类的定义如下:#includeclass AA int a10;int n;public:void SetA(int aa, int nn); /用数组aa初始化数据成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void SortA(); /采用选择排序的方法对数组a中前n个元素 /进行从小到大排序void PrintA(); /依次输出数组a中的前n个元素, /最后输出一个换行; 使用该类的主函数如下:void main()int a10=23,78,46,55,62,76,90,25,38,42;_(1)_; x.SetA(a,8);in
23、t _(2)_;_(3)_;x.PrintA(); coutmendl; 该程序运行结果为:23 25 46 55 62 76 78 9090(1) (2) (3) 29. 已知一个利用数组实现栈的类定义如下:const int ARRAY_SIZE=10;class Stack public:void Init() top=-1; /初始化栈为空 void Push(int newElem); /向栈中压入一个元素int Pop(); /从栈顶弹出一个元素bool Empty() /判栈空 if(top=-1) return true;else return false;int Depth(
24、) return top+1; /返回栈的深度void Print(); /按照后进先出原则依次输出栈中每个元素,直到栈空为止private:int elemARRAY_SIZE; /用于保存栈元素的数组int top; /指明栈顶元素位置的指针;void Stack:Push(int newElem) if(_(1)_) cout栈满!endl;exit(1); /中止运行_(2)_;elemtop=_(3)_;(1) (2) (3) 30. 已知一个利用数组实现栈的类定义如下:const int ARRAY_SIZE=10;class Stack public:void Init() to
25、p=-1; /初始化栈为空 void Push(int newElem); /向栈中压入一个元素int Pop(); /从栈顶弹出一个元素bool Empty() /判栈空 if(top=-1) return true;else return false;int Depth() return top+1; /返回栈的深度void Print(); /按照后进先出原则依次输出栈中每个元素,直到栈空为止private:int elemARRAY_SIZE; /用于保存堆栈元素的数组int top; /指明栈顶元素位置的指针; 该类的Pop和Print函数的实现分别如下:_(1)_ if(top=-1) cout栈空!endl;exit(1); /中止运行return _(2)_;void Stack:Print() while(!Empty() cout_(3)_ ;(1) (2) (3)31class A int a; public: A() a=0; _(1)_ /定义构造函数,用参数aa初始化数据成员a ; main() _(2)_; /定义类A的指针对象p _(3)_; /用p指向动态对象并初始化为整数5 (1) (2) (3)32class A char *a; pub
链接地址:https://www.31ppt.com/p-1614398.html