📄 8-2-25.c
字号:
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/
#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[],int m) {
int j;
employee[0].Id = Id;
for(j=m;employee[j].Id != Id;j--);
return j;
}
void main(void){
Info employee[MaxNum+1];
long wage;
double sum = 0,k,s;
int i,j,n = 0,code;
scanf("%d%ld",&code,&wage); /*读入职工号、工资或薪金*/
while(code>0) {
i = find(code,employee,n);
if(i>0) employee[i].Salary += wage;
else {
++n;
employee[n].Id=code;employee[n].Salary=wage;
}
scanf("%d%ld",&code,&wage);
}
for(i=1;i<=n;i++) {
k = employee[i].Salary-BASE ; /*计算月应纳税所得额*/
s = 0; /*月应纳税额赋初值*/
if(k>0) {
for(j=1;j<=9;j++)
if(k>paylevel[j]) /*月应纳税所得额超过第j级*/
s = s+(paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100;
else {
s = s+(k-paylevel[j-1])*taxPrate[j-1]/100;break;
}
}
printf("职工%d应缴纳的个人所得税额:%10.21f\n",employee[i].Id,s);
sum += s;
}
printf("全体职工个人所得税总额:%10.21f\n",sum);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -