二、簡單應(yīng)用題
請編寫函數(shù)fun(),其功能是計算并輸出下列多項式值
Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!
例如:從鍵盤輸入15,則輸出為s=2.718282。
注意:部分源程序以存在文件kt17_2.cpp中。
請勿改動主函數(shù)main和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
文件kt17_2.cpp的內(nèi)容如下:
#include<stdio.h>
#include<iostream.h>
doublefun(intn)
{
}
voidmain()
{ int n;
doubles;
cout<<"Inputn:"<<endl;
cin>>n;
s=fun(n);
cout<<"s="<<s<<endl; }
【參考答案】
double fun(int n)
{ double t,sn=1.0;
int i,j;
for(i=1;i<=n;i++)
{ t=1.0;
for(j=1;j<=i;j++)
t*=j;
sn+=1.0/t; }
return sn; }
【試題解析】
本題解法是通過觀察所給的多項式,可以找出該多項式相應(yīng)的數(shù)學(xué)規(guī)律。本題中,多項式是一個累加求和的多項式,并且每一項總是比前一項多乘一個整數(shù),所乘整數(shù)恰好等于每一項的編號,這樣利用循環(huán)語句進(jìn)行階乘、累加就可以實現(xiàn)功能。由于函數(shù)中出現(xiàn)了"/"的運算,所以最終的函數(shù)值要考慮到用double類型。
三、綜合應(yīng)用題
使用VC6打開考生文件夾下的工程kt17_3。此工程包含一個kt17_3.cpp,其中定義了類Letter和Number以及Grid,其中Grid類由Letter類和Number類public派生,但三個類的定義并不完整。請按要求完成下列操作,將程序補充完整。
。1)添加類Letter的帶一個參數(shù)c的構(gòu)造函數(shù),c是char型的數(shù)據(jù),默認(rèn)值為“A”,該函數(shù)把參數(shù)c的值賦給類的保護(hù)成員ch,請在注釋“//**1**”之后添加適當(dāng)?shù)恼Z句。
(2)添加類Number的帶一個參數(shù)n的構(gòu)造函數(shù),n是int型的數(shù)據(jù),默認(rèn)值為0,該函數(shù)把參數(shù)n的值賦給類的保護(hù)成員num,請在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句。
。3)添加派生類Grid構(gòu)造函數(shù)的定義,傳入的參數(shù)為char型的c和int型的n,并將其分別賦值給基類的ch和num,請在注釋“//**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成派生類Grid的友元函數(shù)--"<<"運算符重載的定義,使其以格式"[g.ch,g.num]"輸出,請在注釋“//**4**”之后添加適當(dāng)?shù)恼Z句。
源程序文件kt17_3.cpp清單如下:
#include<iostream.h>
classLetter
{ protected:
charch;
public:
//**1** };
classNumber
{ protected:
intnum;
public:
//**2** };
classGrid:publicLetter,publicNumber
{ public:
//**3**
friendostream&operator<<(ostream&o,Grid&g); };
//**4**
{ o<<"["<<g.ch<<","<<g.num<<"]";
returno; }
intmain()
{ Gridg('C',3);
cout<<"Gridreference:"<<g<<endl;
return0; }
【參考答案】
。1)Letter(char c = 'A') {ch = c;}
(2)Number(int n = 0) {num = n;}
。3)Grid(char c = 'A', int n = 0) : Letter(c), Number(n){}
(4)ostream &operator<<(ostream &o,Grid &g)
【試題解析】
主要考查對類和派生類的構(gòu)造函數(shù)的定義,以及重載為友元的運算符函數(shù)的定義的掌握,其中(3)使用了參數(shù)列表進(jìn)行變量賦值,這是派生類構(gòu)造函數(shù)中經(jīng)常使用的,(4)對于友元函數(shù)在類體外的定義不需要使用作用域符,而ostream類的對象引用可直接使用原來意義的符號“<<”進(jìn)行輸出。
相關(guān)推薦:計算機等級考試二級C++模擬試題15套(上機)北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |