面向对象程序设计期末综合练习三程序填充Word下载.docx
- 文档编号:657109
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:36
- 大小:26.35KB
面向对象程序设计期末综合练习三程序填充Word下载.docx
《面向对象程序设计期末综合练习三程序填充Word下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计期末综合练习三程序填充Word下载.docx(36页珍藏版)》请在冰点文库上搜索。
>
x;
for(i=1;
=10;
p1*=___
(1)_____;
p2*=____
(2)____;
s+=j*p1/p2;
//j的值为(-1)i+1
j=____(3)____;
s<
3.打印出2至99之间的所有素数(即不能被任何数整除的数)。
math.h>
inti,n;
for(n=2;
___
(1)___;
n++){
inttemp=int(sqrt(n));
//求出n的平方根并取整
for(i=2;
___
(2)___;
i++)
if(n%i==0)___(3)___;
if(i>
temp)cout<
n<
'
'
\n'
4.采用辗转相除法求出两个整数的最大公约数。
inta,b;
请输入两个正整数:
a>
b;
while(a<
=0||__
(1)___){cout<
重新输入:
}
while(b){
intr;
r=a%b;
___
(2)___;
___(3)___;
//分别修改a和b的值
a<
//输出最大公约数
5.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。
如输入24时得到的输出结果为“2223”,输入50时得到的输出结果为“255”,输入37时得到的输出结果为“37”。
intx;
请输入一个整数,若小于3则重输:
docin>
while(___
(1)___);
inti=2;
do{
while(___
(2)___){
cout<
x/=i;
}
___(3)___;
}while(i<
x);
if(x!
=1)cout<
(1)
(2)(3)
6.下面函数是求两个整型参数a和b的最小公倍数。
intf2(inta,intb)
inti=2,p=1;
do{
while(a%i==0&
&
___
(1)___){
p*=i;
a/=i;
b/=i;
}while(a>
=i&
___(3)___);
returnp*a*b;
7.在输出屏幕上打印出一个由字符’*’组成的等腰三角形,该三角形的高为5行,从上到下每行的字符数依次为1,3,5,7,9。
inti,j;
___
(1)___;
for(j=1;
j<
=9;
j++)
if(j<
=5-i||___
(2)___)cout<
’’;
else___(3)___;
cout<
8.统计字符串中英文字母个数的程序。
#include<
intcount(charstr[]);
voidmain(){
chars1[80];
cout<
”Enteraline:
”;
cin>
s1;
”count=”<
count(s1)<
intcount(charstr[]){
intnum=0;
//给统计变量赋初值
for(inti=0;
str[i];
i++)
if(str[i]>
=’a’&
str[i]<
=’z’||___
(1)___)
9.主函数调用一个fun函数将字符串逆序。
string.h>
voidmain(){
chars[80];
s;
”逆序后的字符串:
”<
endl;
voidfun(charss[]){
intn=strlen(ss);
___(3)____;
i++){
charc=ss[i];
ss[i]=ss[n–1–i];
ss[n–1–i]=c;
10.从一个字符串中删除所有同一个给定字符后得到一个新字符串并输出。
constintlen=20;
voiddelstr(chara[],charb[],charc);
voidmain(){
charstr1[len],str2[len];
charch;
输入一个字符串:
str1;
输入一个待删除的字符:
ch;
delstr(str1,str2,ch);
str2<
voiddelstr(chara[],charb[],charc)
intj=0;
if(___
(2)___)b[j++]=a[i];
b[j]=___
(2)___;
11.采用指针访问方式从键盘给数组a[N]输入数据,然后对元素值重新按逆序存放并输出。
constintN=8;
inta[N],*p,*q;
for(p=a;
p<
a+N;
p++)___
(1)___;
p=a;
q=a+N-1;
while(p<
q){
intr=*p;
*p=*q;
*q=r;
p<
p++)
*p<
12.从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。
注意二进制数的存放是按照从低位到高位的次序进行的。
输入一个整数:
inta[20],k=0,r;
r=x%2;
a[k++]=r;
x=___
(1)___;
}while(___
(2)___);
for(--k;
k>
=0;
k--)___(3)___;
13.对数组a[n]按升序进行的选择排序算法
voidSelectSort(inta[],___
(1)___)
inti,j,k;
n;
i++){//进行n-1次选择和交换
k=i-1;
for(j=i;
if(a[j]<
a[k])___
(2)___;
intx=a[i-1];
a[i-1]=a[k];
14.对数组a[n]按升序进行的插入排序算法
voidInsertSort(___
(1)___,intn)
inti,j,x;
i++){//进行n-1次循环
x=a[i];
for(j=i-1;
j>
j--)//为x顺序向前寻找合适的插入位置
if(x<
a[j])___
(2)___;
else___(3)___;
a[j+1]=x;
15.对按从小到大排列的有序数组a[n]进行二分查找x的算法,若查找成功返回该元素下标,否则返回-1。
intBinarySearch(inta[],intx)
intlow=0,high=N-1;
//定义并初始化区间下界和上界变量
intmid;
//定义保存中点元素下标的变量
while(low<
=high){
mid=___
(1)___;
if(x==a[mid])___
(2)___;
elseif(x<
a[mid])high=mid-1;
else___(3)___;
return-1;
16.用插入排序方法对table指针数组中size个指针所指向的字符串进行按升序排序的算法。
voidsort(char*table[],intsize){
for(inti=1,___
(1)___;
i++){
char*p=table[i];
for(intj=i-1;
j>
=0;
j--)
if(strcmp(p,table[j])<
0)___
(2)___;
elsebreak;
table[j+1]=___(3)___;
17.假定有定义为“structNODE{intdata;
NODE*next;
};
”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。
voidf5(NODE*&
L,inttable[],intn)
{
if(n<
=0){L=NULL;
return;
L=newNODE;
//生成附加的头结点
inti=0;
NODE*p=L;
while(___
(1)___){
p=p->
next=___
(2)___;
p->
data=___(3)___;
i++;
p->
next=NULL;
//把最后一个结点的指针域置空
p=L;
L=L->
next;
//使L指向链表的第一个带值的结点
deletep;
18.假定有定义为“structNODE{intdata;
”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。
voidf6(NODE*&
L=NULL;
=0)return;
NODE*p;
p=newNODE;
data=___
(2)___;
next=L;
19.假定有定义为“structNODE{intdata;
”,下面算法是依次显示输出以L为表头指针的链表中各结点的值。
voidf7(NODE*L)
{
for(___
(1)___;
p!
=NULL;
___
(2)___)
___(3)___<
20.假定有定义为“structNODE{intdata;
”,下面算法是把以L为表头指针的链表中各结点依次按相反次序链接并返回新链表的表头指针。
NODE*f8(NODE*L)
if(L==NULL)returnNULL;
NODE*p=NULL,*q=L,*t;
while(q!
=NULL){
t=q;
q=___
(1)___;
t->
p=t;
21.已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:
其重载的运算符[]要对下标是否越界进行检查。
classARRAY{
int*v;
//指向存放数组数据的空间
ints;
//数组大小
public:
ARRAY(inta[],intn);
~ARRAY(){delete[]v;
intsize(){returns;
}
int&
operator[](intn);
___
(1)___operator[](intn)//[]的运算符成员函数定义
0||___
(2)___){cerr<
下标越界!
exit
(1);
return___(3)___;
22.已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。
___
(1)___ARRAY(inta[],intn)
=0){v=NULL;
s=0;
return;
s=n;
v=___
(2)___;
i<
i++)___(3)___;
23.下面是一维数组类ARRAY的定义,ARRAY与普通一维数组区别是:
(a)用()而不是[]进行下标访问,
(2)下标从1而不是从0开始,(c)要对下标是否越界进行检查。
operator()(intn);
___
(1)___operator()(intn)
{//()的运算符函数定义
if(___
(2)___){cerr<
24.已知一个类的定义如下:
classAA{
inta[10];
intn;
voidSetA(intaa[],intnn);
//用数组aa初始化数据成员a,
//用nn初始化数据成员n
intMaxA();
//从数组a中前n个元素中查找最大值
voidSortA();
//采用选择排序的方法对数组a中前n个元素
//进行从小到大排序
voidInsertA();
//采用插入排序的方法对数组a中前n个元素进行从小到大排序
voidPrintA();
//依次输出数组a中的前n个元素
该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。
int____
(1)_____
intx=a[0];
for(inti=1;
i++)
if(a[i]>
x)___
(2)___;
25.已知一个类的定义如下:
voidAA:
:
SortA()
for(i=0;
intx=a[i],k=i;
for(j=i+1;
j<
j++)
x)___
(2)___
a[k]=a[i];
26.已知一个类的定义如下:
void___
(1)___
intx=a[i];
j--)
27.已知一个类的定义如下:
//最后输出一个换行
使用该类的主函数如下:
voidmain()
inta[10]={23,78,46,55,62,76,90,25,38,42};
AAx;
intm=___
(2)___;
m<
该程序运行结果为:
237846556276
78
28.已知一个类的定义如下:
//依次输出数组a中的前n个元素,
x.SetA(a,8);
int___
(2)___;
x.PrintA();
2325465562767890
90
29.已知一个利用数组实现栈的类定义如下:
constintARRAY_SIZE=10;
classStack{
voidInit(){top=-1;
}//初始化栈为空
voidPush(intnewElem);
//向栈中压入一个元素
intPop();
//从栈顶弹出一个元素
boolEmpty(){//判栈空
if(top==-1)returntrue;
elsereturnfalse;
intDepth(){returntop+1;
}//返回栈的深度
voidPrint();
//按照后进先出原则依次输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 期末 综合 练习 程序 填充
![提示](https://static.bingdoc.com/images/bang_tan.gif)