请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中包含了类Integers和主函数main的定义。一个Integers对象就是一个整数的集合,其中包含0个或多个可重复的整数。成员函数add的作用是将一个元素添加到集合中,成员函数

admin2016-08-19  29

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中包含了类Integers和主函数main的定义。一个Integers对象就是一个整数的集合,其中包含0个或多个可重复的整数。成员函数add的作用是将一个元素添加到集合中,成员函数remove的作用是从集合中删除指定的元素(如果集合中存在该元素),成员函数sort的作用是将集合中的整数按升序进行排序。请编写这个sort函数。此程序的正确输出结果应为:
    5 28 2 4 5 3 2 75 27 66 31
    5  28  2  4  5  3  2  75  27  66  31  6
    5  28  2  4  5  3  2  75  27  66  3l  6  19
    5  28  4  5  3  2  75  27  66  31  6  19
    5  28 4  5  3  2  75  27  66  31  6  19  4
    2 3 4 4 5 5  6  19 27 28  31  66 75
    要求:
    补充编制的内容写在“//********333********”与“//********666********”之间。不得修改程序的其他部分。
    注意:相关文件包括:main.cpp、Integers.h。
    程序最后调用writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件。
1  //Integers.h
2  #ifndef INTEGERS
3  #define INTEGERS
4
5  #include
6  using namespace std;
7
8  const int MAXELEMENTS=100;
9  //集合最多可拥有的元素个数
10
11  class Integers{
12  int elem[MAXELEMENTS];
13  //用于存放集合元素的数组
14  int counter;
15  //用于记录集合中元素个数的计数器
16  public:
17    Integers():counter(0){}
18i  //创建一个空集合
19    Integers(int data[],int size);
20  //利用数组提供的数据创建一个整数集合
21    void add(int element);
22  //添加一个元素到集合中
23    void remove(int element);
24  //删除集合中指定的元素
25    int getCount()const{return count-er;}
26  //返回集合中元素的个数
27    int getElement(int i)const{return elem;)
28  //返回集合中指定的元素
29    void sort();
30  //8集合中的整数按由小到大的次序进行排序
31    void show()const;
32  //显示集合中的全部元素
33  };
34  void writeToFile(const char*path);
35  #endif
1  //main.cpp
2  #include"Integers.h"
3  #include
4
5  Integers::Integers(int data[],int size):counter(0){
6    for(int i=0;i);
7    }
8
9  void Integers::add(int element){
10    if(counter11    elem[counter++]=element;
12    }
13
14  void Integers::remove(int element){
15    int j;
16    for(j=counter-1;j>=0;j--)
17    if(elem[j]==element)break;
18    for(int i=j;i19    elem=elem[i+1];
20    counter--;
21  }
22
23 void Integers::sort(){
24    //********333********
25    //********666********
26    }
27
28  void Integers::show()const{
29    for(int i=0;i30    cout<31    cout<32    }
33  int main(){
34    int d[]={5,28,2,4,5,3,2,75,27,66,31);
35    Integers S(d,11);s.show();
36    s.add(6);  s.show();
37    s.add(1 9);  s.show();
38    s.remove(2);  s.show();
39    s.add(4);  s.show();
40    s.SOrt();  s.show();
41    writeToFile(" ");
42    return 0;
43  }

选项

答案1 for(int i=0;ii ; j--) //从最后一位到i到前一位遍历elem 3 if(elem[i]>elem[j])//如果elem[i]大于elem[j],则两值替换 4 { 5 int temp:elem[i];//定义整形变量temp并赋值为elem[i]; 6 elem[i]=elem[j];//给elem[i]赋值elem[i] 7 elem[j]=temp;//给elem[j]赋值temp 8 }

解析 主要考查考生对排序算法的掌握,要排序的数组为elem,元素个数为counter,在这里使用下标i和j进行比较,当elem>elem[j]时,数组元素通过中间变量temp进行交换。
转载请注明原文地址:https://jikaoti.com/ti/URE0FFFM
0

最新回复(0)