计算机软考试题答案

时间:2021-08-31

  试题一

  阅读下列程序说明和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)__="\0";        ="" *给找到的字符序列置字符串结束标志*=""   printf("="" %s ",&str[i]):="" ’="" (5)__;=""   }=""  }<="" p="">

试题三

  以下是与Visual Basic开发应用有关的5个问题.对每一个问题,请将解答填入答题纸的对应栏内。

  (1)在Visual Basic中,工程文件、窗体文件和标准模块文件的扩展名是什么?

  请从下列选项中选择:

  prg、prj、exe、vbp、rom、frm、win、fra,std、bas、vbs、Vbm

  (2)设某窗体上有一个命令按钮,其名称为 CmdSave,运行时该按钮上显示有“保存(S)”字样的信息。为使热键 ALT+S 与该命令按钮相关联,应该对按钮 CmdSave 的 Caption属性设置什么样的属性值?

  (3)设某窗口内有一个图像框 Image1,以及两个命令按钮“放大”和“缩小”。单击“放大”按钮就会使该图像框的长和宽都放大10%;单击“缩小”按钮就会使该图像框的长和宽都缩小10%(该图像框的左上角不动)。请分别写出这两个命令按钮的单击事件过程中的程序代码。

  (4)为使某个单选按钮初始时默认被选中,在开发时应怎样做?

  (5)若有语句 Tmpval=MsgBox(非法操作!,ybOKCancel+vbCritical,"提示"),请简要描述程序运行时弹出的消息框的主要特征。