12/29
《程序设计方法(C\C++)》是北京理工大学的一门课程,该课通过北京理工大学网络教室评测的编程练习题计算平时成绩。

38 显示学校信息

#include <iostream>
using namespace std;

class person {
	private:
		char name[256];
		int id;
	public:
		person() {
			name[0]='\0';
			id=0;
		}
		virtual void put() {
			cout<<"Name:"<<name<<endl;
			cout<<"Number:"<<id<<endl;
		}
		virtual void get() {
			cin>>name>>id;
		}
};
class student : person {
	private:
		char course[256];
		double grade;
	public:
		student() {
			course[0]='\0';
			grade=0;
		}
		virtual void put() {
			cout<<"Student information:"<<endl;
			person::put();
			cout<<"Course:"<<course<<endl;
			cout<<"Grade:"<<grade<<endl;
		}
		virtual void get() {
			person::get();
			cin>>course>>grade;
		}
};
class teacher : person {
	private:
		char pro[256];
		double paper;
	public:
		teacher() {
			pro[0]='\0';
			paper=0;
		}
		virtual void put() {
			cout<<"Teacher information:"<<endl;
			person::put();
			cout<<"pro:"<<pro<<endl;
			cout<<"paper:"<<paper<<endl;
		}
		virtual void get() {
			person::get();
			cin>>pro>>paper;
		}
};

int main() {
	person p;
	student p1;
	teacher p2;
	p1.get();
	p2.get();
	p1.put();
	cout<<endl;
	p2.put();
	system("pause");
	return 0;
}

39 图书系统

#include<iostream>
#include<string>
using namespace std;
class person {
	private:
		char name[256];
		int age;
	public:
		void setPerson(char* __name,int __age) {
			strcpy(name,__name);
			age=__age;
		}
		char* getName() {
			return name;
		}
		int getAge() {
			return age;
		}
};
class book {
	private:
		int id;
		char name[256];
		char press[256];
		double price;
		person author;
		char print[256];
	public:
		book(int __id,char* __name,char* __press,double __price,person __author,char* __print) {
			id=__id;
			strcpy(name,__name);
			strcpy(press,__press);
			price=__price;
			author=__author;
			strcpy(print,__print);
		}
		void showCard() {
			cout<<"Num:"<<id<<endl;
			cout<<"BookName:"<<name<<endl;
			cout<<"BookConcern:"<<press<<endl;
			cout<<"Price:"<<price<<endl;
			cout<<"AuthorName:"<<author.getName()<<endl;
			cout<<"AuthorAge:"<<author.getAge()<<endl;
			cout<<"PrintTime:"<<print<<endl;
		}
};

int main() {
	char sysname[256];
	cin>>sysname;
	cout<<"SysName:"<<sysname<<endl;
	char name[256],press[256],auname[256],Print[256]="\0",d[256],m[256],y[256];
	int age,id;
	double price;
	cin>>id>>name>>press>>price>>auname>>age;
	cin>>y>>m>>d;
	strcat(Print,y);
	strcat(Print,"-");
	strcat(Print,m);
	strcat(Print,"-");
	strcat(Print,d);
	person author;
	author.setPerson(auname,age);
	book card(id,name,press,price,author,Print);
	card.showCard();
	system("pause");
	return 0;
}

40 求图形面积

注:这道题费了点劲,因为虚函数定义的时候没写函数体,结果出了一堆莫名其妙的错误。

#include <iostream>
#include <cmath>
#define PI 3.14
using namespace std;

class shape {
	protected:
		double x,y;
	public:
		shape(double __x=0,double __y=0) {
			x=__x;
			y=__y;
		}
		virtual double getSquare() {
			return 0;
		};
		virtual char* getType() {
			return "shape";
			return 0;
		};
		friend ostream & operator<<(ostream & output,shape * obj);
};
class triangle : public shape {
	public:
		triangle(double __x=0,double __y=0):shape(__x,__y) { }
		double getSquare() {
			return x*y/2;
		}
		char* getType(){
			return "triangle";
		}
};
class rectangle : public shape {
	public:
		rectangle(double __x=0,double __y=0):shape(__x,__y){ }
		virtual double getSquare() {
			return x*y;
		}
		char* getType(){
			return "rectangle";
		}
};
class circle : public shape {
	public:
		circle(double __x=0,double __y=0):shape(__x,__y){ }
		virtual double getSquare() {
			return pow(x,2)*PI;
		}
		char* getType(){
			return "cirole";
		}
};

ostream & operator<<(ostream & output,shape * obj) {
	output<<obj->getType()<<"Area=";
	output<<obj->getSquare()<<endl;
	return output;
}

int main() {
	double x,y;
	cin>>x>>y;
	shape * s1=new triangle(x,y);
	shape * s2=new rectangle(x,y);
	shape * s3=new circle(x,y);
	cout<<s1<<s2<<s3;
	system("pause");
	return 0;
}