首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列程序说明和C++程序,将应填入______处的语句写在答题纸的对应栏内。 [程序8说明] 程序用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额。职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工
阅读下列程序说明和C++程序,将应填入______处的语句写在答题纸的对应栏内。 [程序8说明] 程序用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额。职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工
admin
2007-03-10
51
问题
阅读下列程序说明和C++程序,将应填入______处的语句写在答题纸的对应栏内。
[程序8说明]
程序用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额。职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于。结束。
假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金额800元后的余额作为该月的月应纳税所得额。适用税率如表2-1所示。
上表表明,个人收入所得税是按照超额累计的税率来征收的。
设一个人的月应纳税所得额为K(元),用下面的公式计算其应缴纳的个人所得税额S(元):
若0<K≤500,则S=K×5%;
若500<K≤2000,则S=500×5%+(K-500)×10%;
若2000<K≤5000,则S=500×5%+1500×10%+(K-2000)×15%;
若5000<K≤20000,则S=500×5%+1500×10%+3000×15%+(K-5000)×20%,
……
例如,某人某月收入总额为4100元,减去800元后,应纳税所得额为3300元,其应缴纳的个人所得税额为500×5%+1500×10%+1300×15%=370元。
[程序8]
#include<stdio.h>
#define MaxNum 50
#define BASE 800 / * 免税金额基数 * /
int paylevel[]={0,500,2000,5000,20000,40000,60000,80000,100000,1000001};
int taxPrate[]={5,10,15,20,25,30,35,40,45}; / * 税率表 * /
typedef struct{
int Id; / * 职工的工号 * /
long Salary; / * 职工的工资 * /
}Info;
/ * 查找工号为Id的职工在数组employee中的下标,返回值为0表示没有 * /
int find(int Id,Info employee[],iht m){
int j;
employee[O].Id=Id;
for(j=m; (1) ;j--);
return j;
}
void main(vpid)
{Info employee[MaxNUm+1);
long Wage;
double sum=0,K,S;
int i,j,N=0,Code;
scanf(“%d %Id”,&Code,&Wage); / * 读入职工号、工资或薪金 * /
while(Code>0){
i=find(Code,employee,N);
if(i>0)employee
.Salary+=Wage;
else {(2)
employee[N].Id=Code;employee[N].Salary=Wage;
}
scanf(“%d %”,&Code,&Wage);
}
for(i=1;i<=N;i++){
K=(3); / * 计算月应纳税所得额 * /
S=0; / * 月应纳税额赋初值 * /
if(K>0){
for(j=1;j<=9;j++)
if( (4) ) / * 月应纳税所得额超过第j级 * /
S=S+(Paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100;
else{S=S+( (5) )*taxPrate[j-1]/100;break;}
}
printf(“职工%d应缴纳的个人所得税额:%10.2If\n”,employee
.ld,S);
sum+=S;
}
printf(“全体职工个人所得税总额:%10.2If\n”,sum);
}
选项
答案
(1)employee[j].Id!=Id (2)n=n+1;或者n++;或者++n (3)employee[i].Salary-BASE;或者employee[i].Salary-800 (4)k>paylevel[j] (5)k-paylevel[j-1]
解析
第一个函数find(Id,employee[],m),其功能为查找工号为Id的职工在数组employee中的下标,返回值为0表示没有。
int find(int Id,Info employee[],int m){
int j;
employee[0].Id=Id;
for(j=m; (1) ;j--);
return j;
}
显然,在函数find()中,首先把要查找的Id赋给数组的第一个元素,然后循环从最后一个元素开始查找,所以(1)空应填写循环结束的条件。可能有2种情况,一是在某个记录中找到了要查的Id(根据函数要求,这时要返回Id的职工在数组employee中的下标),二是找遍整个数组都没有找到Id(根据函数要求,这时要返回0),但在循环的前面已经设置了哨兵“employee[0].Id=Id”,所以,循环至多到j=0时就会退出。因此,(1)空应填写 employee[j].Id !=Id。
然后再分析主函数的第一段程序。
Info employee[MaxNum+1];
long wage;
double sum=0,k,s;
int i,j,n=0,code;
seanf(“%d%Id”,&code,&wage); / * 读入职工号、工资或薪金 * /
while(code>O){
i=find(code,employee,n);
if(i>0)employee
.Salary+=wage;
else{
(2) ;
Employee[n].Id=code;employee[n].Salary=wage
}
seanf(“%d%Id”,&code,&wage);
}
这里用code代表职工号,wage代表工资。当输入一个职工的职工号和工资后,就调用find()函数查找该职工是否已经在cmployee[]中,返回值要么是0(表示该职工的信息是第一次录入,则需要在employee[]中增加一个元素,并把刚录入的值记录到该元素),要么大于0(表示该职工的信息已经存入employee[]中,则需要累加该职工的工资收入)。所以,(2)空应填写n++。
当录入的code为一个负数时,上述循环结束,表示所有职工的数据都已经录入完毕。接下来开始计算所得税。计算方法是:从employee[]中逐个取出职工工资数据,按照给定的公式计算并输出该职工的所得税,同时进行累加,求出整个公司的所得税。程序段如下:
for(i=1;i<=n;i++){
k= (3) ; / * 计算月应纳税所得额 * /
s=0; / * 月应纳税额赋初值 * /
if(k>0){
for(j=1;j<=9;j++)
if( (4) ) / * 月应纳税所得额超过第j级 * /
s=s+(paylevel[j]-paylevel[j-1]) * taxPratel[j-1]/100;
else{s=s+( (5) ) * taxPratel[j-1]/100;break}
}
printf(“职工%d应缴纳的个人所得税额:%10.21f\n”,employee[I].Id,s);
sumd+=S,
}
在上面的程序段中,显然,n表示职工总数,s表示当前职工应缴纳的税金,sum表示公司所有职工缴纳的总税金,k表示月应纳税所得额,所以,(3)空应填写k= employee
.Salary-800。
下面讨论所得税的计算问题。从题目说明中给出的计算公式中可以看出,税金的计算是采用逐级累计的方式。根据第(4)空的注释“月应纳税所得额超过第j级”,这说明(4)空是判断当前职工的工资是否超过paylevel[j],所以,(4)空应该填写 k>paylevel[j]。
如果一个职工的月应纳税所得额大于第j级,则其第j—1级收入的全额部分应按适用税率计算税额((paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100);如果一个职工的月应纳税所得额不大于第j级(没有到达第j级),则其第j-1级收入的实际超出部分采用适用税率计算税额。因此,(5)空应填写k-paylevel[j-1]。
需要注意的是,paylevel[]={0,500,2000,5000,20000,40000,60000,80000, 100000,1000001};即程序中设定的级数标准的金额比题目的表格中给出的级数标准金额差1。
转载请注明原文地址:https://kaotiyun.com/show/fzjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Excel中,若A1、A2、A3、A4、A5、A6单元格的值分别为2、4、6、8、10、12,在B1单元格中输入函数“=ABS[MIN(A1:A6)-MAX(A1:A6)]”则B1单元格的值为______。
在Excel中,函数average(a,b,c)表示求a,b,c的______。
把数据从本地计算机传送到远程主机称为______。
在Excel中,设A1单元格中的值为2014-5-24,若在A2单元格中输入日期函数“=DAY(A1)”,按回车键后,则A2单元格中的值为(52)。
常用的统计图表有:柱形图、条形图、折线图、饼图等。下图所示的统计图表类型为__________。
在Excel2007中,设单元格A1中的值为-1,B1中的值为1,A2中的值为0,B2中的值为1,若在C1单元格中输入函数“=IF(AND(A1>0,B1>0),A2,B2)”,按回车键后,C1单元格中的值为______。
某一个PPT文档共有8张幻灯片,现选中第4张幻灯片,改变幻灯片背景设置后,单击“应用”按钮,则______。
Word定时自动保存功能可以()。
(68)________________属于人工智能的应用。
________________不会是信息系统的功能。
随机试题
Someyearsagoindustrieshadmorefreedomthantheyhavenow,andtheydidnotneedtobeascarefulastheymusttoday.Theyd
腱反射和肌紧张的共同点是
多数国家实行的政府采购模式是()。
根据增值税法律制度的规定,下列各项中,不属于视同销售货物行为的是()。
基金监管职责分工的总体要求不包括()。
某家庭购买了一套价格为39万元的住宅,首期付款为房价的30%,余款向银行贷款,贷款期限为10年,贷款年利率为5%,按月等额还款。如果该家庭收入的25%用于还款,则该家庭月收入至少为()元,才能购买上述住宅。
中共中央、国务院发布《关于支持深圳建设中国特色社会主义先行示范区的意见》2019年8月18日全文公布。党和国家做出兴办经济特区重大战略部署以来,深圳经济特区作为我国改革开放的重要窗口,各项事业取得显著成绩,已成为一座充满魅力、动力、活力、创新力的国际化创新
下列关于C++预定义流对象的叙述中,正确的是()。
Christinewasrecentlydiggingthrougholdboxesinherstoreroompreparingtomovetoanewhouse.Inonebox,shecameacross
InsomepartsofLondon,missingabusmeans______foranotherhour.
最新回复
(
0
)