实验结论

1.函数重载编程练习:

编写重载函数add(),实现对int型,double型,Complex型数据的加法。在main( )函数中定义不同类型 数据,调用测试。

 #include <iostream>
using namespace std; struct Complex{
double real;
double imaginary;
};
int add(int,int);
double add(double,double);
Complex add(Complex,Complex);
int main(){
int a1,a2,asum;
double b1,b2,bsum;
Complex c1,c2,csum;
cout<<"please enter two integers:";
cin>>a1>>a2;
asum=add(a1,a2);
cout<<a1<<"+"<<a2<<"="<<asum<<endl;
cout<<"please enter two real numbers:";
cin>>b1>>b2;
bsum=add(b1,b2);
cout<<b1<<"+"<<b2<<"="<<bsum<<endl;
cout<<"please enter two plurals:";
cin>>c1.real>>c1.imaginary>>c2.real>>c2.imaginary;
cout<<"c1"<<"="<<c1.real<<"+"<<c1.imaginary<<"i"<<endl;
cout<<"c2"<<"="<<c2.real<<"+"<<c2.imaginary<<"i"<<endl;
csum=add(c1,c2);
cout<<"c1+c2"<<"="<<csum.real<<"+"<<csum.imaginary<<"i"<<endl;
return ;
}
int add(int a1,int a2){
int asum;
asum=a1+a2;
return asum;
}
double add(double b1,double b2){
double bsum;
bsum=b1+b2;
return bsum;
}
Complex add(Complex c1,Complex c2){
Complex csum;
csum.real=c1.real+c2.real;
csum.imaginary=c1.imaginary+c2.imaginary;
return csum;
}

运行截图

2.函数模板编程练习

编写实现快速排序函数模板,并在main( )函数中,定义不同类型数据,调用测试。(算法可参考这里, 内有排序示意图及算法逻辑)

