cpp实验二
1.函数重载编程练习
编写重载函数add(),实现对int型,double型,Complex型数据的加法。在main()函数中定义不同类型 数据,调用测试。
#include<iostream>
using namespace std;
struct Complex {
double real;
double imaginary;
}; int add(int a, int b)
{
return a + b;
}
double add(double a, double b)
{
return a + b;
}
Complex add(Complex a, Complex b)
{
Complex i;
i.real = a.real + b.real;
i.imaginary = a.imaginary + b.imaginary;
return i;
};
int main() {
int m, n;
cout << "Enter two integer:";
cin >> m >> n;
cout << "Their sum:" << add(m, n) << endl; double x, y;
cout << "Enter two real number:";
cin >> x >> y;
cout << "Their sum:" << add(x, y) << endl; Complex a, b, c;
cout << "Enter two complex unmber:";
cin >> a.real >> a.imaginary;
cin >> b.real >> b.imaginary;
c = add(a, b);
cout << "Their sum:" << c.real << "+" << c.imaginary << "i" << endl;
return ;
}

2.函数模板编程练习
编写实现快速排序函数模板,并在main()函数中,定义不同类型数据,调用测试。
#include<iostream>
using namespace std;
void QS(int a[], int, int);
int main()
{
int a[] = { ,,,,,,,,, }, k;
int n = ;
cout << "Before sort:" << endl;
for (k = ; k < n; k++)
cout << a[k] << ",";
cout << endl;
QS(a, , n - );
cout << "After sort:" << endl;
for (k = ; k < n; k++)
cout << a[k] << ",";
cout << endl;
return ;
} void QS(int s[], int left, int right)
{
if (left < right)
{
int i = left, j = right, x = s[left];//取出数组中第一个数
while (i < j)
{
while (i < j && s[j] >= x) // 从右侧找第一个小于x的数
j--;
if (i < j)
s[i++] = s[j];
while (i < j && s[i] < x) // 从左侧找第一个大于等于x的数
i++;
if (i < j)
s[j--] = s[i];
}
s[i] = x;
QS(s, left, i - ); // 数组中的数依次排序
QS(s, i + , right);
}
}

快速排序的关键就是从左侧和右侧找比原数大或者小的数,并且交换。
3.类的定义、实现和使用编程练习
#include <iostream>
#include <string>
using namespace std; // User类的声明
class User {
public:
User() :name(""), passwd(""), email("") {}; void setInfo(string name, string password = "", string email = ""); //×××(补足代码)
// 声明带有默认形参值的成员函数setInfo()
// 密码默认值为6个1
// 邮箱默认值为空串
void changePasswd();
void printInfo();
private:
string name;
string passwd;
string email;
};
// User类的实现
void User::setInfo(string name0, string password0, string email0)
{
name = name0;
passwd = password0;
email = email0;
}
// 成员函数setInfo()的实现
void User::changePasswd()
{
int count = ;
string passwd1;
string newpasswd;
cout << "the old password:";
cin >> passwd1;
while (passwd1 != ""&&count <=
)
{
count++;
cout << "请重新输入";
cin >> passwd1;
}
if (count > )
{
cout << "plesae try later" << endl;
}
else
{ cout << "Enter new password:"<<newpasswd;
cin >> newpasswd;
cout << "the password is changed successfully" << endl;
passwd = newpasswd;
}
}// 功能:设置用户名(name), 密码(passwd), 联系邮箱(email)
// 成员函数changePasswd()的实现
// 功能:修改密码
// 要求:在修改密码前,要求先输入旧密码,验证无误后,才允许修改。
// 如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。
// 补足代码
void User::printInfo()
{
cout << "name: " << name << endl;
cout << "password: " << "******" << endl;
cout << "email: " << email << endl;
} // 成员函数printInfo()的实现
// 功能:打印用户信息
// 要求: 密码以6个*显示
// 补足代码
// ×××基础实现版预期运行结果截图:(实际编写后,请修改main()中对象实例测试) // 在主函数中测试User类
// 用User类创建对象,测试类的功能
int main() {
cout << "testing 1......" << endl;
// 测试1
User user1;
user1.setInfo("Leonard");
user1.printInfo();
user1.changePasswd();
user1.printInfo(); cout << endl << "testing 2......" << endl << endl;
// 测试2
User user2;
user2.setInfo("Jonny", "", "xyz@hotmail.com");
user2.printInfo();
return ;
}

