软件水平考试(初级)程序员下午(应用技术)模拟试卷35

0
收藏   分享
  • 卷面总分:75分
  • 试卷类型:模拟考试
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:7次
  • 作答时间:150分钟
试卷简介
试卷预览
1

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。

  【说明】

 设计希赛IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元;销售员拿固定工资1000元,然后再按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的5‰。

 按要求设计一个基类employee,销售员类salesman,经理类manager,销售经理类 salesmanager。

 程序5-1是类employee的模块内容,程序5-2是类salesman的类模块内容,程序5-3是类manager的模块内容,程序5-4是类salesmanager的模块内容。在主测试程序中,输入张三所管部门月销售量10000后的输出结果如下:

          张三所管部门月销售量:10000

          销售经理:张三

          编号:1001

          本月工资:5050

 #include <iostream.h>

 #include <string.h>

 class employee

 {

 protected:

    int no;

    char *name;

    float salary;

 public:

    employee(int num,char *ch)

    {  no=num;

       name=ch;

       salary=0; }

    virtual void pay()=0;

    virtual void display()

    {  cout<<"编号:"<<no<<endl;

      cout<<"本月工资:"<<salary<<endl; }

 };

 【程序5-2】

 class salesman: (1) 

 {

 protected:

   float commrate, sales;

 public:

   salesman(int num,char *ch):employee(num,ch)

   {  commrate=0.04; }

   void pay()

   {  cout<<name<<"本月销售额:";

      cin>>saies;

      salary=sales*commrate+1000;  }

   void display()

   {  cout<<"销售员:"<<name<<endl;

      employee::display(); }

 };

 【程序5-3】

 class manager: (1) 

 {

 protected:

   float monthpay;

 public:

   manager(int num,char *ch):employee(num,ch)

   { monthpay=8000; }

   void pay()

   {  salary=monthpay;  }

   void display()

   {  cout<<"经理:"<<name<<endl;

      employee::display(); }

 };

 【程序5-4】

 class salesmanager: (2) 

 {

 public:

   salesmanager(int num,char *ch): (3) 

   {  monthpay=5000;

      commrate=0.005;}

   void pay()

   {  cout<<name<<"所管部门月销售量:";

       cin>>sales;

        (4) }

   void display()

   {  cout<<"销售经理:"<<name<<endl;

        (5) }

 };

 void main()      //主测试函数

 {  salesmanager p1 (1001,"张三");

    p1.pay();

    p1.display();

 }

1

阅读以下程序说明和C语言程序,将应填入(n)处的字句写在对应栏内。

 【说明】

 希赛教育集团公司为发展生产向社会公开招聘M个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加公司组织的考试。公司将按应聘者的成绩从高分至低分的顺序进行排队录取。公司的录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其第二志愿考虑录取。

 程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都做了录取处理。

 程序中,类型STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组rz[]的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。

 【程序】

 #include<stdio.h>

 #include<malloc.h>

 #define M 20

 #define PEMARK 5

 typedef struct stu{

   int no, total, z[2], sortm, zi;

   struct stu *next;

 }STU;

 struct rzmode{

   int Imt, count;

   STU *next;

 }rz[M];

 STU *head=NULL, *over=NULL;

 int all

 FILE *fp;

 char dataf[]="pp07.dat";

 print(STU *p){

   for(;p!=NULL;p=p->next)

   printf("%d(%d)\t",p->no,p->total);

 }

 insert(STU **p, STU *u){

   STU *v, *q;

   for(q=*p;q!=NULL;v=q,(1))

     if(q->sortm<u->sortm)break;

   if(q==*p)(2);

   else (3);

   U->next=q;

 }

 main(){

   int zn, i, no, total, z1, z2;

   STU *p, *v, *q;

   fp=fopen(dataf, "r");

   if(fp==NULL){

     printf("Can't open file %s.\n",dataf);

     exit(0);

   }

   fscanf(fp, "%d",&zn);

   for(all=0,i=1;i<=zn;i++){

     fscanf(fp,"%d",&rz[i].Imt);

     rz[i].count=0;rz[i].next=NULL;

     all+=(4);

   }

   for(;;){

     if((fscanf(fp, "%d%d%d%d",&no,&total,&z1,&z2))!=4)

       break;

     p=(STU*)malloc(sizeof(STU));

     p->no=no;

     p->total=p->sortm=total;

     p->zi=0;p->z[0]=z1;p->z[1]=z2;

      (5);

   }

   fclose(fp);

   for(;all && head !=NULL;){

     p=head; head=head->next;

     if(rz[p->z[p->zi]].count<(6)){

       rz[p->z[p->zi]].count++;

       insert(&rz[p->z[p->zi]].next,p);

       all--;

       continue;

     }

     if(p->zi>=1){

       p->next=over;over=p;

       continue;

     }

     p->sortm-=DEMARK; (7);

     insed(&head,p);

   }

   for(i=1;i<=zn;i++){

     printf("%d:\n",i);

     print(rz[i].next);

     printf("\n");

   }

   printf("over:\n");print(head);

   print(over);printf("\n");

 }