试题一
阅读下列程序说明和C程序,将应填入__(n)__处的字句写在答题纸的对应栏内。
[程序8说明]
程序8用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额。职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于0结束。
假设个人所得税法规定;个人收入所得,按月计税,以每月收入总额减除免税金额800元后的余额作为该月的月应纳税所得额,适用税率如下表所示。
级数 | 月应纳税所得额 | 适用税率(%) |
1 2 3 4 5 6 7 8 9 | 不超过500元的部分 501元~2000元的部分 2001元~5000元的部分 5001元~20000元的部分 20001元~40000元的部分 40001元~60000元的部分 60001元~80000元的部分 80001元~100000元的部分 超过100000元的部分 | 5 10 15 20 25 30 35 40 45 |
上表表明,个人收入所得税是按照超额累进的税率来征收的。
设一个人的月应纳税所得额为K(元),用下面的公式计算其应缴纳的个人所得税额S(元):
若0<k≤500,则s=k×5%;< p="">
若500<k≤2000,则s=500×5%+(k—500)×10%:< p="">
若2000<k≤5000,则s=500×5%+1500×10%+(k-2000)×15%:< p="">
若5000<k≤20000,则s=500×5%+1500×10%+3000×15%+(k-5000)×20%:< p="">
例如,某人某月工资总额为4100元,减去800元后,应纳税所得额为3300元,其应缴纳的个人所得税额为500*5%+1500*10%+1300*15%=370元。
[程序8]
#include #define MaxNum 50 #define BASE 800 /*免税金额基数*/ int paylevel[]={0,500,2000,5000,20000,40000,60000,80000,100000,100000¨: int taxPrate[]={5,10,15,20,25,30,35,40,45): /*税率表*/ typedef struct{ int ld; /*职工的工号*/ . long Salary; /*职工的工资*/ }Info; /* 查找工号为Id的职工在数组employee中的下标,返回值为0表示没有 */ int find(int ld,Info employee[],int m){ int j; employee[0].Id=Id; for(j=m;__(1)__;j--); return j; } void main(void) { Info employeeCHaxNum+1]; long Wage; double sum s 0,K,S: int i,j,N=0,Code; scanf("M%ld",&Code,&Wage); /*读入职工号、工资或薪金*/ while(Code>0) { i=find(Code,employee,N); if (i>0)employee[i].Salary += Wage: else{ __ (2)__; employee[N].Id=Code;employee[N].Salary=Wage; } scanf("%d%ld",&Code,&Wage): } for (i=1;i<=n;i++){ k="" if=""> 0) { for (j=1;j<=9;j++) if(__(4)__) /*月应纳税所得额超过第j级*/ S=S+(paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100; else{ S=S+(__ (5)__)*taxPrate[j-1]/100;break;} } printf("职工%d应缴纳的个人所得税额:%10.21f ",employee[i].Id,S); sum += S; } printf("全体职工个人所得税总额:%10,21f ",sum); }
试题二
阅读下列函数说明和C函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
[函数2.1说明]
函数palindrome(chars[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
[函数2.1]
int palindrome(char S[]) { char *pi,*pj; pi=S;pj=s+strlen(S)-1: while ( pi<pj &&="" __(1)__){="" pi++;="" pj--;="" }="" if(__="" (2)__)return-1;="" else="" return="" 0;="" }<="" p="">
[函数2.2说明]
函数f(char *str,char del)的功能是;将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
例如若str的值为“33123333435”,del的值为‘3’,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。
[函数2.2]
void f(char*str,char del) { int i,j,len; len = strlen(str); i = 0; while (i<len){ while (__(3)__) i++; ="" *忽略连续的标志字符*="" ="" *寻找从str[i]开始直到标志字符出现的一个子字符串*="" j="i" +="" 1;="" while="" (str[j]="" !="del" &&="" str[j]="" )="" j++;="" __="" (4)__="