编写一个函数,求两个或三个正数的最大值。要求:用带默认值的函数实现。(注:本题不需要定义类)
注意所要求的是正数的最大值,要求在一个函数中实现比较两个或者三个数,因此需要定义一个带有默认值的函数,来保证实现。
#include <iostream>
using namespace std;
int pan(int a,int b,int c=0)
{
int i=a;
if(i>b)
{ if(i>c)
i=i;
}
else
{
i=b;
if(i>c)
i=i;
else i=c;
}
return i;
}
int main()
{
int x,y,z;
cin>>x>>y>>z;
cout<<pan(x,y)<<endl;
cout<<pan(x,y,z)<<endl;
return 0;
}
运行结果
Last login: Wed Mar 23 16:53:22 on ttys001
1 2 3
2
3
i@HUAWEI-MateBook-X-Pro ~ %
设计一个时间类,其中数据成员:年 月 日;成员函数有三个:(1)构造函数设置年月日的具体值;;(2)判断该年是否为闰年;(3)将年月日输出。编写主函数,实现并测试这个类。
利用构造函数初始化,然后用判断后输出
代码
#include <iostream>
using namespace std;
class Time
{
private:
int y,m,d;
public:
Time()
{cin>>y>>m>>d;}
void output();
void pan();
};
void Time::output()
{
cout<<y<<"年"<<m<<"月"<<d<<"日"<<endl;
}
void Time::pan()
{
if(y%100==0)
{
if(y%400==0)
cout<<"是闰年"<<endl;
else
cout<<"不是闰年"<<endl;
}
else
cout<<"是闰年"<<endl;
}
int main()
{
class Time a;
a.pan();
a.output();
return 0;
}
运行结果
Last login: Wed Mar 23 17:40:57 on ttys000
2020 12 1
是闰年
2020年12月1日
i@HUAWEI-MateBook-X-Pro ~ %
重做之前的一道题,要求使用构造函数。
题目要求如下:定义三角形类,完成:为三边置值、取三边的值并输出、求三角形周长、求三角形面积、输出三角形周长和面积。要求使用构造函数为三边赋值。提示:可以定义一个无参的构造函数,在此构造函数中通过键盘输入的方法输入三边的值。
按照题目构造即可
代码
#include<iostream>
using namespace std;
#include<cmath>
class triangle
{private:
int a;
int b;
int c;
public:
triangle()
{
cin>>a>>b>>c;
}
int length();
float area();
void print();
};
int triangle::length()
{return a+b+c;}
float triangle::area()
{float d;
d=(a+b+c)/2.0;
return(sqrt(d*(d-a)*(d-b)*(d-c)));
}
void triangle::print(){cout<<length()<<endl<<area()<<endl;}
int main()
{
triangle s;
s.print();
return 0;
}
运行结果
Last login: Wed Mar 23 17:41:13 on ttys000
2 6 7
15
5.56215
i@HUAWEI-MateBook-X-Pro ~ %
设计并测试一个名为Rectangle 的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。提示:一种方法,可以定义一个矩形类,在类中定义4个数据成员,分别表示左下角和右上角两个点的x、y坐标,这时,在主函数中只需定义一个矩形类的对象即可;第二种方法,可以定义一个坐标类,在类中定义2个数据成员,分别表示x坐标和y坐标,这时,在主函数中需要定义两个坐标类对象,即左下角坐标和右上角坐标对象。
这里选择定义四个数据成员的类求解面积
#include <iostream>
#include <cmath>
using namespace std;
class Rectangle
{
private:
double x,y,n,m;
public:
Rectangle()
{
cin>>x>>y>>n>>m;
}
double area();
};
double Rectangle::area()
{
double i=fabs(y-m),j=fabs(x-n);
return i*j;
}
int main()
{
Rectangle r;
cout<<r.area()<<endl;
return 0;
}
运行结果
Last login: Wed Mar 23 17:41:13 on ttys000
0 0 12 15
180
i@HUAWEI-MateBook-X-Pro ~ %
创建一个Student类,该类中具有学生姓名,学号,性别,年龄,三科成绩、平均成绩等数据成员。在该类中定义成员函数实现相关信息的输入、输出,学生成绩的统计。实现并测试这个类。
下述代码默认平均成绩未知
代码
#include <iostream>
#include <cstring>
using namespace std;
class Student
{
private:
string a,b;
char c;
int d;
double x,y,z,m;
public:
Student ()
{
cin>>a>>b>>c>>d>>x>>y>>z;
}
void ave();
void output();
};
void Student::ave()
{
m=(x+y+z)/3.0;
}
void Student::output()
{
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<x<<" "<<y<<" "<<z<<" "<<m<<endl;
}
int main()
{
Student a;
a.ave();
a.output();
return 0;
}
注:代码只包含了只有一个同学的情况,可以定义有关Student类的数组进行多个同学的数据处理。
创建一个函数plus,它把两个数值加在一起,返回它们的和,提供处理int、double和string类型的重载版本。 (注:本题不需要定义类) (注意函数名plus在VC++6.0编译系统下能调试通过,但在一些编译系统下会报错,因为在某些编译系统下被处理成了关键字,报错时换个名字即可,比如改成plus1等)
定义重载函数 ,数据成员分别为int、double、string。
代码
#include <iostream>
#include <cstring>
using namespace std;
void plus1(int a,int b)
{
cout<<a+b<<endl;
}
void plus1(double a,double b)
{
cout<<a+b<<endl;
}
void plus1(string a,string b)
{
cout<<a+b<<endl;
}
int main()
{
double m,n;
string i,j;
int x,y;
cin>>m>>n;
plus1(m,n);
cin>>i>>j;
plus1(i,j);
cin>>x>>y;
plus1(x,y);
return 0;
}
运行结果
Last login: Wed Mar 23 17:48:29 on ttys000
2.3 6.9
9.2
sahow sdoix
sahowsdoix
9 11
20
i@HUAWEI-MateBook-X-Pro ~ %
定义动态整数数组,数组大小由输入值决定,对数组中的数据进行降序排序。算法结束时,回收存储空间。(注:本题不需要定义类)
new一个动态正数数组,在主函数排序输出,最后记得delete就OK。
代码
#include <iostream>
using namespace std;
int main()
{
int *p,n;
cin>>n;
p=new int [n];
for(int i=0;i<n;i++)
cin>>p[i];
if(p)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
if(p[j]<p[j+1])
swap(p[j],p[j+1]);
for(int i=0;i<n;i++)
cout<<p[i]<<" ";
}
cout<<endl;
delete []p;
return 0;
}
运行结果
Last login: Wed Mar 23 18:00:28 on ttys000
5
2 3 6 1 5
6 5 3 2 1
i@HUAWEI-MateBook-X-Pro ~ %