⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8-2-25.c

📁 2005软件工程师考试下午编程题源代码
💻 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 + -