C++习题1,2

习题一

题目一

综合题1.编写一个程序设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。小车类car是它的私有派生类,其中包含载人数pasenger_load。卡车类truck是vehicle的私有派生类,其中包含载人数passenger_load和载重量payload,每个类都有相关数据的输出方法。

提示:该题主要测试单继承的实现,在程序实现时,vehicle类是基类,由它派生出car和truck类。由于car和truck类都有车轮个数wheels和车重weight这两个公共属性,因此将公共属性和方法放在vehicle类中,其他具体属性放在各自派生类中。

#include <iostream>
using namespace std;

class vehicle{
  private:
  int wheels;
  int weights;
  public:
  vehicle(int m,int n){
  wheels = m;
  weights = n;
  }
  ~vehicle(){
    cout << "The vehicle destruc called"<<endl;
  }
  void print(){
  cout << "The wheels is "<< wheels <<endl;
  cout << "The weights is "<< weights <<endl;
  }
};

class car:private vehicle{
  private:
  int passenger_load;
  public:
  car(int m,int n,int p):vehicle(m,n){
    passenger_load = p;
  }
  ~car(){
    cout << "The car destruct called" << endl;
  }
  void print(){
     cout <<"The load is " << passenger_load << endl;
  }
};

class truck:private vehicle{
  private:
  int payload;
  int passenger_load;
  public:
  truck(int m,int n,int p1,int p2):vehicle(m,n){
  payload = p1;
  passenger_load = p2;
  }
  ~truck(){
    cout << "The truck destruct called" << endl;
  }
  void print(){
  cout << "The load is "<< passenger_load <<endl;
  cout << "The payload is "<< payload << endl;
  }
};
 

int main()
{
  vehicle a(4,200);
  a.print();
  //car b(4,100,5);
  //b.print();
  truck c(4,1000,10000,4);
  c.print();

  return 0;
}

题目二

要求:编写一个程序,输入N个学生数据,包括学号,姓名,成绩,要求输出这些学生数据并计算平均分

提示:设计一个学生类Stud,除了包括no(学号),name(姓名)和deg(成绩)数据成员外,有两个静态成员sum和num,分别存放总分和人数,别有两个普通成员函数setdata()和disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),用于计算平均分,在main()函数中定义一个对象数组用于存储输入的学生数据。

#include<iostream>
using namespace std;
#include<bits/stdc++.h>

class stud
{
  private:
  int no,deg;
  char name[];
  static int sum;
  static int num;
  public:
  void setdata(int n,char na[],int s)
  {
    no = n;
    strcpy(name,na);
    deg = s;
    num++;
    sum+=s;
  }
  static double avg()
  {
    return sum/num;
  }
  void disp()
  {
    cout << no<< " " << name <<" "<< deg << endl;
  }
};
int stud::sum = 0;
int stud::num = 0;
int main()
{
  stud s1,s2;
  s1.setdata(1,"yi",80);
  s2.setdata(2,"er",90);
  s1.disp();
  s2.disp();
  int s = stud::avg();
  cout << s << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值