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 ...
随机推荐
- Https 单向验证 双向验证
通讯原理 participant Client participant Server Client->>Server: 以明文传输数据,主要有客户端支持的SSL版本等客户端支持的加密信息 ...
- 电脑小白和ta的小白电脑——JAVA开发环境
JAVA开发环境的搭建有一点点复杂,不过一步一步来一般不会出错. (一)下载JDK 首先我们需要下载java开发工具包JDK,可以通过官网下载:http://www.oracle.com/techne ...
- npm由来和作用
npm由来 本文转载自: https://blog.csdn.net/qq_37696120/article/details/80507178 npm作用 本文转载自: https://www.cnb ...
- JDBC Request
1.下载jdbc驱动,放至jmeter安装目录的lib目录和lib\ext目录下 PS:自己操作的时候,由于JDBC Connection Configuration中驱动名称写错,前面多了一个空格, ...
- Python——字符串、文件操作,英文词频统计预处理
一.字符串操作: 解析身份证号:生日.性别.出生地等. 凯撒密码编码与解码 网址观察与批量生成 2.凯撒密码编码与解码 凯撒加密法的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左 ...
- angular 定时函数
注入$interval,$timeout 服务 2.定义函数 var aa = $interval(function(){ $timout(function(){ ..... }) },,定时时间 ...
- scrapy splash 之一二
scrapy splash 用来爬取动态网页,其效果和scrapy selenium phantomjs一样,都是通过渲染js得到动态网页然后实现网页解析, selenium + phantomjs ...
- java基础知识—变量、数据类型和运算符
1.变量:存储数据的一个基本单元.2.变量的声明和赋值: 1)声明并赋值;数据类型 变量名=值 例如:int prince=10; 2) 声明.赋值分为两步: 数据类型 变量名: 例如:int=pri ...
- 菜鸟python之路-第五章(记录读书点滴)
数字 1.数字类型 python支持多种数字类型:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数 . 创建数值对象并赋值 aint=1 along=-999999999999999L aflo ...
- .Net Core+Angular6 学习 第三部分(从api获取data)
. 现在开始需要集成angular6到VS项目中 1.1 打开Startup.cs文件, 在ConfigureServices方法中配置angular files的目录. 1.2 在Configure ...