使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fu

admin2019-06-05  34

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
    (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。
    (2)定义类的友元函数fun(),请在注释//********2********后添加适当的语句。
    (3)定义类的友元函数main(),请在注释//********3********后添加适当的语句。
    (4)补充语句,释放内存。请在注释//********4********后添加适当的语句。
    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
1  #include<iostream.h>
2  class TestClass
3  {
4  public:
5    //********1********
6
7    {
8    data=d;
9    next=NULL;
10    }
11    void SetNext(TestClass* p)
12    {
13    next=p;
14    }
15  private:
16    int data;
17   TestClass* next;
18    //********2********
19
20    //********3********
21
22  };
23  TestClass* fun(TestClass* h)
24  {
25    TestClass  *t,*s,*u,*v;
26   s=h一>next;
27    h->next=NULL;
28    while(s!=NULL)
29    {
30    for(t=s,v=h;v!=NULL&&v->data<t->data;u=v,v=v一>next);
31    s=s一>next;
32    if(v==h)
33    h=t;
34    else
35    u->next=v;
36    t一>next=v;
37    }
38    return h;
39  }
40  void main()
41  {
42    TestClass* h=NULL;
43    TestClass* q=NULL,
44    do {
45    int data;
46    cout<<’’please input a number,and end with 0’’<<end1;
47    cin>>data;
48    if(data==0)break,
49    TestClass* p =  new TestClass(data);
50    if(h==NULL)
51    {
52    h=q=p;
53    }
54    else
55    {
56    q一>SetNext(p);
57    q=p;
58    }
59    }while(1);
60    h=fun(h);
61
62    for(;h!=NULL,)
63    {
64    q=h一>next;
65    cout<<h一>data<<’’ ’’<<end1;
66    delete h;
67    //********4********
68    }
69    return;
70  }

选项

答案(1)添加语句:Testclass(int d) (2)添加语句:friend TestClass*fun(TestClass*); (3)添加语句:friend void main(); (4)添加语句:h=q;

解析 本题的功能是将键盘输入的数字建立一个链表。在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的main主函数开始入手,可以看出程序通过调用类TestClass和函数fun实现各种输出操作。
    (1)题目1要求“完成构造函数的定义”。构造函数是一种特殊的成员函数,它的名字必须与类同名,所以这里的构造函数名字是TestClass。根据构造函数内的“data=d;”语句,知道构造函数TestClass中参数d为int型,即这里补全“TestClass(int d)”。
    (2)题目2要求“定义类的友元函数fun()”。在C++中,如果在本类以外的其它地方定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中fun()在类TestClass以外的地方定义的,为了其实现对类TestClass中程序变量的调用,在类TestClass中补全“friend TestClass* fun(TestClass*);”。
    (3)题目3要求“定义类的友元函数main()。”同(2),这里补全“friend void main();”。
    (4)题目4要求“补充语句,释放内存。”为了防止内存泄漏,在指针使用后要将其释放。第四个标识前面的“delete h;”语句已经将指针h释放了,所以要释放指针q,只要将其指向h就可以了,即“h=q;”。
转载请注明原文地址:https://kaotiyun.com/show/Em8p777K
0

最新回复(0)