实现三角形类(C++)
通过课程进入 | 题 号: | 137 | 实现三角形类(C++) | 语言要求: | C++ |
实现一个三角形类 Ctriangle
该类有一个GetPerimeter方法返回三角形的周长;
GetArea方法返回三角行的面积;
该类还提供一个display方法显示三角形的三边长度;
最终在main函数中生成该类,
输入三条边的长度(不用考虑三条边不能构成三角形的情况);
展示三角形的三边长度以及周长和面积
Ctriangle类的使用如下,在你的代码中除了实现Ctriangle类还需引入一下代码。
int main(){
double a,b,c;
cin>>a>>b>>c;
Ctriangle T(a,b,c);
T.display();
cout<<"Perimeter:"<<T.GetPerimeter()<<endl;
cout<<"Area:"<<T.GetArea()<<endl;
return 0;
}
输出格式
输入:3 4 5回车
输出:
Ctriangle:a=3,b=4,c=5回车
Perimeter:12回车
Area:6回车 |
#include <iostream>
#include <math.h>
using namespace std;
class Ctriangle{
private:
double a,b,c;
public:
Ctriangle(double aa,double bb,double cc){
a=aa;b=bb;c=cc;
};
double GetPerimeter(){
double perimeter=a+b+c;
return perimeter;
};
double GetArea(){
double area;
double p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
return area;
};
void display(){
cout<<"Ctriangle:a="<<a<<",b="<<b<<",c="<<c<<endl;
return;
};
};
int main(){
double a,b,c;
cin>>a>>b>>c;
Ctriangle T(a,b,c);
T.display();
cout<<"Perimeter:"<<T.GetPerimeter()<<endl;
cout<<"Area:"<<T.GetArea()<<endl;
return 0;
}
实现Point类(C++)
通过课程进入 | 题 号: | 138 | 实现Point类(C++) | 语言要求: | C++ |
定义一个点类Point,并定义成员函数double Distance(const & Point) 求两点的距离。
输入两个点的坐标,
创建两个点, 然后调用Point类的Distance方法输出两个点的距离。
Point 类的使用方式如下:
int main(){
double a,b,c,d;
cin>>a>>b>>c>>d;
Point A(a,b),B(c,d);
cout<<A.Distance(B)<<endl;
return 0;
}
如输入:
1 2 3 4回车
输出:
2.82843 |
#include <iostream>
#include <math.h>
using namespace std;
class Point {
private:
double x,y;
public:
Point(double a,double b){
x=a;y=b;
}
double Distance(const Point c){
double ans=pow((x-c.x),2)+pow((y-c.y),2);
ans=sqrt(ans);
return ans;
}
};
int main(){
double a,b,c,d;
cin>>a>>b>>c>>d;
Point A(a,b),B(c,d);
cout<<A.Distance(B)<<endl;
return 0;
}
实现Date类(C++)
通过课程进入 | 题 号: | 139 | 实现Date类(C++) | 语言要求: | C++ |
实现日期类Date,它能正确表示年、月、日。
在代码中引入头文件 CDate.h
它的内容如下:
class Date{
public:
Date(int y =1996,int m=1,int d=1){};
int days(int year,int month){};
void NewDay();
void display()
{
cout<<year<<"-"<<moth<<"-"<<day<<endl;
}
private:
int year; //年
int month; //月
int day; // 日
}
需要实现构成函数Date(int y =1996,int m=1,int d=1)
在构造函数内依次判断输入的月和日是否合法
即月为1~12月中的一个 如果月不合法则输出Invalid month! 然后将月置为1。
如果天数不合法,则输出Invalid day! 然后将天数置为1。
例如 Date d(1993,13,32);
输出:
Invalid month!回车
Invalid day!回车
再调用 d.display()
输出:
1993-1-1
设计一个NewDay()成员函数,将当前Date表示的日期增加一天。
例如:Date d(1991,1,1);
d.NewDay();
d.display();
输出:
1991-1-2
设计一个days(int year, int month)成员函数,返回指定年月有多少天。
例如 d.days(1991,1)
返回:
31
在你的代码中必须实现以上三个方法,例如:
#include "CDate.h"
Date::Date(int y=1996,int m=1 ,int d=1){
...
}
int Date::days(int year,int month){
...
}
void Date::NewDay(){
...
} |
#include <iostream>
using namespace std;
class Date{
public:
Date(int y =1996,int m=1,int d=1);
int days(int year,int month);
void NewDay();
void display(){
cout<<year<<"-"<<month<<"-"<<day<<endl;
}
private:
int year;
int month;
int day;
};
Date::Date(int y,int m,int d){
if(m<1||m>12){
cout<<"Invalid month!"<<endl;
m=1;
}if(d<1||d>days(y,m)){
cout<<"Invalid day!"<<endl;
d=1;
}year=y;month=m;day=d;
}
void Date::NewDay(){
day++;
if(day>days(year,month)){
day=1;month++;
if(month==13){
month=1;year++;
}
}
}
int Date::days(int year,int month){
int ddays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!=0)||year%400==0){
ddays[2]=29;
}else{
ddays[2]=28;
}return ddays[month];
}
int main(){
Date d(1993,13,32);
d.display();
return 0;
}
实现Student类(C++)
通过课程进入 | 题 号: | 141 | 实现Student类(C++) | 语言要求: | C++ |
设计一个学生类Student,包含学生学号(最长10位)、姓名(不用支持中文最长12位)、三门课程成绩等基本信息,
计算每门课程学生的平均成绩。
需实现Student的display成员函数,依次输出学号 姓名 和三门课的成绩,每个输出以空格隔开
成员函数 average1 ,average2 ,average3 ,分别返回三门课的平均成绩。
Student类的使用方法如下所示,在你的代码中除了实现Student类,还需引入以下代码:
int main(){
Student *stu1,*stu2,*stu3;
char name1[10],name2[10],name3[10];
char num1[12],num2[12],num3[12];
int grade1[3],grade2[3],grade3[3];
cin>>name1>>num1>>grade1[0]>>grade1[1]>>grade1[2];
cin>>name2>>num2>>grade2[0]>>grade2[1]>>grade2[2];
cin>>name3>>num3>>grade3[0]>>grade3[1]>>grade3[2];
stu1 = new Student(name1,num1,grade1[0],grade1[1],grade1[2]);
stu2 = new Student(name2,num2,grade2[0],grade2[1],grade2[2]);
stu3 = new Student(name3,num3,grade3[0],grade3[1],grade3[2]);
stu1->display();
stu2->display();
stu3->display();
cout<<"The average grade of course1:"<<stu2->average1()<<endl;
cout<<"The average grade of course2:"<<stu2->average2()<<endl;
cout<<"The average grade of course3:"<<stu2->average3()<<endl;
return 0;
}
上述代码执行时
输入:
200906294 LiWeiwei 88 75 91 200902164 ChenHanfu 86 78 93 200908079 ZhanGaolin 94 69 97
输出:
200906294 LiWeiwei 88 75 91回车
200902164 ChenHanfu 86 78 93回车
200908079 ZhanGaolin 94 69 97回车
The average grade of course1:89.3333回车
The average grade of course2:74回车
The average grade of course3:93.6667回车 |
#include <iostream>
#include <string.h>
using namespace std;
class Student
{
private:
char name[20];
char id[20];
int grade1,grade2,grade3;
static int tgrade1,tgrade2,tgrade3;//静态成员在类的所有对象中是共享的。
public:
Student(char *name1,char *id,int g1,int g2,int g3);
void display();
static double average1(){
double ans=tgrade1/3.0;
return ans;
}
static double average2(){
double ans=tgrade2/3.0;
return ans;
}
static double average3(){
double ans=tgrade3/3.0;
return ans;
}
};
int Student::tgrade1=0,Student::tgrade2=0,Student::tgrade3=0;
Student::Student(char *name1,char *id1,int g1,int g2,int g3)
{
strcpy(name,name1);
strcpy(id,id1);
grade1=g1;tgrade1+=g1;
grade2=g2;tgrade2+=g2;
grade3=g3;tgrade3+=g3;
}
void Student::display(){
cout<<name<<" "<<id<<" "<<grade1<<" "<<grade2<<" "<<grade3<<endl;
}
int main(){
Student *stu1,*stu2,*stu3;
char name1[10],name2[10],name3[10];
char num1[12],num2[12],num3[12];
int grade1[3],grade2[3],grade3[3];
cin>>name1>>num1>>grade1[0]>>grade1[1]>>grade1[2];
cin>>name2>>num2>>grade2[0]>>grade2[1]>>grade2[2];
cin>>name3>>num3>>grade3[0]>>grade3[1]>>grade3[2];
stu1 = new Student(name1,num1,grade1[0],grade1[1],grade1[2]);
stu2 = new Student(name2,num2,grade2[0],grade2[1],grade2[2]);
stu3 = new Student(name3,num3,grade3[0],grade3[1],grade3[2]);
stu1->display();
stu2->display();
stu3->display();
cout<<"The average grade of course1:"<<stu2->average1()<<endl;
cout<<"The average grade of course2:"<<stu2->average2()<<endl;
cout<<"The average grade of course3:"<<stu2->average3()<<endl;
return 0;
}
char *strcpy(char *dest, const char *src);
该函数接收两个参数:目标字符串(dest)和源字符串(src)。
完成String类(C++)
通过课程进入 | 题 号: | 149 | 完成String类(C++) | 语言要求: | C++ |
引入CString.h头文件,它的内容如下:
#include <iostream>
using namespace std;
class String{
private:
char *mystr; //字符串
int len; //字符串长度
public:
String(){
len =0;
mystr =NULL;
}
String(const char* p){
len = strlen(p);
mystr = new char[len+1];
strcpy(mystr,p);
}
String(String &s){
len = s.len;
if (len !=0)
{
mystr = new char[len+1];
strcpy(mystr,s.mystr);
}
}
~String(){
if (mystr != NULL)
{
delete []mystr;
mystr =NULL;
len = 0;
}
}
char *GetStr(){return mystr;}
void ShowStr(){cout<<mystr;}
bool IsSubstring(const char *str);
bool IsSubstring(const String &str);
int str2num();
void toUppercase();
};
实现String类的成员方法:
bool IsSubstring(const char *str) 判定字符串str是否为当前String对象的子串,是则返回true,否则返回false。
bool IsSubstring(const String &str) 判断String对象str是否为当前String对象的子串,是则返回true,否则返回false。
int str2num() 将当前String对象转化为数字,转换时忽略出数字以外的字符,
不考虑溢出的情况,如当前字符串为1t2e3s4y5,执行str2num 返回12345。
void toUppercase()将String的字符串的字母全部转化为大写字母。 |
#include <string.h>
#include <iostream>
using namespace std;
class String{
private:
char *mystr;
int len;
public:
String(){
len =0;
mystr =NULL;
}
String(const char* p){
len = strlen(p);
mystr = new char[len+1];
strcpy(mystr,p);
}
String(String &s){
len = s.len;
if (len !=0)
{
mystr = new char[len+1];
strcpy(mystr,s.mystr);
}
}
~String(){
if (mystr != NULL)
{
delete []mystr;
mystr =NULL;
len = 0;
}
}
char *GetStr(){return mystr;}
void ShowStr(){cout<<mystr;}
bool IsSubstring(const char *str);
bool IsSubstring(const String &str);
int str2num();
void toUppercase();
};
bool String::IsSubstring(const String &str) {
int j=0;
for(int i=0;i<len;i++){
if(*(mystr+i)==*(str.mystr+j)){
if(j==str.len-1) return true;
else j++;
}else{
j=0;
}
}
return false;
}
bool String::IsSubstring(const char *str) {
int j=0;
int llen=strlen(str);
for(int i=0;i<len;i++){
if(*(mystr+i)==*(str+j)){
if(j==llen-1) return true;
else j++;
}else{
j=0;
}
}
return false;
}
int String::str2num() {
int ans=0;
for(int i=0;i<len;i++){
if(*(mystr+i)<='9'&&*(mystr+i)>='0'){
ans=ans*10+(*(mystr+i)-'0');
}
}
return ans;
}
void String::toUppercase() {
for(int i=0;i<len;i++){
if(*(mystr+i)<='z'&&*(mystr+i)>='a'){
*(mystr+i)=*(mystr+i)-'a'+'A';
}
}return;
}
int main(){
String a("abddddddbb");
if(a.IsSubstring("dddc")){
cout<<"yes";
}
return 0;
}