- 相關(guān)推薦
計算機軟考試題答案
試題一
閱讀下列程序說明和C程序,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。
[程序8說明]
程序8用于計算某公司每個職工應(yīng)繳納的個人所得稅額和全體職工繳納的個人所得稅總額。職工的當月收入(工資或薪金)通過鍵盤輸入,每次輸入一個職工的工號和工資(或薪金)。由于該公司的工資或薪金是不定時發(fā)放的,所以輸入過程中每個職工的收入會出現(xiàn)多次輸入,整個輸入以工號小于等于0結(jié)束。
假設(shè)個人所得稅法規(guī)定;個人收入所得,按月計稅,以每月收入總額減除免稅金額800元后的余額作為該月的月應(yīng)納稅所得額,適用稅率如下表所示。
級數(shù) | 月應(yīng)納稅所得額 | 適用稅率(%) |
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 |
上表表明,個人收入所得稅是按照超額累進的稅率來征收的。
設(shè)一個人的月應(yīng)納稅所得額為K(元),用下面的公式計算其應(yīng)繳納的個人所得稅額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元后,應(yīng)納稅所得額為3300元,其應(yīng)繳納的個人所得稅額為500*5%+1500*10%+1300*15%=370元。
[程序8]
#include #define MaxNum 50 #define BASE 800 /*免稅金額基數(shù)*/ 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的職工在數(shù)組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)__) /*月應(yīng)納稅所得額超過第j級*/ S=S+(paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100; else{ S=S+(__ (5)__)*taxPrate[j-1]/100;break;} } printf("職工%d應(yīng)繳納的個人所得稅額:%10.21f ",employee[i].Id,S); sum += S; } printf("全體職工個人所得稅總額:%10,21f ",sum); }
試題二
閱讀下列函數(shù)說明和C函數(shù),將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)。
[函數(shù)2.1說明]
函數(shù)palindrome(chars[])的功能是:判斷字符串s是否為回文字符串,若是,則返回0,否則返回-1。若一個字符串順讀和倒讀都一樣時,稱該字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
[函數(shù)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="">
[函數(shù)2.2說明]
函數(shù)f(char *str,char del)的功能是;將非空字符串str分割成若干個子字符串并輸出,del表示分割時的標志字符。
例如若str的值為“33123333435”,del的值為‘3’,調(diào)用此函數(shù)后,將輸出三個子字符串,分別為“12”、“4”和“5”。
[函數(shù)2.2]
void f(char*str,char del) { int i,j,len; len = strlen(str); i = 0; while (i<len){ while (__(3)__) i++; ="" *忽略連續(xù)的標志字符*="" ="" *尋找從str[i]開始直到標志字符出現(xiàn)的一個子字符串*="" j="i" +="" 1;="" while="" (str[j]="" !="del" &&="" str[j]="" )="" j++;="" __="" (4)__="