| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:分析输出结果
只看楼主 加入收藏
realll
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2009-7-23
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:4 
分析输出结果
#include<iostream.h>
class Set
{
 public:
   Set(){PC=0;}
   Set(Set &s);
   void Empty() {PC=0;}
   int IsEmpty() {return PC= =0;}
   int IsMemberOf(int n);
   int Add(int n);
   void Print();
   friend void reverse(Set *m);
 private:
   int elems[100];
   int PC;
  };
int Set::IsMemberOf(int n)
{
 for (int i=0;i<PC;i++)
   if(elems[i]= =n)
return 1;
 return 0;
}
int Set::Add(int n)
{
 if(IsMemberOf(n))
   return 1;
 else if(PC>=100)
   return 0;
 else
{
 elems[PC++]=n;
 return 1;
}
}
Set::Set(Set &p)
{
 PC=p.PC;
 for(int i=0;i<PC;i++)
  elems[i]=p.elems[i];
}
 void Set::Print()
 {
   cout<<”{“;
   for (int i=0;i<PC-1;i++)
cout<<elems[i]<<”,”;
if(PC>0)
  cout<<elems[PC-1];
cout<<”}”<<endl;
}
void reverse(Set *m)
 {
  int n=m->PC/2;
  for(int i=0;i<n;i++)
   {
int temp;
temp=m->elems[i];
m->elems[i]=m->elems[m->PC-i-1];
m->elems[m->PC-i-1]=temp;
}
 }
void main()
{
 Set A;
 cout<<A.IsEmpty()<<endl;
A.Print();
Set B;
for(int i=1;i<=8;i++)
 B.Add(i);
 B.Print();
 cout<<B.IsMemberOf(5)<<endl;
 B.Empty();
 for(int j=11;j<20;j++)
  B.Add(j);
 Set C(B);
 C.Print();
 reverse (&C);
 C.Print();
}
     1
 {}
 {1,2,3,4,5,6,7,8}
 1
 {11,12,13,14,15,16,17,18,19}
 {19,18,17,16,15,14,13,12,11}

函数执行的过程是怎样的?
为啥会输出这个结果呢


[ 本帖最后由 realll 于 2010-5-19 13:01 编辑 ]
搜索更多相关主题的帖子: 结果 输出 
2010-05-19 12:36
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:20 
程序代码:
#include<iostream>
using namespace std;

class Set
{
    public:
        Set(){PC=0;}
        Set(Set &s);
        void Empty() {PC=0;}
        int IsEmpty() {return PC==0;}                            //(1)
        int IsMemberOf(int n);
        int Add(int n);
        void Print();
        friend void reverse(Set *m);
    private:
        int elems[100];
        int PC;
};

int Set::IsMemberOf(int n)    //检测n是不是elems中的元素 是返回1 否返回0
{
    for (int i=0;i<PC;i++)
        if(elems[i]==n)
            return 1;                            
    return 0;
}
int Set::Add(int n)                    //给elems中添加元素n
{
    if(IsMemberOf(n))
       return 1;
    else if(PC>=100)
       return 0;
    else
    {
        elems[PC++]=n;
        return 1;
    }
}
Set::Set(Set &p)                        //把set类p的elems的元素赋给p->this类(2)
{
    PC=p.PC;
    for(int i=0;i<PC;i++)
      elems[i]=p.elems[i];
}
void Set::Print()                        //输出elems中的元素
{
    cout<<"{";
    for (int i=0;i<PC-1;i++)
        cout<<elems[i]<<",";

    if(PC>0)                                    //为了输出最后一个元素是不输出","
        cout<<elems[PC-1];

    cout<<"}"<<endl;
}
void reverse(Set *m)            //元素对调        
{
  int n=m->PC/2;
  for(int i=0;i<n;i++)
  {
        int temp;
        temp=m->elems[i];
        m->elems[i]=m->elems[m->PC-i-1];
        m->elems[m->PC-i-1]=temp;
    }
}
int main(void)
{
    Set A;
    cout<<A.IsEmpty()<<endl;                //输出 1  调用(1)
    A.Print();                                            //输出 {}
    Set B;
    for(int i=1;i<=8;i++)
        B.Add(i);        
    B.Print();                                         //输出 {1,2,3,4,5,6,7,8}
    cout<<B.IsMemberOf(5)<<endl;
        B.Empty();                                     //5在集合中 返回1    
    for(int j=11;j<20;j++)
      B.Add(j);
    Set C(B);                                             //调用 (2)    
    C.Print();                                         //输出{11,12,13,14,15,16,17,18,19}    
    reverse (&C);
    C.Print();                                         //输出{19,18,17,16,15,14,13,12,11}
    return 0;
}

有错的地方,还请大家指正


  • 满眼生机转化钧;天工人巧日争新。
2010-05-19 13:50
realll
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2009-7-23
收藏
得分:0 
回复 2楼 ciweitou163
cout<<A.IsEmpty()<<endl;                //输出 1  调用(1)
想请教一下,A.IsEmpty() 里没有输出流,为啥会有输出呢?因为return?
2010-05-19 21:21
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:0 
回复 3楼 realll
我是这么想的(不知道是否正确):
Set A调用构造函数Set(){PC=0} 把PC置零;
A.IsEmpty();        PC==0这应该是个判断语句,PC等于0所以为TRUE;
返回值为int型 所以返回1;
××××××××××××
请指正!


  • 满眼生机转化钧;天工人巧日争新。
2010-05-20 11:20
realll
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2009-7-23
收藏
得分:0 
回复 4楼 ciweitou163
这样子哦
2010-05-20 22:35
快速回复:分析输出结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030925 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved