C++语言程序设计实验一 类与对象

Complex.hpp文件源码:
#include <iostream>
using namespace std;
class Complex {
public:
Complex(float r = 0, float i = 0) : real{ r }, imag{ i }{ }
Complex(const Complex& obj) : real{ obj.real }, imag{ obj.imag }{ }
float get_real() const { return real; }
float get_imag() const { return imag; }
void show() const {
if (imag == 0) {
cout << real;
}
else if(imag < 0){
cout << real << " - " << std::abs(imag) << "i";
}
else {
cout << real << " + " << imag << "i";
}
}
void add(const Complex c2) {
real += c2.real;
imag += c2.imag;
}
friend Complex add(Complex c1, Complex c2) {
Complex c3;
c3.real = c1.real + c2.real;
c3.imag = c1.imag + c2.imag;
return c3;
}
friend bool is_equal(Complex c1, Complex c2) {
bool equal = false;
if (c1.real == c2.real && c1.imag == c2.imag) {
equal = true;
}
return equal;
}
friend float abs(Complex c1) {
float m = 0;
m = std::sqrt(c1.real * c1.real + c1.imag * c1.imag);
return m;
}
private:
float real;
float imag;
};
task3.cpp源码:
#include "Complex.hpp"
#include <iostream>
int main()
{
using namespace std;
Complex c1(4, -1);
const Complex c2(-2);
Complex c3(c1);
cout << "c1 = ";
c1.show();
cout << endl;
cout << "c2 = ";
c2.show();
cout << endl;
cout << "c2.imag = " << c2.get_imag() << endl;
cout << "c3 = ";
c3.show();
cout << endl;
cout << "abs(c1) = ";
cout << abs(c1) << endl;
cout << boolalpha;
cout << "c1 == c3 : " << is_equal(c1, c3) << endl;
cout << "c1 == c2 : " << is_equal(c1, c2) << endl;
Complex c4;
c4 = add(c1, c2);
cout << "c4 = c1 + c2 = ";
c4.show();
cout << endl;
c1.add(c2);
cout << "c1 += c2, " << "c1 = ";
c1.show();
cout << endl;
}
运行测试结果截图:


myUser.hpp文件源码 :(由于我的电脑内可能存在User.hpp文件,故使用myUser命名该文件)
#include <iostream>
#include <iomanip> using namespace std; class User {
public:
User(string namestr, string passwdstr = "111111", string emailstr = " ") : name{ namestr }, passwd{ passwdstr }, email{ emailstr }{ n++; }
void set_email() {
string new_email;
cout << "Enter email address: ";
cin >> new_email;
email = new_email;
cout << "email is set successfully\n";
}
void change_passwd() {
string old_passwd, new_passwd;
int count = 0;
cout << "Enter old password: ";
cin >> old_passwd;
while (count < 2) {
if (passwd != old_passwd) {
cout << "password input error. Please re-enter again: ";
cin >> old_passwd;
}
else {
cout << "Enter new password: ";
cin >> new_passwd;
passwd = new_passwd;
cout << "new password is set successfully...\n";
return;
}
count++;
}
if (passwd != old_passwd) {
cout << "password input error. Please try after a while.\n";
}
else {
cout << "Enter new password: ";
cin >> new_passwd;
passwd = new_passwd;
cout << "new password is set successfully...\n";
}
}
void print_info() {
cout << left << setw(8) << "name:" << name << endl;
cout << setw(8) << "passwd:" << "******" << endl;
cout << setw(8) << "email:" << email << endl;
}
void static print_n() {
cout << "there are " << n << " users.";
} private:
string name;
string passwd;
string email;
static int n;
};
task4.cpp源码:
#include "myUser.hpp"
#include <iostream> int User::n = 0; int main()
{
using namespace std;
cout << "testing 1......" << endl;
User user1("Luna", "46713", "112@hotmail.com");
user1.print_info();
cout << endl
<< "testing 2......" << endl
<< endl;
User user2("Leonard");
user2.change_passwd();
user2.set_email();
user2.print_info();
User::print_n();
}
运行测试结果截图:



