5.25 类与对象,指针。

#include <iostream>


using namespace std;


class complex
{
    float real,image;//默认的私有成员
public:
    void setdata(float r=0,float i=0) //成员函数也可以带有默认的参数值
    {


        real = r;
        image = i;
    }
    complex add(complex c);//成员函数也可以的重载
    complex add(float c);
    void input();ed
    void print();
};
complex complex ::add(complex c)
{
    complex t;
    t.real = real + c.real,t.image = image + c.image;
    return t;
}
complex complex::add(float f)
{
    complex t;
    t.real = real + f,t.image = image;
    return t;
}
void complex::input(){
   cin >> real >> image;
}
void complex::print()
{
    if(image < 0) cout << real << image <<"i" <<  endl;
    else if(image > 0) cout << real << "+" << image << "i" << endl;
    else cout << real <<endl;

}

// 在类体定义的函数默认为内联的,而在类体外定义的话,则需要用inline进行声明
int main(){
   complex c1,c2,c3;
   c1.input();c2.input();//调用函数输出
   c3 = c1.add(c2);//调用add函数
   c3.print();//输出
   return 0;

}

//#include <iostream>


using namespace std;


class date{
  int year,month,day;
  public:
      void setdate(int,int,int);//设置日期
     bool isleapyear();//判断是否是闰年
      void output();//输出函数
};
void date :: setdate(int y,int m,int d){//用该函数访问类对象的值
  year = y;
  month = m;
  day = d;
}
bool date :: isleapyear(){
  return ((year%4==0 && year%100 != 0)||(year%400 == 0));
}
void date :: output(){
  cout << year << "," << month << "," << day << endl;
}
int main()
{
    date day1,day2,day3;
    day1.setdate(2018,05,24);//定义date类的三个对象
    day2.setdate(1998,12,25);//设置day1的数据成的数值
    day3.setdate(1998,11,26);
    cout << day1.isleapyear() << "," << day2.isleapyear() << "," << day3.isleapyear() << endl;
    date * p1 = &day1,*p2=&day2,&r=day3;//定义date 类的两个指针和一个引用
    // 对象成员名 -> 数据成员/函数成员名
    p1 ->output();
    //(*对象指针名 ). 数据成员,函数成员名
    (*p2).output();
    //对象名.数据成员
    r.output();
    return 0;

}

//#include <iostream>


using namespace std;


class date{
  int year,month,day;
  public:
      void setdate(int,int,int);//设置日期
     bool isleapyear();//判断是否是闰年
      void output();//输出函数
};
void date :: setdate(int y,int m,int d){//用该函数访问类对象的值
  year = y;
  month = m;
  day = d;
}
bool date :: isleapyear(){
  return ((year%4==0 && year%100 != 0)||(year%400 == 0));
}
void date :: output(){
  cout << year << "," << month << "," << day << endl;
}
int main()
{
    date day1,day2,day3;
    day1.setdate(2018,05,24);//定义date类的三个对象
    day2.setdate(1998,12,25);//设置day1的数据成的数值
    day3.setdate(1998,11,26);
    cout << day1.isleapyear() << "," << day2.isleapyear() << "," << day3.isleapyear() << endl;
    date * p1 = &day1,*p2=&day2,&r=day3;//定义date 类的两个指针和一个引用
    // 对象成员名 -> 数据成员/函数成员名
    p1 ->output();
    //(*对象指针名 ). 数据成员,函数成员名
    (*p2).output();
    //对象名.数据成员
    r.output();
    return 0;

}

//#include <iostream>


using namespace std;


class date{
  int year,month,day;
  public:
      void setdate(int,int,int);//设置日期
     bool isleapyear();//判断是否是闰年
      void output();//输出函数
};
void date :: setdate(int y,int m,int d){//用该函数访问类对象的值
  year = y;
  month = m;
  day = d;
}
bool date :: isleapyear(){
  return ((year%4==0 && year%100 != 0)||(year%400 == 0));
}
void date :: output(){
  cout << year << "," << month << "," << day << endl;
}
int main()
{
    date day1,day2,day3;
    day1.setdate(2018,05,24);//定义date类的三个对象
    day2.setdate(1998,12,25);//设置day1的数据成的数值
    day3.setdate(1998,11,26);
    cout << day1.isleapyear() << "," << day2.isleapyear() << "," << day3.isleapyear() << endl;
    date * p1 = &day1,*p2=&day2,&r=day3;//定义date 类的两个指针和一个引用
    // 对象成员名 -> 数据成员/函数成员名
    p1 ->output();
    //(*对象指针名 ). 数据成员,函数成员名
    (*p2).output();
    //对象名.数据成员
    r.output();
    return 0;

}

