江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
江苏二级VC2008春上机2

 

 

    2008()上机试卷(02)

    (本试卷上机时间为70分钟)

一、改错题(20)

【题目】

    以下程序的功能是:统计和输出企业产品销售记录。设每个产品销售记录由产品代码

dm(4个字符)、产品名称mc(2个字符)、单价dj、数量sl、金额je四部分组成。其中,金额=

单价*数量。以下程序中函数sort()的功能是按产品代码从大到小对产品销售记录进行排序;若产品代码相同,则按金额从大到小进行排序,最后调用函数print()输出结果。

  含错误的源程序如下:

    #include <iostream.h>

    #include <string.h>

    struct PROD{

          char dm [5],name[3];

          int sl,dj,je;

    };

    void computerje(PROD p1[],int n)    //计算产品金额

    {  for(int i=0;i<n;i++)

         (p1+i).je=(p1+i).dj *(p1+i).sl;

    }

    void sort(PROD p1[],int n)

    {  for(int i=0;i<n;i++){

         for(int j=i+1;j<n;j++){

          if(strcmp(p1[i].dm,p1[j].dm)<0){

           t=p1[i];

           p1[i]=p1[j];

           p1[j]=t;

    }

    else if(strcmp(p1[i].dm,p1[j].dm)=0)

      if(p1[i].je<p1[j].je){

       PROD t=p1[i];

       p1[i]=p1[j];

       p1[j]=t;

 

    }}}

    }

    void print(PROD *p1,int n)

    {  for(int i=0;i<n;i+}){   

         cout<<p1[i].dm<<','<<p1[i].name<<',';

         cout<<p1[i].s1<<','<<pl[i].dj<<','<<p1[i].je<<endl;

       }

    }

    void main()

    {PROD pr[4]={{"1001","AA",4,15},{"4000","BB",3,45},{"4000",

                   "CC",6,53},{"8546","DD",1,43}};

    computerje(pr,4);

    sort(pr,4);

    print(pr,4);

    }

【要求】

    1.把上述程序录人到文件myfa.epp,根据题目要求及程序中语句之间的逻辑关系

对程序中的错误进行修改。程序中的注解可以不输入。

    2.改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或

编译预处理命令,但不能增加其他语句,也不能删去整条语句。

    3.改正后的源程序文件myfa.epp必须放在T:盘的根目录下,供阅卷用。

二、编程题(20)

【题目】

    试定义一个类NUM,实现将一维数组中各整数元素去掉其中相同数字后再对数组从小

到大排序。将一个整数去掉相同数字是指:如果一个整数中有相同的数字,则保留从左数起

,第一次看到的那个数字,而将其他相同的数字去掉。例如:数字12324151中有三个1、两个2,则去掉相同的数字后变为12345。具体要求如下:

  (1)私有数据成员。

  int a [5]:存放需处理的数组。

  (2)公有成员函数。 

  NUM(int t[],int n):构造函数,t初始化a,nt的元素个数。

  void sort(int t[],int n):将数组t的元素从小到大排序。

  int convert(int n):去除n中相同的数字并返回新得到的数。

  void fun():将数组a的各元素去除相同的数字后从小到大排列。要求调用函数

    convert()sort()

  void print():输出数组a的所有元素。

  (3)在主函数中对该类进行测试。

  输入/输出示例(下划线部分为键盘输入):

    输入5个整数:1213  65666  22313  12314  34435

    处理前的数组为:1213  65666  22313  12314  34435

    处理后的数组为:65  123  231  345  1234

【要求】   

  源程序文件名必须为myth.cpp,并放在T:盘的根目录下,供阅卷用。