程序设计基础二题库文档格式.docx
《程序设计基础二题库文档格式.docx》由会员分享,可在线阅读,更多相关《程序设计基础二题库文档格式.docx(58页珍藏版)》请在冰豆网上搜索。
A.成员函数的代码段不占用对象的存储空间
B.在类内定义的成员函数的代码段占用对象的存储空间
C.对象所占用的存储空间包括该对象的数据成员空间和成员函数空间
D.同一类的多个不同对象的成员函数对应不同的函数代码段
10.下面对于友元函数描述正确的是()。
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员
C.友元函数破坏了类的封装性和隐藏性
D.友元函数不能访问类的私有成员
11.关于new运算符的下列描述中,()是错的。
A.它可以用来动态创建对象和对象数组
B.使用它创建的对象或对象数组可以使用运算符delete删除
C.使用它创建对象时要调用构造函数
D.使用它创建对象数组时必须指定初始值
12.运算符重载函数不能是()。
A.成员函数B.友元函数C.内联函数D.带默认值参数的函数
二、简答题
1.面向对象程序设计语言有哪些特征?
答:
面向对象程序设计有三个基本特性:
封装、继承和多态。
所谓封装,就是通过定义类并且给类的属性和方法加上访问控制权限来抽象事物的本质特性。
所谓继承,就是在定义一个新的类时,可以先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的功能重新定义,它是代码重用的一种机制。
所谓多态性,就是不同对象收到相同的消息时,产生不同的动作,它是实现“一个接口,多种方法”的一种机制。
2.试比较面向过程程序设计方法和面向对象程序设计方法的区别。
面向过程程序设计是一种以功能为中心、基于功能分解的程序设计方法。
一个过程式程序由一些子过程(函数)构成,每个子程序对应一个子功能,它实现了功能抽象。
子程序描述了一系列的操作,它是操作的封装体。
过程式程序的执行过程体现为一系列的子程序(函数)调用。
在过程式程序中,数据处于附属地位,它独立于子程序,在子程序调用时作为参数传给子程序使用。
面向过程程序设计的特征可以描述为:
程序=算法+数据结构
面向对象程序设计是一种以数据为中心、基于数据抽象的程序设计方法。
一个面向对象程序由一些对象构成,对象是由一组数据及可以作用于其上的一组操作所构成的封装体。
对象的特征由相应的类来描述,一个类可以从其他类继承。
面向对象程序的执行过程体现为各个对象之间相互发送和处理消息。
面向对象程序设计的特征可以描述为:
程序=对象/类+对象/类+…+对象/类
对象/类=数据+操作
三、程序填充题
请将下列程序横线处缺少的部分补上,使其能正确运行。
1、每个考生的考号及10道试题得分依次在一行内输入。
约定未选做的试题得分用负数(一1)标识。
选答试题多于5道题,按前5道题得分评定成绩。
如有不合理的得分或输入错误,程序要求重新输入。
程序以输入的考生考号为负数表示输入结束。
程序输出各考生的考号、总分和成绩等级。
其中成绩等级按如下所示规则评定:
总分
等级
90〜100
A
80〜89
B
70〜79
C
60〜69
D
0〜59
E
程序还对实考人数、各等级得分人数及各试题解答人数与平均得分(保留小数两位)进行统计和输出。
8.include<
iostream>
9.include<
iomanip>
usingnamespacestd;
intmain()
{
constintMAXSCORE=20;
constintQUESTION=10;
constintORDERS=5;
intp[QUESTION]={0,0,0,0,0,0,0,0,0,0};
//p[]数组用于存放考生10道题的得分
intn[QUESTION]={0,0,0,0,0,0,0,0,0,0};
//n[i]数组元素表示第i题的解答人数
ints[QUESTION]={0,0,0,0,0,0,0,0,0,0};
//s[i]数组元素表示第i题的总得分
intf[0RDERS]={0,0,0,0,0};
//f[]数组用于存放各成绩等级的人数
inti,score,c,number,pn=0;
//pn表示实考人数
charflag,ch[120];
char*title[]={"
90--100A”,”80–89”,”70--79C”,”60--69D”,”0--59E”};
while(l)
cout«
nEnternumber&
&
scorel——scorelO\nn;
cin»
number;
if(number==0)
gets(ch);
"
Number=0.Error!
Inputagain!
n«
endl;
continue;
}
;
"
⑴
for(c=0,i=0;
i<
QUESTION&
c==i;
i++)
p[i];
if(p[i]<
=MAXSCORE)
⑵-
if()"
⑶
cout«
Score:
«
p[c]«
>
20.Error!
'
,《endl;
continue;
for(c=0,score=0,i=0;
i<
QUESTION;
if()//(4)
{
C++;
score+=p[i];
n[i]++;
s[i]+=p[i];
}
flag=(score==100)?
A1:
(score<
60)?
;
//(5)
f[]++;
//(6)
pn++;
cout«
MNumber=M«
number«
Score=M«
score«
Mark=n«
flag«
STUDENTS=n«
pn«
endl;
for(i=0;
ORDERS;
i++)
title[i]«
f[i]«
\nQuestionStudentsAverage、n”;
for(i=0;
i++)
if(n[i])
cout«
setw(6)«
i+1«
setw(10)«
n[i];
setprecision(4)«
«
//(7)
else
setw(10)«
n[i]«
”--”《endl;
return0;
2.下列程序是一个简单的计算器模拟程序。
对任意给定的正确四则运算表达式,程序计算结果值并输出。
程序无查错功能,假定所输入的都是正确的四则运算表达式,并且表达式中运算分量为无正负号整数,运算符为“+、一、*、/”,圆括号按常规配对,表达式以字符“二”结束。
程序中,函数指针数组func[]是为了统一加减乘除计算而设置的。
函数getach()的功能是获取表达式的一个合法字符,并将字符存入变量curch,函数getid()的功能是判断刚才输人的字符是操作数还是运算符。
若读入的字符不是数字,要判断一下是哪个运算符,不同的运算符返回不同的值。
函数calO使用了递归算法。
它的功能是:
首先判断已经输入的字符,若是则根据括号优先的原则,先递归调用自己,求出括号里的表达式的值,否则肯定是操作数(假定所输入的都是正确的四则运算表达式,这样一个表达式的开头不是括号就肯定是操作数),将其值从全局变量mim赋给xl。
接着读入一个运算符,若运算符是“)”或“=”,则完成一级运算,返回结果xl。
读入第2个操作数,词上,若读人的字符是“(”,则根据括号优先的原则,先递归调用自己,求出括号里的表达式的值,否则将其值赋给操作数x2。
然后读入第2个运算符。
下一步的操作应当是先读人第3个操作数,再根据opl和op2的优先级决定进行运算opl还是叩2,并将计算结果作为操作数xl或x2,继续后续计算。
循环的结束条件是遇到“)”或“=”,说明一对括号内的计算完成或整个计算结束。
#include<
string.h>
usingnamespacestd;
intmyadd(intx,inty){returnx+y;
intmysub(intx,inty){returnx-y;
intmymul(intx,inty){returnx*y;
intmydiv(intx,inty){returnx/y;
int(*func[])(intx,inty)={myadd,mysub,mymul,mydiv};
intnum,curch};
charchtbl[]=n+-*/()=n;
charcorch[]="
+-*/()=0123456789"
;
intgetach()
inti;
while(l)
curch=getchar();
if(curch==EOF)return-1;
for(i=0;
corch[i]&
curch!
=corch[i];
i++);
if(i<
strlen(corch))break;
returncurch;
intgetid()
if(curch>
='
0*&
curch<
='
9'
)
for(num=0;
curch>
01&
91;
getach())
num=;
//
(1)
return-1;
else
for(i=0;
chtbl[i];
i++