C++语言程序设计实验一 类与对象的更多相关文章
- 160809208沈昊辰c语言程序设计实验选择结构设计
<C语言程序设计>实验报告 学 号 160809208 姓 名 沈昊辰 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C区二层机房 ...
- 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...
- 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...
- C语言程序设计实验报告三
C程序设计实验报告 姓 名:张美盛 实验地点:家 实验时间:2020年3月29日 实验项目:4.3.1 If语句的应用 4.3.2 switch-case的应用 4.3.3 switch-case嵌套 ...
- C语言程序设计实验报告四
C程序设计实验报告 姓 名:赖瑾 实验地点:家 实验时间:2020年4月9日 实验项目:5.3.1练习2 求数列的前n项和 5.3.2练习2 求水仙花数 5.3.4 十进制转换 5.3.5练习1 百马 ...
- C语言程序设计实验报告(第一次实验)
C程序设计实验报告 实验项目:C语言程序设计教程实验1.3.2:1.3.3:1.3.4:2.3.1:2.3.2 姓名:赖瑾 实验地点:家 实验时间:2020.2.25 目录 C程序设计实验报告 一.实 ...
- Apex语言(八)类和对象
1.类和对象 一切皆对象,是客观存在的万物,有标识.属性和行为.一个人,一台电脑,一辆轿车都是对象 类是创建对象的模板或蓝图,是对象的抽象,是对象的类型. 一个对象是一个类的一个实例,是一个类的变量. ...
- 160809209_李梦鑫_C语言程序设计实验2 选择结构程序设计
实验2-1 输入3个数,并按由大到小的顺序输出. 实验要求: 编写一个C程序,输入3个数,并按由大到小的顺序输出. 源码:#include <stdio.h> int main() { i ...
- 符瑞艺 160809228_C语言程序设计实验2 选择结构程序设计
实验2- 输入3个数,并按由大到小的顺序输出. 实验要求: 编写一个C程序,输入3个数,并按由大到小的顺序输出. 参考: 源码: #include <stdio.h> int main() ...
- 学号160809224姓名黄家帅c语言程序设计实验2 选择结构程序设计
实验2-1 输入3个数,并按由大到小的顺序输出. 实验要求: 编写一个C程序,输入3个数,并按由大到小的顺序输出. 源码: #include <stdio.h>void main(){ i ...
随机推荐
- Redis 中ZSET数据类型命令使用及对应场景总结
转载请注明出处: 目录 1.zadd添加元素 2.zrem 从有序集合key中删除元素 3.zscore 返回有序集合key中元素member的分值 4.zincrby 为有序集合key中元素增加分值 ...
- Spring MVC的运行流程
Spring MVC的运行流程 摘要:本文档主要结合官方给出的Spring MVC流程图结合一个简单的Spring MVC实例,分析并介绍了Spring MVC的运行流程. 目录 Spring MVC ...
- lwl-resume 个人简历编辑使用说明
LWL RESUME 是一个简洁.可自定义生成pdf的在线简历编辑工具! 如果你喜欢这种简约格式的简历风格,可以尝试用它来编辑简历 . 注意事项 不支持手机端编辑!请务必使用最新版Chrome(谷歌浏 ...
- 优化if...else...语句
写代码的时候经常遇到这样的场景:根据某个字段值来进行不同的逻辑处理.例如,不同的会员等级在购物时有不同的折扣力度.如果会员的等级很多,那么代码中与之相关的if...elseif...else...会特 ...
- VUEX 使用学习三 : mutations
转载请注明出处: 在 Vuex 中 store 数据改变的唯一方法就是提交 mutations.mutations里面装着一些改变数据方法的集合,这是Vuex 设计很重要的一点,就是把处理数据逻辑方法 ...
- Windows 安装 Anaconda
下载 anaconda 官网 https://repo.anaconda.com/archive/ 国内镜像 https://mirrors.bfsu.edu.cn/anaconda/archive/ ...
- Ubuntu 安装播放器
安装 VLC sudo snap install vlc snap 下载慢的看这里https://www.cnblogs.com/Ahtelek/p/ubuntu-snap.html
- 为啥要对jvm做优化?
摘要:在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行.绝大部分的参数保持默认即可. 本文分享自华为云社区<为什么需要对jvm进行优化,jvm运行参数之标准参数& ...
- 12月22日内容总结——django中间件的三个了解要求的方法、基于django中间件的功能设计、cookie与session
目录 一.django中间件三个了解的方法 二.django中间件五个方法的执行流程详解 三.基于django中间件的功能设计 功能设计介绍 如何利用字符串导入模块 功能模拟 四.cookie与ses ...
- 线程、GIL、协程
1.多进程实现TCP服务端并发 1.之前我们学习了一个服务端对应一个客户端的操作,但是我们无法实现一个服务端对应多个客户端的操作.因此我们需要在pycharm的右上角点击倒三角,选择Edit Conf ...