第二周学习

 

1.构造函数的名称和类名一样。

2.私有变量:private:变量

   公有:函数

3.调用成员函数用:对象名.函数名

代码如下:

#include<iostream>
using namespace std;

class Box {
private:        //私有变量可以理解为属性,也就是说Box这个类都有长宽高这三个属性
	int x,y,z;  //x,y,z私有变量,只有类内可以访问,公有的变量或者函数类外也可以访问
public:
	Box(){}
	//构造函数
	Box(int a=0,int b=0,int c=0) { //构造函数的名称和类名是一样的,构造函数所带的参数默认为0,传来的参数可以把默认的参数值覆盖
		x=a;
		y=b;
		z=c;
		cout<<"x="<<x<<" "<<"y="<<y<<" "<<"z="<<z<<"\n";
	}
	//成员函数
	int ask_s(){ //函数里面不需要传进来什么数
		return 2*(x*y+y*z+x*z); //x,y,z=a,b,c=0,0,0
	}
	int ask_v(){
		return x*y*z;
	}
};

int main(){
    Box box1(0,0,0);  //Box:类 box1:对象(实例) 人是一类生物,也是一个类,a这个个体就是人的一个实例  Box box1()表示调用构造函数
	cout<<"s="<<box1.ask_s()<<"\n"; //对象名.函数名(参数)去调用成员函数,调用后的值就是函数返回值,这里返回的表面积值为0
	cout<<"v="<<box1.ask_v()<<"\n";
	Box box2(10,0,0);  //构造之后box2的x,y,z就有了值  类有成员变量和成员函数,box2是类的一个对象,它就有它自己的变量值和成员函数
	cout<<"s="<<box2.ask_s()<<"\n";  //人这个类都有身高、体重(属性/变量),人可以搬东西(动作/函数),那每个个体都有自己的身高、体重值和可以实现的动作
	cout<<"v="<<box2.ask_v()<<"\n";
	Box box3(10,20,0);
	cout<<"s="<<box3.ask_s()<<"\n";
	cout<<"v="<<box3.ask_v()<<"\n";
	Box box4(10,20,30);
	cout<<"s="<<box4.ask_s()<<"\n";
	cout<<"v="<<box4.ask_v()<<"\n";
	return 0;
}

  

也可以换一种编写成员函数的方式:

二 、类与对象(指针变量)

 

 

1.对象数组的命名

2.

 

代码如下:

#include<iostream>
#include<string>
using namespace std;

class Stu {
public:
    string id;
    float score;
    Stu(){}
    Stu(string stu_id,float stu_score){
        id=stu_id;
        score=stu_score;
    }
};

Stu max(Stu *x){ //x是Stu的指针类型,x=stus数组的地址,x[i]表示stus[i]
    float maxn=0;
    int ans=0;//ans记录分数最高的学生的下标
    for(int i=0;i<5;i++){
        if(x[i].score>maxn){
            ans=i;
            maxn=x[i].score;
        }
    }
    return x[ans];
}

int main(){
    Stu stus[5];//对象数组,包含5个学生个体 
    for(int i=0;i<5;i++){
        string a;

 

float b;
        cin>>a>>b;
        stus[i]=Stu(a,b); 
    }
    Stu person=max(stus); 
    cout<<person.id<<" "<<person.score<<"\n";
    return 0;
}

天梯赛:1.

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 int main(){
 5     int a[100000];
 6     int n;
 7     cin>>n;
 8     for(int i=1;i<=n;i++){
 9         cin>>a[i];
10     }
11     sort(a+1,a+1+n);
12     for(int i=1;i<=n;i++){
13         cout<<a[i]<<' ';
14     }
15     cout<<endl;
16     return 0;
17 }
View Code

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
int a[100005];//原本写a[n],但是4、5两行表示 n为变量,所以在[]内放一个足够大的数字
for(int i=1;i<=n;i++){
cin>>a[i];//i表示第几个数
}
sort(a+1,a+1+n);//sort自动排序完成
for(int i=1;i<=n;i++)//要把排序后的数字挨着挨着表示出来
{
cout<<a[i]<<' ';//一个一个输出排序后的数字//回忆for循环的执行顺序
}
cout<<endl;
return 0;
}

 

2

 

 

 

3、

 

 

 

 

  4.

 

 

 

5. 水仙花数

       所有各位数的立方和等于本身的三位数,例如 153=13+53+33 .
      输入格式
      无
      输出格式
      按从小到大的顺序输出满足条件的三位十进制数,每个数占一行

代码如下:

#include<iostream>
using namespace std;
bool check(int x){
	int a=x;
	int sum=0;
	while(a){
		int num=a%10;
		sum=sum+num*num*num;
		a/=10;
	}
	if(sum==x)
	    return true;
	else return false;
}
int main(){
	
	for(int i=100;i<=999;i++){
		if(check(i)){
			cout<<i<<endl;
		}
	}
}

  

 

posted @ 2023-04-05 12:15  Trouvallie  阅读(33)  评论(0)    收藏  举报