阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说

admin2022-08-02  8

问题 阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】下面的程序代码根据某单位职工的月工资数据文件(名称为 Salary.dat,文本文件) ,通过调用函数 GetIncomeTax  计算出每位职工每月需缴纳的个人所得税额并以文件(名称为IncomeTax.dat ,文本文件)方式保存。例如,有 4 个职工工资数据的 Salary.dat 内容如下,其中第一列为工号(整数),第2 列为月工资(实数)。相应地,计算所得 IncomeTax.dat  的内容如下所示,其中第 3 列为个人所得税额:针对工资薪金收入的个人所得税计算公式为:个人所得税额=应纳税所得额×税率-速算扣除数其中,应纳税所得额=月工资-三险一金-起征点税率和速算扣除数分别与不同的应纳税所得额对应,如表 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)      ;               //声明函数 GetlncomeTaxint 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;}

选项

答案

解析 (1)  double GetIncomeTax(double salary"或 double GetlncomeTax(double)
(2)  !fin 或 fin==NULL 或 fin==0
(3)  !fout 或fout==NULL 或fout==0
(4) &id,&salary
(5) GetIncomeTax(salary)
(6) salary *(l-RATE)或等价形式
注: RATE 可替换为 0.19

本题考查 C 语言程序设计基本技能。考生需认真阅读题目中的说明,以便理解问题并确定代码的运算逻辑,在阅读代码时,还需注意各变量的作用。
根据注释,空(1)处应填入  "double   GetIncomeTax(double    salary)"   或"double GetIncomeTax(double)",对函数GetIncomeTax  进行声明。
空 (2)、(3)处所在的代码是判断文件打开操作是否成功,因此应分别填入"!fin"、 "!fout"。
根据说明可知,变量 id 和 salary分别表示工号和月工资数。
空 (4)处所在语句为从文件中读取数据的操作,从 fscanf 的格式控制串可知读取的 两个数是整数和双精度浮点数,则输入表列的两个变量分别为接收整数值的变量 id 和接收整数值的变量 salary ,因此空(4)  应填入"&id,&salary"
空 (5)处所在代码向fout 关联的文件写入计算出的所得税额,显然需调用函数
GetlncomeTax 来计算,因此应填入" GetIncomeTax(salary)" 。
空 (6)处的代码计算应纳税所得额,根据说明中给出的计算公式及三险一金的计 算方法:
应纳税所得额=月工资-三险一金-起征点
空 (6)  处应填入" salary *(1-RATE) "。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2427177.html

最新回复(0)