软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2015年上半年程序员考试下午真题试题(案例分析)
考试中心《2015年上半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2015年上半年
试题题型【分析简答题】
试题内容

阅读以下说明和 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         //三险一金比例
       (1)      ;               //声明函数 GetlncomeTax
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\t%.2lf\t%.2lf\n”,id,salary,     (5)    ;
                    }
                    fclose(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;
}


相关试题

推荐文章
合作网站内容