b[n-i-1]=a[i];
}
4、struct StrNode {
char name[15]; // 字符串域
StrNode * next; // 指针域
};
void QB(StrNode * & f ,int n) {
if (n==0) { f=NULL; return; }
f=new StrNode;
cin >>f->name;
StrNode * p=f;
while (--n) {
p=p->next=new StrNode;
cin >>p->name;
}
p->next=NULL;
}
五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:
xxk1.dat”中。
(10分)
一、单选题(每小题1分,共6分)
评分标准:
选对者得1分,否则不得分。
1、A 2、A 3、C 4、C 5、B 6、B
二、填空题(每小题2分,共24分)
评分标准:
每题与参考答案相同者得2分,否则不得分。
1、 :
} 2、 C
3、 4 8 4、 x+y<=5
5、 8 32
6、 局部 7、 *(a[i]+j) 或 *(*(a+i)+j)
8、 20 9、 初始化表 函数体
10、 10 11、 AB:
:
bb
三、给出下列程序运行后的输出结果(每小题6分,共36分)
评分标准:
每题与参考答案的数据和显示格式完全相同者得6分,否则酌情给分。
1、 good!
pass!
bad!
well!
2、 worker cadre
3、 10 20
15 35 5
10 20
4、 b=240
5、 liouting 38 493
6、 Destructor B!
7
Destructor A!
6
Destructor B!
0
Destructor A!
5
四、写出下列每个函数的功能(每小题6分,共24分)
评分标准:
每题与参考答案的叙述含义相同者得6分,否则酌情给分。
1、比较两个整数a和b的大小,若a>b则返回1,若a= =b则返回0,若a
2、求出从键盘上输入的n个常数的平方和并返回。
3、模板函数,把数组a的每个元素按逆序放入数组b中。
4、建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。
五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:
xxk1.dat”中。
(10分)
评分标准:
见参考程序中的注释。
# include // 使用此命令得1分
# include
# include
void main() {
ofstream fout("a:
xxk1.dat"); // 定义输出文件流并打开文件得2分
if (!
fout){
cerr <<"文件没有打开!
"< exit
(1);
} // 可有可无
int x;
cin >>x;
while (x!
=-1) {
fout < cin >>x;
} // 能够从键盘向文件正确输出数据得6分
fout.close(); // 关闭输出文件流得1分
}
复习题二及参考答案
一、填空题
1.C++源程序文件的缺省扩展名为________。
2.程序的三种基本控制结构是:
顺序结构、结构、___________结构。
3.在C++程序中,当函数调用在前、函数定义在后时,则应在主调函数中,在调用前增加对被调函数的___________说明。
4.在调用具有数组参数的函数时,须以作为实在参数。
5.函数递归调用指的是,在函数定义的函数体中又出现直接或间接地调用。
6.C++依据调用中实在参数在上或上的不同来确定调用的是重载函数的哪一个。
7.在函数外定义的变量称为变量。
8.字符串常量是用括起来的字符序列,在字符串的末尾有一个结束标志。
9.当撤消一个含有基类和类对象成员的派生类对象时,将首先完成____________的析构函数定义体的执行,接着完成________________的析构函数定义体的执行,最后完成____________的析构函数定义体的执行。
10.设px是指向一个类动态对象的指针变量,则执行”deletepx;”语句时,将自动调用该类的____________。
(2分)
11.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为________。
(2分)
12.假定a为一个整型数组名,则元素a[4]的字节地址为_______。
(2分)
13.假定一个结构类型的定义为“structD{inta;union{intb;doublec;};D*d[2];};”,则该类型的大小为________字节。
(2分)
14.假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为____________________________。
(2分)
二、写出下列表达式的值及运算过程
1.设x=2.5,y=4.7,a=7,b=2:
计算表达式x+a%3+(int)y/(int)x的值
2.设x=2.5,y=4.7,a=7,b=2:
计算表达式!
(a>b)||x>y的值
3.设a=1,b=-2,c=1:
计算表达式
x=(d=b*b-4*a*c,(d==0)?
-b/(2*a):
-b/(2*a)+sqrt(d)/(2*a))的值
4.设有变量说明inta=4,b=2,x=3,y=0:
计算表达式(--a<++b)&&(x5.inta=1,&b=a,*p=&a,y:
计算表达式y=(a+=b,b+=*p,*p+a)的值
6.设:
inta[5]={10,20,30,40,50};int*p=&a[0];计算表达式++*p+*(a+3)的值。
三、读程序,并将运行结果写在对应输出语句的后面
1.#include
voidmain()
{inta[6]={0,1,2,3,4,5};
inti=0;
for(i=0;i<6;i++)
{
if(i%2==0)a[i]=a[i]+1;
elsea[i]=a[i]+2;
cout<}
}
2.#include
voidf(int&a,int&b)
{
intt=a;a=b;b=t;
}
voidmain()
{
intx=10,y=15;
f(x,y);
cout<}
3.#include
voidmain()
{inti=10;
switch(i)
{case9:
i++;
case10:
++i;
case11:
i++;
default:
i=i+1;
}
cout<
}
4.#include
#include
structWorker{
charname[15];//姓名
intage;//年龄
floatpay;//工资
};
voidmain(){
Workerx;
char*t="WeiRong";
intd=45;floatf=1235;
strcpy(x.name,t);
x.age=d;x.pay=f;
cout<}
四、编程题
1.设计一程序,它输入10个整数到一个数组中,调整这10个整数在数组中的排列位置,使得其中最大的一个数成为数组的首元素,最小的一个数成为数组的末元素。
2.用递归方法设计函数intarraymin(intd[],intsize);其中d 为数组,size为数组元素个数;arraymin返回d中的最小元素。
3.定义描述圆柱体的结构体类型Cylinder,该结构体类型的数据成员为圆柱体底半径r与高h。
编写函数Volume()计算出圆柱体的体积。
在主函数中定义圆柱结构体变量,输入圆柱