二、簡單應用題
請編寫一個函數inlinelongsum(intn),用遞歸函數完成運算:sum(n)=1*1+2*2+???+n*n,遞歸表達式為sum(n)=sum(n-1)+n2。
注意:部分源程序已存在文件kt10_2.cpp中。
請勿修改主函數main和其他函數中的任何內容,僅在函數sum的花括號中填寫若干語句。
文件kt10_2.cpp的內容如下:
#include
inlinelongsum(intn)
{
}
voidmain()
{ intn;
cout<<"輸入n:";
cin>>n;
cout<<"結果為:"< 【參考答案】 inline long sum(int n) { if(n==1) return 1; else return n*n+sum(n-1); } 【試題解析】 本題考查對遞歸函數掌握的熟練程度。遞歸的終止條件為n=1時,值為1。 三、綜合應用題 使用VC6打開考生文件夾下的工程kt10_3,此工程包含一個源程序文件kt10_3.cpp,其中定義了用于表示雇員信息的CEmployee類與表示公司信息的Company類,但這兩個類的定義并不完整。請按要求完成下列操作。 (1)定義Cemployee類的私有數據成員name(大小為50的字符數組)和pay(double型數據),分別用于記錄雇員姓名和月薪。請在注釋“//**1**”之后添加適當的語句。 (2)完成Company類默認構造函數的定義,該構造函數將n值賦值給私有成員num,并完成指針emp所指的n個Cemployee對象空間的申請,請在注釋“//**2**”之后添加適當的語句。 (3)完成Company類成員函數voidCompany::add(intcode,charname[50],doublepay)的定義,該函數將某一雇員的編號code、姓名name及月薪pay輸入到公司信息中。請在注釋“//**3**”之后添加適當的語句。 (4)完成Company類成員函數voidCompany::print()的定義,使其以"_ispaid_RMBforonemonth"的格式輸出公司內所有員工的月薪信息。請在注釋“//**4**”之后添加適當的語句。 注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。 源程序清單如下: #include #include classCEmployee { public: voidputname(charn[50]){strcpy(name,n);} voidgetname(charn[50]){strcpy(n,name);} voidputpay(doubled){pay=d;} doublegetpay(){returnpay;} private: //**1** }; classCompany { private: CEmployee*emp; intnum; public: Company(intn); voidadd(intcode,charname[50],doublepay); voidprint(); }; Company::Company(intn) { //**2** } voidCompany::add(intcode,charname[50],doublepay) { //**3** } voidCompany::print() { //**4** for(inti=0;i { (emp+i)->getname(c); money=(emp+i)->getpay(); cout< "RMBforonemonth"< voidmain() { Companycom(2); com.add(0,"Jack",200); com.add(1,"Lee",300); com.print(); } 【參考答案】 (1)char name[50]; double pay; (2)num=n; emp=new CEmployee[num]; (3)(emp+code)->putname(name); (emp+code)->putpay(pay); (4)char c[50]; double money; 【試題解析】 本題考查類成員的定義、類成員函數的定義與調用、對象數組的使用。注意指針和動態申請空間new的使用方法。使用指針調用成員應該用"->"符號,new的返回值是指針類型的。 相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |