目录

一、需要求3个长方体的体积,请编一个基于对象的程序。数据成员包括length(长)、width(宽)、height(高)。要求同成员函数实现以下功能。

二、建立一个对象数组,内放5个学生的数据(学号、成绩)。

三、商店销售某一商品,商店每天公布统一的折扣(discount),同时允许销售人员在销售时灵活掌握售价(price)。在此基础上,对一次购10件以上的顾客,还可以享受9.8折优惠。现已知当天有3个销货员的销售情况为:

一、需要求3个长方体的体积,请编一个基于对象的程序。数据成员包括length(长)、width(宽)、height(高)。要求同成员函数实现以下功能。

(1)由键盘分别输入3个长方体的长、宽、高;

(2)计算长方体的体积;

(3)输出3个长方体的体积。

思路

该题目中长方体类只有一个计算体积的成员函数,于是使用内联函数的方式实现。分别获取三个长方体的长、宽、高,用于初始化长方体对象,然后调用函数输出长方体体积。

参考代码

#include <iostream>
using namespace std;class Rectangle{
public:Rectangle(float l,float w,float h){  //构造函数 length = l; width = w; height = h;}float volume(){ //求体积函数 return length*width*height;}
private:float length,width,height;
}; int main(){float al,aw,ah,bl,bw,bh,cl,cw,ch,av,bv,cv;//获取长方体a的长宽高 cout << "------- a -------" << endl; cout << "Input length:";cin >> al;cout << "Input width:";cin >> aw;cout << "Input height:";cin >> ah;//获取长方体b的长宽高 cout << "------- b -------" << endl;cout << "Input length:";cin >> bl;cout << "Input width:";cin >> bw;cout << "Input height:";cin >> bh;//获取长方体c的长宽高 cout << "------- c -------" << endl;cout << "Input length:";cin >> cl;cout << "Input width:";cin >> cw;cout << "Input height:";cin >> ch;Rectangle a(al,aw,ah);Rectangle b(bl,bw,bh);Rectangle c(cl,cw,ch);cout << "\n ---- volume ----" <<endl; cout << "a: " << a.volume() << endl; //输出长方体a的体积cout << "b: " << b.volume() << endl; //输出长方体b的体积cout << "c: " << c.volume() << endl; //输出长方体c的体积return 0;
}

结果

二、建立一个对象数组,内放5个学生的数据(学号、成绩)。

(1)用指针指向数组首元素,输出第1、3、5个学生的数据;

(2)设立一个函数max,用指向对象的指针作函数参数。在max函数中找出5个学生中学生成绩最高者,并输出其学号。

思路

建立一个对象数组,用指针指向其首地址,移动指针输出对象;函数Max以对象指针为参数,比较成绩找到最高者并输出。使用了参数初始化表初始化;主要需要注意对象数组建立,实际上是同时实例化一组对象。

参考代码

#include <iostream>
using namespace std;class Student{
public:Student(string num,float s):number(num),score(s){}; //使用参数初始化表初始化数据成员void display(); //输出学生信息函数 friend void max(Student *p);
private:string number; //学号 float score; //成绩
};
void Student::display(){cout << "学号:" << number << endl;cout << "成绩:" << score << endl; cout << "------------"<< endl;
}
void max(Student *p){ //指向对象的指针作参数 Student *temp = p;for(int i=0;i<5;i++)if(temp->score<(temp+i)->score)temp+=i;cout << "成绩最高者为:"<< temp->number << endl; //输出成绩最高者学号
}int main(){Student Stu[]={Student("2018215112",96),Student("2018215110",98),Student("2019214120",87),Student("2019211124",95),Student("2019222111",66)};Student *p = Stu;for(p=Stu;p<Stu+5;p+=2)p->display();max(Stu);
}

结果

三、商店销售某一商品,商店每天公布统一的折扣(discount),同时允许销售人员在销售时灵活掌握售价(price)。在此基础上,对一次购10件以上的顾客,还可以享受9.8折优惠。现已知当天有3个销货员的销售情况为:

销货员号(num)

销货件数(quantity)

销货单价(price)

101

5

23.5

102

12

24.56

103

100

21.5

请编程,计算出当日此商品的总销售额sum以及每件商品的平均售价。

要求用静态数据成员和静态成员函数(提示:将折扣discount、总销售额sum、商品销售总件数n声明为静态数据成员;再定义静态成员函数average(求平均售价)和display(输出结果))

思路

使用对象数组实例化三个对象,在类中定义了静态成员变量和静态成员函数让数据为所有对象共享。每个对象调用total函数计算总销售额和总件数;求平均售价。要注意静态成员函数必须调用静态成员变量。

参考代码

#include <iostream>
using namespace std;class Commodity{
public:Commodity(int n,int q,float p):num(n),quantity(q),price(p){} //参数初始化表初始化 void total(); //求总销售额和总销售件数函数 static float average(); //求平均售价的静态成员函数 static void display(); //输出总销售额和平均售价的静态成员函数
private:int num;int quantity;float price;static int n;static float discount,sum;
};int Commodity::n = 0;
float Commodity::discount = 0.95;
float Commodity::sum = 0; //静态成员必须赋初始值  void Commodity::total(){float rate = 1.0;if(quantity>10)rate = 0.98;sum = sum + price*quantity*rate*discount; //求总销售额 n = n+quantity; //求总销售件数
}float Commodity::average(){return (sum/n);  //求平均售价
} void Commodity::display(){ //输出总销售额和平均售价 cout << "总销售额:" << sum << endl;cout << "平均售价:" << average() << endl;
}int main(){Commodity Com[3] = {Commodity(101,5,23.5),Commodity(102,12,24.56),Commodity(1.3,100,21.5)}; //使用对象数组存放三个销售员情况 for(int i=0;i<3;i++)Com[i].total(); //对于每个对象调用total函数,统计三个销售员的情况 Commodity::display(); //输出最终结果 return 0;
}

结果

四、定义一个复数类Complex,重载运算符“+”使之能用于复数之间的加法运算。参加运算的两个运算量都可以是类对象,也可以其中一个是整数,顺序任意。例如:c1+c2,i+c1,c1+i均合法(设i为整数,c1、c2为复数)。

编程:分别求两个复数之和,整数和复数之和。

思路

分别使用成员函数和友元函数的方式实现了复数类的“+”运算符重载,同时重载输出输出流。其中使用成员函数完成整数与复数相加重载时使用成员函数不易实现,使用友元函数的形式。通过本题目可以对比两种运算符重载方式在形式上的不同。

参考代码

//第一种实现
//以友元函数的形式重载复数加法运算
#include <iostream>
using namespace std;class Complex{
public:Complex(double r=0,double i=0){ //带默认参数构造函数real = r;image = i;}friend Complex operator +(Complex x,Complex y);  //重载两个复数加法运算 friend Complex operator +(int k,Complex c); //重载整数与复数的加法运算friend Complex operator +(Complex c,int k); //重载复数与整数的加法运算friend ostream& operator <<(ostream&,const Complex&);  //重载输出流 friend istream& operator >>(istream&,Complex&);  //重载输入流
private:double real,image;
}; Complex operator +(Complex x,Complex y){return Complex(x.real+y.real,x.image+y.image);
}
Complex operator +(Complex c,int k) {return Complex(c.real+k,c.image);
}
Complex operator +(int k,Complex c){return Complex(c.real+k,c.image);
} ostream& operator << (ostream& os,const Complex& c){if(c.real != 0)os << c.real;if(c.image > 0)os << '+' << c.image << 'i';if(c.image < 0)os << c.image << 'i';return os;
} istream& operator >>(istream& is,Complex& c){cout << "输入实部:";is >> c.real;cout << "输入虚部:";is >>c.image;return is;
}int main(){Complex c1,c2;int i;cout << "输入c1:"<< endl;cin >> c1;cout << "c1 = " << c1 << endl; cout << "------------" << endl; //展示复数c1结果cout << "输入c2:" << endl;cin >> c2;cout << "c2 = " << c2 << endl;cout << "------------" << endl; //展示复数c2结果cout << "输入i:" << endl;cin >> i; cout << "i = " << i << endl;cout << "------------" << endl; //展示整数i结果Complex c3 = c1 + c2;Complex c4 = c1 + i;Complex c5 = i + c1;cout << "------------" << endl;cout << "c1 + c2 = " << c3 << endl; //复数相加cout << "c1 + i = " << c4 << endl; //复数与整数相加cout << "i + c1 = " << c5 << endl; //整数与复数相加return 0;
}//第二种实现
//以成员函数的形式重载复数加法运算
#include <iostream>
using namespace std;class Complex{
public:Complex(double r=0,double i=0){ //带默认参数构造函数real = r;image = i;}Complex operator +(Complex &c);  //重载加法运算 Complex operator +(int k); //重载复数与整数的加法运算friend Complex operator +(int k,Complex c); //重载整数与复数的加法运算friend ostream& operator <<(ostream&,const Complex&);  //重载输出流 friend istream& operator >>(istream&,Complex&);  //重载输入流
private:double real,image;
}; Complex Complex::operator +(Complex &c){return Complex(real+c.real,image+c.image);
}
Complex Complex::operator +(int k) {return Complex(real+k,image);
}
Complex operator +(int k,Complex c){return Complex(c.real+k,c.image);
} ostream& operator << (ostream& os,const Complex& c){if(c.real != 0)os << c.real;if(c.image > 0)os << '+' << c.image << 'i';if(c.image < 0)os << c.image << 'i';return os;
} istream& operator >>(istream& is,Complex& c){cout << "输入实部:";is >> c.real;cout << "输入虚部:";is >>c.image;return is;
}int main(){Complex c1,c2;int i;cout << "输入c1:"<< endl; cin >> c1;cout << "c1 = " << c1 << endl; cout << "------------" << endl; //展示复数c1结果cout << "输入c2:" << endl;cin >> c2;cout << "c2 = " << c2 << endl;cout << "------------" << endl; //展示复数c2结果cout << "输入i:" << endl;cin >> i; cout << "i = " << i << endl;cout << "------------" << endl; //展示整数i结果Complex c3 = c1 + c2;Complex c4 = c1 + i;Complex c5 = i + c1;cout << "c1 + c2 = " << c3 << endl; //复数相加cout << "c1 + i = " << c4 << endl; //复数与整数相加cout << "i + c1 = " << c5 << endl; //整数与复数相加return 0;
}

C++编程练习:计算长方体体积、对象数组求学生成绩最高者、销售应用问题、重载复数加法运算相关推荐

  1. c++对象数组模学生成绩管理系统Demo

    文章目录 一.设计要求 二.设计说明 三.实现效果 四.给出完整代码 一.设计要求 写一个学生成绩管理系统,包含学号,姓名,成绩等学生信息. 将数据存入二进制文件.dat中. 实现对学生信息的显示.查 ...

  2. python计算长方体体积最简单代码_C语言编程简单的小程序,计算长方体体积!...

    计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...

  3. 编写程序计算长方体的体积python_【自学编程】C语言编程简单的小程序,计算长方体体积!...

    计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...

  4. 【自学编程】C语言编程简单的小程序,计算长方体体积!

    计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...

  5. c语言prime函数怎么用_【自学编程】C语言编程简单的小程序,计算长方体体积!...

    计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...

  6. XDOJ例题及答案第六更 哥德巴赫猜想 工资发放 工资计算 购房贷款计算 后项除以前项 画图灰度直方图 回文数 计算某月天数 计算球的体积 计算球体质量 计算长方体体积

    目录 哥德巴赫猜想 工资发放 工资计算 购房贷款计算 后项除以前项 画图 灰度直方图 回文数 计算某月天数 计算球的体积 计算球体质量 计算长方体体积 哥德巴赫猜想 #include<stdio ...

  7. [转载] JAVA数组实现学生成绩统计

    参考链接: Java程序的输出 20(继承) 一.项目名称 数组实现学生成绩统计 二.项目描述 1.项目简介: 由用户输入学生人数与名字,并定义当前学期课程数与课程名,并分别录入每位学生每门课程成绩, ...

  8. C语言汇总学生成绩,c语言用二维数组统计学生成绩.doc

    c语言用二维数组统计学生成绩 # include /*定义一个求每门课平均成绩的函数AverageCourse 它的形参一个是二维数组,用来传递学生成绩: 一个是指针变量(数组名),存放每门课的平均成 ...

  9. (篇十)用结构体数组处理学生成绩、结构体类型函数求平均值

    文章目录 一.结构体变量 二.用结构体数组处理学生成绩 三.结构体类型函数求平均值 用C语言学好结构化编程逻辑!本篇主要分析结构体数组和结构体类型的函数,对于二级C语言来说,主要是考处理学生多个成绩上 ...

最新文章

  1. Visual Studio的一些快捷键(转载)
  2. 网页后门工具laudanum
  3. GNS3 串口连接问题
  4. android中关于点击屏幕,实现破碎的效果的实现
  5. android 联想,民间高手让联想Yoga变安卓平板_联想笔记本电脑_笔记本新闻-中关村在线...
  6. 一文讲透大型网站架构模式核心原理与案例分析
  7. 代码风格之Prettier简介
  8. 软链接文件和硬链接文件
  9. Windbg 查看SSDT表
  10. Promise源码实现
  11. 车辆及其应用的车载语音识别显示方法及系统与流程
  12. vue 日期多选插件
  13. android 373dpi对应的布局,[荣耀6X BLN-AL10] EMUI5.0 B373 自定义DPI 来电闪光 接听 录音 核心控制 性能调节 游戏模式 稳定精简顺畅等...
  14. 彻底禁用Microsoft Compatibility telemetry
  15. 关于UI使用ContentSizeFitter组件同步立即响应
  16. 量化交易中,如何快速把股票代码转换成Int整形?
  17. 美食地图-兵俤粉干店
  18. 华为机试真题 C++ 实现【模拟商场优惠打折】【2022.11 Q4 新题】
  19. 2021牛客多校#4 E-Tree Xor
  20. 设计模式 ----- 设计模式总结

热门文章

  1. 【JNLP】什么是JNLP
  2. 无线蓝牙模块在汽车DSP的应用
  3. DEI1016BD429使用遇到的问题及解决
  4. Apollo项目导航模式下的坐标转换研究
  5. 利用代码制作电脑中毒假象
  6. 向量叉积求平面平行四边形面积
  7. 天平与天蝎的神话(转)
  8. 微软虐我千百遍——记一次比较漫长的TFS数据库迁移
  9. python统计代码行数_python实现统计代码行数的方法
  10. 在unity中读取并可视化dicom图像(fo-dicom / C# / unity)