阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的程序代码
- 发布时间:
- 浏览:110
- 来源:大数据
阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的程序代码根据某单位职工的月工资数据文件(名称为 Salary.dat,文本文件) ,通过调用函数 GetIncomeTax 计算出每位职工每月需缴纳的个人所得税额并以文件(名称为IncomeTax.dat ,文本文件)方式保存。 例如,有 4 个职工工资数据的 Salary.dat 内容如下,其中第一列为工号(整数),第2 列为月工资(实数)。 1030001 6200.00 1030002 5800.00 2010001 8500.00 2010010 8000.00 相应地,计算所得 IncomeTax.dat 的内容如下所示,其中第 3 列为个人所得税额: 1030001 6200.00 47.20 1030002 5800.00 35.94 2010001 8500.00 233.50 2010010 8000.00 193.00 针对工资薪金收入的个人所得税计算公式为: 个人所得税额=应纳税所得额×税率-速算扣除数 其中,应纳税所得额=月工资-三险一金-起征点 税率和速算扣除数分别与不同的应纳税所得额对应,如表 3-1 所示。设三险一金为月工资的 19%,起征点为3500元。 例如,某人月工资为 5800元,按规定 19%缴纳三险一金,那么: 其应纳税所得额 X=5800- 5800x19%-3500=1198 元,对应税率和速算扣除数分别 为 3%和 0 元,因此,其个人所得税额为 1198X3%-0=35.94 元。 【C 代码】 include <stdio.h> //起征点 define BASE 3500 //三险一金比例 define RATE 0.19 //声明函数 GetlncomeTax (1) ; int main () { int id; double salary; FILE *fin,*fout; fin = fopen("Salary.dat" ,"r"); if ((2) ) return 0; fout = fopen("IncomeTax.dat" ,"w"); if ((3) ) return 0; while (!feof(fin)) { if (fscanf(fin,“%d%lf”, (4) )!=2) break; fprintf(fout ,“%d %.2lf %.2lf
”,id,salary, (5) ; } fc1ose(fin); fclose(fout); return 0; } double GetlncomeTax(double salary) { double yns_sd; yns_sd = (6) - BASE; /*计算应纳税所得额*/ if (yns_sd<=0) return 0.0; else if (yns_sd<=1500) return yns_sd*0.03; else if (yns_sd<=4500) return yns_sd*0.1 - 105; else if (yns_sd<=9000) return yns_sd*0.2 - 555; else if (yns_sd<=35000) return yns_sd*0.25 - 1005; else if (yns_sd<=55000) return yns_sd*0.3 - 2755; else if (yns_sd<=80000) return yns_sd*0.35 - 5505; return yns sd*0.45 - 13505; } 请帮忙给出正确答案和分析,谢谢!答案
解析