题库 题库

【简答题】

请使用VC6或使用【答题】菜单打开考生文件夹prosS下的工程pr093,其中包含了类TaxCaleulator(“个税计算器”)和主函数main的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在main函数中,通过两个数组创建了如下的税率表:

利用这个税率表创建“个税计算器”时,假定起征额为2 000元(即不超过2 000元的所得不征收个人所得税)。请补充完成计算应纳个人所得税额的成员函数getTaxPayable,其中的参数income为月收入。此程序的正确输出结果应为:
月收入为800元时应缴纳个人所得税0元
月收入为l 800元时应缴纳个人所得税0元月收入为2 800元时应缴纳个人所得税 55元 月收入为3 800元时应缴纳个人所得税l55元
月收入为4 800元时应缴纳个人所得税295元月收入为5 800元时应缴纳个人所得税455元
注意:只能在函数9etTaxPayable中的“//**********333**********”和“//**********666**********”之间
填人若干语句,不要改动程序中的其他内容。 //Tax Calculator.h #include #include
using flamespace std; class TaxCalculator{ public:
TaxCalculator(double the—limits[],double the_rates[],int the—length,double the_threshold) :lower_limits(new double[the_length]),rates(new double[the—length]),
list_len(the_length),threshold(the—threshold){ for(int i=0;i<LIST—LEN;I++){
lower_limits[i]=the_limits[i]; rates[i]=the_rates[i];
} f
—TaxCalculator(){delete[]lower_limits;delete[]rates;}
double getTaxPayable(double income)eonst;//返回指定月收入的应纳个人所得税额 void showTaxPayable(double income)const;//显示指定月收入的应纳个人所得税额 private:
double$lower—limits;//适用收入段下限 double *rates; //适用税率
int list—len;//税率表项数
double threshold; //起征额 };
void writeToFile(consl char * path); //TaxCalcnlator.cpp
‘#include”TaxCalculator.h”
double TaxCalculator::getTaxPayable(double income)const{ double taxable=income—threshold;
//应纳税工资额
double tax_payable=0.0; //应纳个人所得税额
int i=list_len-1;
//从税率表的最高适用段开始计算 while(i>=0){
//**********333**********
//**********666**********
--i; }
return tax_payable;
} void TaxCalculator::showTaxPayable(double income)const{
cout<<”月收入为”<<SETW(6)<<INCOME<<”元时应缴纳个人所得税”&NBSP;&NBSP;&NBSP;
<<setw(4)<<getTaxPayable(income)<<”元”< }
//main.cpp
#include”TaxCalculator.h” int main(){
double limits[]={0.0,500.0,2000.0,5000.0,20000.0,40000.0,60000.0,80000。0,100000.0}; double rates[]={0.05,0.1,0.15,0.2,0.25,0.3,O.35,0.4,0.45};
TaxCaleulator calc(1imits,rates,9,2000.0); calc.showTaxPayable(800.0);
calc.showTaLPayable(1800.0); cale.showTaxPayable(2800.0); calc.showTaxPayable(3800.0); calc.showTaxPayable(4800.0); eaie.showTaxPayable(5800.0); writeToFile(””);
return 0;
}

参考答案

iF F inComE<=2000)//如果收入小于2000
return tax—payable;
//直接tex—payable(初始代为零)
i“taxable>lower_limits[i]){
//如果taxable(收入超出起征额的部分)大于lower—limits
[i]阶段最低限额
tax_payable+=(taxable-lower-limits[i])*
rates[i]:
//把起过阶段最低限额的部分乘以该阶段的税率后,加到tax_payable(个人所得税)
taxable=lower_limits[i];
//把fower_limits[i]赋值于taxable
}

相关试题

单选题 由于常对象不能被更新,因此(  )。 查看答案
单选题 下列情况中,不会调用拷贝构造函数的是(  )。 查看答案
单选题 为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。 查看答案
单选题 软件设计中划分模块的一个准则是( )。 查看答案
单选题 有如下程序段:
int i=0,J=1;
nt&r=i;//④ ’ r=j;//②
int * P=&i;//③ * P=&r;//④
其中会产生编译错误的语句是(  )。
查看答案
单选题 下列关于C++预定义流对象的叙述中,正确的是( )。 查看答案
单选题 如下函数模板:
templateT square(T x){return x*x;} 其中T是(  )。
查看答案
单选题 有如下类定义:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是(  )。
查看答案
单选题 有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<’A’;}
Base(char C){cout<<C;}
};
class Derived:public Base{
public:
Derived(char C){tout<<C;}
};
int main(){
Derived dl(’B’);
retum 0;
}
执行这个程序的输出结果是(  )。
查看答案
单选题 执行下列语句段后,输出字符“*”的个数是(  )。
for(int i=50;i>1;--i) Cout<<'*':
查看答案
单选题 支持子程序调用的数据结构是(  )。 查看答案
单选题 已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是( )。 查看答案
单选题 下列数据结构中,能够按照“先进后出”原则存取数据的是( )。 查看答案
单选题 下面的程序中,错误的语句是(  )。
①#inClude
②void main()
③{
④ int *p=new int[1];
⑧P=9;
⑥cout<<.*P<
⑦delete[]p;
⑧}
查看答案
单选题 有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get(){return m;}
int get()const{return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
tout<<A.GET()’<
return U:
}
执行这个程序的输出结果是(  )。
查看答案
单选题 当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。 查看答案
单选题 下面关于运算符重载的描述错误的是( )。 查看答案
单选题 C++中的模板包括(  )。 查看答案
单选题 下列运算符不能重载为友元函数的是( )。 查看答案
单选题 有三个关系R、S和T如下

由关系R和s通过运算得到关系T,则所使用的运算为( )。
查看答案