程序设计
1
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Course {
int number;
string name;
int credit;
int n;
float *score;
int max,min;
float average;
int count;
public:
Course(int n);
~Course();
void input();
void process();
void print() {
cout<<"课程编号: "<<number<<endl;
cout<<"课程名称: "<<name<<" 课程学分: "<<credit<<endl;
cout<<"最高分: "<<max<<" 最低分: "<<min<<" 平均分: "<<average<<" 不及格数: "<<count<<endl<<endl;
}
};
Course::Course(int n){
this->n=n;
score=new float[n];
credit=0;count=0;average=0;
}
Course::~Course(){
delete[] score;
}
void Course::input(){
cin>>number>>name>>credit;
for(int i=0;i<n;i++) cin>>score[i];
}
void Course::process(){
max=score[0];min=score[0];
for(int i=0;i<n;i++){
if(max<score[i])max=score[i];
if(min>score[i])min=score[i];
average+=score[i];
if(score[i]<60)count++;
}
average/=n;
}
int main() {
int n;
cin>>n;
Course c(n);
c.input();c.process();c.print();
ifstream in1("6.6.2_2_in.dat");
ofstream out1("6.6.2_2_out.dat");
streambuf *cinbackup;
streambuf *coutbackup;
cinbackup=cin.rdbuf(in1.rdbuf());
coutbackup=cout.rdbuf(out1.rdbuf());
while(cin>>n) {
Course c(n);
c.input();c.process();c.print();
}
cin.rdbuf(cinbackup);
cout.rdbuf(coutbackup);
in1.close();
out1.close();
return 0;
}
2
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
const double PI=3.14159;
class Point{
public:
Point(float xx, float yy){
x=xx;y=yy;
}
float getX() const {
return this->x;
}
float getY() const{
return this->y;
}
void setX(float newX){
this->x=newX;
}
void setY(float newY){
this->y=newY;
}
private:
float x, y ;
};
class Circle:public Point{
public:
Circle(float x=0.0, float y=0.0, float r=1.0):Point(x,y){
this->radius=r;
}
void moveTo(float newX, float newY){
setX(newX);setY(newY);
}
float getRadius() const{
return this->radius;
}
double getCircumference() const {
return 2*PI*radius;
}
double getArea() const {
return PI*radius*radius;
}
double dist(const Circle &c) const {
double x=this->getX()-c.getX();
double y=this->getY()-c.getY();
return sqrt(x*x+y*y);
}
bool isEqual(const Circle &c) const {
if(c.getRadius()==this->getRadius())return true;
return false;
}
private:
float radius;
};
int main() {
float x,y,r;
cin>>x>>y>>r;
Circle c1(x,y,r),c2;
cout<<"初始: "<<endl;
cout<<"c1:圆心: ("<<c1.getX()<<", "<<c1.getY()<<"), "<<"半径: "<<c1.getRadius()<<", 周长: "<<c1.getCircumference()<<", 面积: "<<c1.getArea()<<endl;
cout<<"c2:圆心: ("<<c2.getX()<<", "<<c2.getY()<<"), "<<"半径: "<<c2.getRadius()<<", 周长: "<<c2.getCircumference()<<", 面积: "<<c2.getArea()<<endl;
cout<<"c1与c2圆心之间距离:"<<c1.dist(c2)<<endl;
cout<<"c1与c2大小是否相等:"<<c1.isEqual(c2)<<endl<<endl;
cin>>x>>y;
c2.moveTo(x,y);
cout<<"平移后: "<<endl;
cout<<"c2:圆心: ("<<c2.getX()<<", "<<c2.getY()<<"), "<<"半径: "<<c2.getRadius()<<", 周长: "<<c2.getCircumference()<<", 面积: "<<c2.getArea()<<endl;
cout<<"c1与c2圆心之间距离:"<<c1.dist(c2)<<endl;
cout<<"c1与c2大小是否相等:"<<c1.isEqual(c2)<<endl<<endl;
ifstream in1("7.1.2_1-s2_in.dat");
ofstream out1("7.1.2_1-s2_out.dat");
while(in1>>x>>y>>r) {
Circle c1(x,y,r),c2;
out1<<"初始: "<<endl;
out1<<"c1:圆心: ("<<c1.getX()<<", "<<c1.getY()<<"), "<<"半径: "<<c1.getRadius()<<", 周长: "<<c1.getCircumference()<<", 面积: "<<c1.getArea()<<endl;
out1<<"c2:圆心: ("<<c2.getX()<<", "<<c2.getY()<<"), "<<"半径: "<<c2.getRadius()<<", 周长: "<<c2.getCircumference()<<", 面积: "<<c2.getArea()<<endl;
out1<<"c1与c2圆心之间距离:"<<c1.dist(c2)<<endl;
out1<<"c1与c2大小是否相等:"<<c1.isEqual(c2)<<endl<<endl;
in1>>x>>y;
c2.moveTo(x,y);
out1<<"平移后: "<<endl;
out1<<"c2:圆心: ("<<c2.getX()<<", "<<c2.getY()<<"), "<<"半径: "<<c2.getRadius()<<", 周长: "<<c2.getCircumference()<<", 面积: "<<c2.getArea()<<endl;
out1<<"c1与c2圆心之间距离:"<<c1.dist(c2)<<endl;
out1<<"c1与c2大小是否相等:"<<c1.isEqual(c2)<<endl<<endl;
}
in1.close();
out1.close();
return 0;
}
改错
1
#include <iostream>
using namespace std;
class Test
{
int x;
static int y;
public:
Test() { y+=1; }
Test(int i,int j):x(i)
{ y+=j; }
void display() const;
void display() { cout<<"x="<<x<<", y="<<y<<endl; }
};
int Test::y=0;
void Test::display() const
{ cout<<"x="<<x<<"; y="<<y<<endl; }
int main() {
Test t1; t1.display();
Test t2(1,2); t2.display();
const Test t3(3,4);
t3.display();
return 0;
}
2
#include <iostream>
using namespace std;
class Base {
public:
virtual void display() const{
cout<<"Base::display"<< endl;
}
};
class Derive:public Base {
public:
virtual void display() const;
void display() { cout<<"Derive::display"<<endl; }
};
void Derive::display() const {
cout<<"Derive::display const"<<endl;
}
void Display(const Base &p) {
p.display();
}
int main() {
Base b1; Derive d1;
const Derive d2;
b1.display(); d1.display(); d2.display();
Display(b1); Display(d1); Display(d2);
return 0;
}
填空
1
#include <iostream>
using namespace std;
class A {
int x,y;
public:
A(int a,int b) { x=a, y=b; }
void show() { cout<<x<<", "<<y<<endl; }
};
class B: virtual protected A {
int k;
public:
B(int a,int b,int c):A(a,b) { k=c; }
void show() { cout<<k<<endl; }
};
class C: virtual public A {
int m;
public:
C(int a,int b,int c):A(a,b) { m=c; }
void show() { cout<<m<<endl; }
};
class D: public B,public C {
int n;
public:
D(int a,int b,int c,int d, int e): A(a,b), B(a,b,c), C(a,b,d) { n=e; }
void show() { cout<<n<<endl; }
};
int main() {
D d(1,3,5,7,9);
d.A::show();
d.B::show();
d.C::show();
d.show();
return 0;
}
2
#include <iostream>
using namespace std;
class Date {
public:
Date(int yy=2022,int mm=10,int dd=24);
void setDate(int newY,int newM,int newD);
void showDate() const {
cout<<this->year<<"-"<<this->month<<"-"<<this->day<<endl;
}
bool operator ==(const Date &) const;
friend istream& operator>>(istream &, Date &);
private:
int year,month,day;
};
Date::Date(int yy,int mm,int dd) {
this->year=yy; this->month=mm; this->day=dd;
}
void Date::setDate(int newY,int newM,int newD) {
this->year=newY; this->month=newM; this->day=newD;
}
bool Date::operator ==(const Date &d) const{
if(this->year==d.year && this->month==d.month && this->day==d.day) return true;
else return false;
}
istream &operator >>(istream &in, Date &d) {
in>>d.year>>d.month>>d.day;
return cin;
}
int main() {
int y,m,d;
Date d1,d2;
cin>>d1;
cout<<"日期d1:"; d1.showDate();
cout<<"日期d2:"; d2.showDate();
if(d1==d2) cout<<"d1和d2是同一天"<<endl;
else cout<<"d1和d2不是同一天"<<endl;
cin>>y>>m>>d;
d2.setDate(y,m,d);
cout<<"重置后日期d2:"; d2.showDate();
if(d1==d2) cout<<"d1和d2是同一天"<<endl;
else cout<<"d1和d2不是同一天"<<endl;
return 0;
}