参考了网上许多快速排序法的程序,此程序参考(https://www.cnblogs.com/miracleswgm/p/9199124.html)

(1)整数排序

 #include <iostream>
#include <iomanip>
using namespace std;
void Quicksort(int num[],int left,int right);
int partition(int num[], int left, int right); int main(){
int i;
int num[]={,,,,,,,,,};
Quicksort(num,,);
for(i=;i<=;i++)
cout<<num[i]<<setw();
cout<<endl;
return ;
} int partition(int num[], int left, int right)
{
int i = left + ;
int j = right;
int temp = num[left]; while(i <= j)
{
while (num[i] < temp)
{
i++;
}
while (num[j] > temp )
{
j--;
}
if (i < j)
swap(num[i++], num[j--]);
else i++;
}
swap(num[j], num[left]);
return j; } void Quicksort(int num[],int left,int right)
{
int j;
if (left>right)
return;
j = partition(num, left, right);
Quicksort(num, left, j - );
Quicksort(num, j + , right);
}

运行截图

(2)实数排序

 #include <iostream>
#include <iomanip>
using namespace std;
void Quicksort(float num[],int left,int right);
float partition(float num[], int left, int right); int main(){
int i;
float num[]={9.1,8.9,7.2,6.4,5.3,4.2,3.1,2.6,1.8,78.5};
Quicksort(num,,);
for(i=;i<=;i++)
cout<<num[i]<<setw();
cout<<endl;
return ;
} float partition(float num[], int left, int right)
{
int i = left + ;
int j = right;
float temp = num[left]; while(i <= j)
{
while (num[i] < temp)
{
i++;
}
while (num[j] > temp )
{
j--;
}
if (i < j)
swap(num[i++], num[j--]);
else i++;
}
swap(num[j], num[left]);
return j; } void Quicksort(float num[],int left,int right)
{
float j;
if (left>right)
return;
j = partition(num, left, right);
Quicksort(num, left, j - );
Quicksort(num, j + , right);
}

运行截图

3.类的定义、实现和使用编程练习

设计并实现一个用户类User,并在主函数中使用和测试这个类。具体要求如下:

每一个用户有用户名(name), 密码(passwd),联系邮箱(email)三个属性。

支持设置用户信息setInfo( )。允许设置信息时密码默认为6个1,联系邮箱默认为空串。

支持打印用户信息printInfo( )。打印用户名、密码、联系邮箱。其中,密码以6个*方式显示。

支持修改密码changePasswd( ),。在修改密码前,要求先输入旧密码,验证无误后,才允许修改。 如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。

在main( )函数中创建User类实例,测试User类的各项操作(设置用户信息,修改密码,打印用户信息)

 #include <iostream>
#include <string>
using namespace std;
// User类的声明
class User
{
public:
void setInfo(string name0,string passwd0="",string email0="");
string getname();
string getpasswd();
string getemail();
void changePasswd();
void printInfo();
private:
string name;
string passwd;
string email;
};
void User::setInfo(string name0,string passwd0,string email0){
name = name0;
passwd = passwd0;
email = email0;
}
string User::getname(){
return name;
}
string User::getpasswd(){
return passwd;
}
string User::getemail(){
return email;
}
void User::changePasswd(){
int i=;
string oldpasswd,newpasswd;
cout<<"please enter the old passwd:";
cin>>oldpasswd;
while(i){
if(passwd == oldpasswd)
{ cout<<"please enter a new pass word:";
cin>>newpasswd;
passwd=newpasswd;
cout<<"change pass word successfully"<<endl;
break;}
if(i>){
cout<<"passwdb input error,please re-enter again:";
cin>>oldpasswd;
}
else{
cout<<"you are wrong,please try after a while";
cout<<endl;
}
i--;
}
} void User::printInfo(){
cout << "name: " << name << endl;
cout << "passwd: " << "******" << endl;
cout << "email: " << email<<endl;
} int main() {
cout << "testing 1......" << endl;
User user1;
user1.setInfo("Leonard");
user1.printInfo();
user1.changePasswd();
user1.printInfo();
cout << endl << "testing 2......" << endl << endl;
User user2;
user2.setInfo("Jonny","","xyz@hotmail.com");
user2.printInfo();
return ; }

运行截图

实验总结与体会

1.结构体相关的知识还需强化

2.类相关的知识还是很薄弱的

实验一评论链接:

https://www.cnblogs.com/joey-yan/p/10543990.html#4213143

https://www.cnblogs.com/lovecpp/p/10520456.html#4211900

https://www.cnblogs.com/qiuqiuwr/p/10525885.html#4211895

 

C++(实验二)的更多相关文章

  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 ...

  10. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

随机推荐

  1. 极致21点开发DAY3

    今天完成的主要任务是活动窗口的显示与关闭,以及领取金币的逻辑.用到了数据持久化技术.我想记录的主要是领取金币的逻辑. 领取金币算法:如果今天没有领取金币,即可领取,否则什么都不做. 一句话描述足矣,但 ...

  2. 【DOM练习】淘宝购物车

    HTML: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...

  3. FileOutputSream文件字节输出流

    1.FileOutputSream文件字节输出流:  输入--写出--使用:  输出--写入--存储: 写出写入是对硬盘而言: 其中,OutputStream为所有类型的字节输出流的超类: FileO ...

  4. 遗传算法(Genetic Algorithm, GA)及MATLAB实现

    遗传算法概述: • 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择.适者生存”的演化法则,它最初由美国Michigan大学的J. Hollan ...

  5. Emote木马分析

    前言:网上找的样本是EXE的,没有邮件样本,所以只做了exe分析. 一.Emote木马相关信息 文件: C:\Users\Desktop\Samp.exe 大小: 249856 bytes 文件版本: ...

  6. Docker Registry私有仓库搭建

    部署registry 准备一个registry.mydocker.com 的证书 对私有registry取名registry.mydocker.com 目录规划 仓库数据目录:/data/docker ...

  7. 提升node.js中使用redis的性能

    问题初现 某基于node.js开发的业务系统向外提供了一个dubbo服务,提供向第三方缓存查询.设置多项业务数据并聚合操作结果.在QPS达到800时(两台虚拟机,每台机器4Core8G4node进程) ...

  8. Bresenham算法

    1 算法原理 基本原理从某处摘得:设直线方程为yi+1=yi+k(xi+1-xi)+k.假设列坐标象素已经确定为xi,其行坐标为yi.那么下一个象素的列坐标为xi+1,而行坐标要么为yi,要么递增1为 ...

  9. Android系统应用Mms之Sms短信发送流程(Mms应用部分)二

    1. 新建一条短信, 在发送短信之前, 首先创建的是一个会话Conversation, 以后所有与该接收人(一个或多个接收人)的消息交互, 都在该会话Conversation中. ComposeMes ...

  10. 利用JS模拟排队系统

    我爱撸码,撸码使我感到快乐!大家好,我是Counter.今天给大家分享的是js模拟排队系统,刚开始有排队序列,序列里有vip用户和普通用户,vip用户永远位于普通用户的前面,只有当当前vip用户都办理 ...