实验结论

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. luogu P1578 奶牛浴场

    很好的一道题 王知昆爷爷的论文(讲的特别清楚) https://wenku.baidu.com/view/bc8311f69e314332396893f7.html 先贴上AC代码 #include& ...

  2. Java基础语法-Lambda表达式

    1.Lambda表达式主要用于简写接口的操作等出现匿名内部类的地方,如下:我这里先定义一个Swim接口,以及它所定义的swim()方法 interface Swim{ void swim(); } 2 ...

  3. Linux中DDNS配置

    1.实验拓扑结构 图1 实验拓扑图 2.项目要求 通过系统的搭建,能够为Web Server动态更新DNS信息. 3.项目开展思路(思维导图) 图2 DDNS实验思维导图 4.实验步骤 (1) 基础网 ...

  4. sql查询语句如何执行

    MySQL 可以分为 Server 层和存储引擎层两部分. 查询缓存: Mysql拿到一个查询请求之后,会先查询缓存,之前执行过的语句及结果可能会以Key-Value的形式被存在缓存中,Key是查询语 ...

  5. OGG 18.1 for mysql远程捕获测试

    Ogg18.1 remote capture要求mysql为5.7版本,只能从linux远程捕获mysql on windows or linux,且不支持DDL捕获.支持远程mysql为commun ...

  6. sourceTree 代码未同步合并

    在同一个分支下,提交代码会有代码合并情形. 1.未同步代码前,提交代码 2.提交报错 3. 拉取未同步的提交代码 4.点击提交到暂存区, 5. 暂存区变成2条,再点击推送. 6.sourceTree ...

  7. iOS项目之使用开关控制日志输出的功能

    最近一直在做sdk的项目,用户提出了一个需求,需要屏蔽sdk内部的日志输出.由于sdk内部的日志是为了调试,如果屏蔽了肯定不方便,所以研究了一下日志输出开关的功能. 在这里介绍两种实现方案:一种方案是 ...

  8. 《一些神奇的JS功效》

    1: async 异步回调 (ES6) async function test(){ console.log("hello wolrd"); } test().then(funct ...

  9. android开发_view和view属性

    一.view视图的宽度和高度属性,属性值:固定和浮动两种状态 1属性为固定值 <View android:layout_width="30dp" android:layout ...

  10. javascript 之 面向对象【理解对象】

    第五版本 6.1.1  属性类型      1/数据属性 :包含有数据值的问题.有内部有特性和属性,是为了实现javaScript引擎用的,在javaScript中不能直接访问  [[Configur ...