//#include<iostream>
#include <stack>


using namespace std;


#define NUM 4
#define NIL -1


int GetPositionFromLaday(int ladayArray[][NUM], int laday, int man)
{
for(int i=0; i<NUM; i++)
if(ladayArray[laday][i] == man)
return i;
return NIL;
}


void ChoosePartener(stack<int>& manStack, int manPos, int manArray[][NUM], int ladayArray[][NUM], int manPerfer[], int manStartPos[], int ladayNow[])
{
//选择自己名单上排在首位的女人
int perferLaday = manArray[manPos][manStartPos[manPos]];
//如果该女孩没有接受过表白,则接受该男孩的表白
if(ladayNow[perferLaday] == NIL)
{
ladayNow[perferLaday] = manPos;
manPerfer[manPos] = perferLaday;
}
//如果已经有人向她表白,则判断其现在拥有的有没有现在追求的好
else
{
int oldPos = GetPositionFromLaday(ladayArray, perferLaday, ladayNow[perferLaday]);
int newPos = GetPositionFromLaday(ladayArray, perferLaday, manPos);
if(oldPos < newPos)
{
manStartPos[manPos]++;//说明该女生更喜欢现在拥有的,选心目中第二位
//加入单身行列
manStack.push(manPos);
}
else //换男友
{
//被甩的男友恢复自由身份
manStartPos[ladayNow[perferLaday]]++;
//加入单身行列
manStack.push(ladayNow[perferLaday]);
//将追求的男士改为现任男友
ladayNow[perferLaday] = manPos;
manPerfer[manPos] = perferLaday;
}
}
}


int main()
{
int manArray[NUM][NUM] ={{2,3,1,0},{2,1,3,0},{0,2,3,1},{1,3,2,0}};
int ladayArray[NUM][NUM] = {{0,3,2,1},{0,1,2,3},{0,2,3,1},{1,0,3,2}};


int manPerfer[NUM] = {0};//每位男生选中的女生
int manStartPos[NUM] = {0};//记录每位男生选取的是心目中第几位的女生
int ladayNow[NUM] = {NIL,NIL,NIL,NIL};//女生对应的男生


stack<int> manStack; // 还处于单身的男士


//进行第一轮迭代,每个男生都选择自己名单上排在首位的女生。
for(int pos=0; pos<NUM; pos++)
{
ChoosePartener(manStack, pos, manArray, ladayArray, manPerfer, manStartPos,ladayNow);
}


while(manStack.size()!=0)
{
int manPos = manStack.top();
manStack.pop();
ChoosePartener(manStack, manPos, manArray, ladayArray, manPerfer, manStartPos,ladayNow);
}


for(int i =0;i<NUM; ++i)
cout<<"Man NO.: "<<i<<" Laday NO.: "<<manPerfer[i]<<endl;

}

//#include <iostream>


using namespace std;


int main()
{
    int a[3][3] = {{1,2,3,},{4,5,6},{7,8,9}},i,j,(*p)[3];
    cout << "用行指针输出数组的元素"  << endl;
    for(i=0;i<3;i++){
        p = &a[i];
        cout << (*p)[0] <<'.' << (*p)[1] << '.' << (*p)[2] << '.' <<  endl;
    }
    cout << "用四种方法输出数组里面的元素" <<endl;
    for(p=a,i=0;i<3;i++){
        for(j=0;j<3;j++){
            cout << *(*(p+i)+j) << endl;//<< '\t' << p[i][j] << '\t' << *(p[i]+j) << '\t' << (*(p+i))[j] << endl;
        }
    }
    return 0 ;

}

//#include <iostream>
#include <cstring>
using namespace std;


int main()
{
   char *p ,*sp[] = {"wfguwhd","dhashgdwh","feiwu","chenhu","tiancia","wudi"};
   int i,j,k,n;//i,j分别是循环变量 使sp[k]指向最小的字符串 n为字符串的个数
   n = sizeof(sp)/sizeof(sp[0]);
   for(i - 0;i<n-1;i++){
    for(k=i;j=i+1;j++){
        if(strcmp(sp[k],sp[j])>0)
            k=j;
        if(k !=i){
            p = sp[k];
            sp[k] = sp[j];
            sp[j] = p;
        }
    }
   }
   for(i=0;i<n;i++){
    cout << sp[i] << endl;
   }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/huzi99/article/details/80449584
今日推荐