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实验二的更多相关文章

  1. 20145215&20145307《信息安全系统设计基础》实验二 固件设计

    20145215&20145307<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux ...

  2. FPGA与simulink联合实时环路系列——实验二LED

    实验二LED 实验内容 在实验一的基础上,将simulink产生的测试信号输出到FPGA开发板上的LED灯进行显示,这里要在生成的硬件模型上进行修改,将传送到FPGA的信号输出到8个LED灯上,并且对 ...

  3. 20145204&20145212信息安全系统实验二

    20145204&20145212信息安全系统实验二 链接

  4. 20145204&20145212实验二报告

    实验二固件设计 步骤: 1.开发环境的配置,参考实验一 1.将实验代码拷贝到共享文件夹中. 2.在虚拟机中编译代码.对于多线程相关的代码,编译时需要加-lpthread的库.下载调试在超级终端中运行可 ...

  5. 20145215实验二 Java面向对象程序设计

    一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二.实验步骤 (一)单元测试 (1)三种代码 伪代码: ...

  6. 实验二 用C语言表示进程的调度

    实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...

  7. 20145218&20145240 《信息安全系统设计基础》实验二 固件设计

    20145218&20145240 <信息安全系统设计基础>实验二 固件设计 实验报告链接:http://www.cnblogs.com/20145240lsj/p/6035512 ...

  8. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  9. 实验二 PHP基本语法实验

    实验二 PHP基本语法实验 0 实验准备 0.1实验环境和相关工具软件 具体到的机房环境,请在Windowsxp环境下做本实验: l  操作系统:Windowsxp l  Web服务器:Apache ...

随机推荐

  1. 浅谈Object.assign()

    Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.返回值为目标对象. 1 Object.assign 是 ES6 新添加的接口,主要的用途是用来合并多个 Ja ...

  2. 实时输出topk最频繁变动的股价

    网上看到了一道关于bloomburg的面试题,follow 评论的思路 自己试着写了一个HashHeap的实现. 基本思路是维护一个大小为K的最小堆,里面是topK股价变动的公司ID(假设ID是Int ...

  3. 在servlet中跳转问题

    跳转有重定向和转发 1重定向 2转发

  4. JS 清除DOM 中空白元素节点

    HTML中的空白节点会影响整体的HTML的版面排榜 例如: 制作百度首页时,两个input之间的空白节点将本来是要整合在一起的搜索栏硬是把按钮和搜索框分离出现好丑的间隙 这时我们就可以用js清除这个空 ...

  5. mpeg4文件分析(纯c解析代码)

    参考链接: 1. MPEG4码流的帧率计算 https://blog.csdn.net/littlebee90/article/details/68924690                2. M ...

  6. Spark Streaming的容错和数据无丢失机制

    spark是迭代式的内存计算框架,具有很好的高可用性.sparkStreaming作为其模块之一,常被用于进行实时的流式计算.实时的流式处理系统必须是7*24运行的,同时可以从各种各样的系统错误中恢复 ...

  7. case when 和 decode 的比较分析

    一.case when 与 if - else 类似,语句如下:CASE expr WHEN expr1 THEN return_expr1         [WHEN expr2 THEN retu ...

  8. Java 平时作业五

    使用 I/O 流和文件对象实现目录备份功能. package asg5; import java.io.File; import java.io.FileInputStream; import jav ...

  9. node.js 之 N-blog

    N-blog  使用 Express + MongoDB 搭建多人博客 原文地址: https://github.com/nswbmw/N-blog 建议初学者,研究下整个项目. 这里节选了一些内容为 ...

  10. python爬虫基础_requests和bs4

    这些都是笔记,还缺少详细整理,后续会更新. 下面这种方式,属于入门阶段,手动成分比较多. 首先安装必要组件: pip3 install requests pip3 install beautifuls ...