cpp实验二的更多相关文章
- 20145215&20145307《信息安全系统设计基础》实验二 固件设计
20145215&20145307<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux ...
- FPGA与simulink联合实时环路系列——实验二LED
实验二LED 实验内容 在实验一的基础上,将simulink产生的测试信号输出到FPGA开发板上的LED灯进行显示,这里要在生成的硬件模型上进行修改,将传送到FPGA的信号输出到8个LED灯上,并且对 ...
- 20145204&20145212信息安全系统实验二
20145204&20145212信息安全系统实验二 链接
- 20145204&20145212实验二报告
实验二固件设计 步骤: 1.开发环境的配置,参考实验一 1.将实验代码拷贝到共享文件夹中. 2.在虚拟机中编译代码.对于多线程相关的代码,编译时需要加-lpthread的库.下载调试在超级终端中运行可 ...
- 20145215实验二 Java面向对象程序设计
一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二.实验步骤 (一)单元测试 (1)三种代码 伪代码: ...
- 实验二 用C语言表示进程的调度
实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...
- 20145218&20145240 《信息安全系统设计基础》实验二 固件设计
20145218&20145240 <信息安全系统设计基础>实验二 固件设计 实验报告链接:http://www.cnblogs.com/20145240lsj/p/6035512 ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 实验二 PHP基本语法实验
实验二 PHP基本语法实验 0 实验准备 0.1实验环境和相关工具软件 具体到的机房环境,请在Windowsxp环境下做本实验: l 操作系统:Windowsxp l Web服务器:Apache ...
随机推荐
- numpy中的stack操作:hstack()、vstack()、stack()、dstack()、vsplit()、concatenate()
stack():沿着新的轴加入一系列数组. vstack():堆栈数组垂直顺序(行) hstack():堆栈数组水平顺序(列). dstack():堆栈数组按顺序深入(沿第三维). concatena ...
- 关于JS 的cookie 操作 与 json 的数据结构 问题
今天写了一个购物车,由于购物车内容是保存在 cookie中 所以不想浪费服务器资源做cookie的操作 故在前端封装了一些对象来处理购物车,由于cookie的数据结构的设计是一个json格式 使用 账 ...
- Python入门学习例子——从Hao123获取图片
import urllib.requestimport re #获取html页面内容def getHtml(url): data=urllib.request.urlopen(url) pageCon ...
- centos7 eclispe 编译C++遇到的问题总结
最近由于工作的需要,又开始回归之前已经遗忘了的技术.arm嵌入式这个古老的名词. 开始选择了linuxminit,开始的linuxminit17以前还可以,可是用了一下linuxminit19,发现r ...
- bootstrap中的.container类定义
bootstrap中的.container类定义 .container{ padding-right:15px; padding-left:15px; margin-right:auto; margi ...
- Git问题总结
1 git push origin master 提示Everything up-to-date 表示本地仓库和远程仓库是一致的,没有更新,需要检查自己的提交. 2 git push origin m ...
- vim详解
vim介绍: 1.vim是vi的升级版本 2.vim是带有颜色显示的 3.vim三个模式:一般模式.编辑模式.命令模式 最小化模式下默认是没有安装vim的: [root@linux-xl ~]# yu ...
- shell练习题5
需求如下: 用shell实现,把一个文件文档中只有一个数字的行给打印出来.(以/password文件为例,自行修改) 参考解答如下 方法1 #!/bin/bash file_name=passwd n ...
- pytest自动化2:测试用例setup和teardown
前言: pytest支持函数和类两种用例方式,针对每种情况都有不同的代码 pytest用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(s ...
- java知识点总结--java数据类型
java中的两大数据类型 1.基本数据类型:也称作内置类型,java语言本身提供的基本数据类型是其他类型(包括java核心类和用户自定义类)的基础 2.引用数据类型:java语言根据基本类型扩展数的其 ...