实验二
2019-03-24 22:54 Chirly 阅读(169) 评论(2) 编辑 收藏 举报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 a,b; cout<<"请输入两个整数:"; cin>>a>>b; cout<<"这两个数字之和为:"<<add(a,b)<<endl; double m,n; cout<<"请输入两个浮点数:"; cin>>m>>n; cout<<"这两个数字之和为:"<<add(m,n)<<endl; struct complex x,y,z; cout<<"请输入两个数字的实部和虚部"; cin>>x.real>>x.imaginary; cin>>y.real>>y.imaginary; z=add(x,y); cout<<"这两个数字之和为:"<<x.real<<"+"<<y.imaginary<<"i"<<endl; return 0; } int add(int a,int b) { return a+b; } double add(double m,double n) { return m+n; } complex add(complex x,complex y) { complex z; z.real=x.real+y.real; z.imaginary=x.imaginary+y.imaginary; return z; }
运行结果:
2、函数模板编程练习 编写实现快速排序函数模板,并在main()函数中,定义不同类型数据,调用测试。
#include <iostream> using namespace std; template<class T> void quick_sort(T a[],int before,int after) { int i=before; int j=after; int t=a[i]; if(i<j) {while(i<j) { while(i<j&&a[j]>=t) j--; if(i<j) {a[i]=a[j]; i++; } while(i<j&&t>a[i]) i++; if(i<j) {a[j]=a[i]; j--;} } a[i]=t; quick_sort(a,before,i-1); quick_sort(a,i+1,after); } } int main() { int i; int m[5]={78,44,92,61,32}; cout<<"m[5]={78,44,92,61,32}"<<endl; quick_sort(m,0,4); cout<<"由小到大排序为:"; for(i=0;i<5;i++) cout<<m[i]<<" "; return 0; }
运行结果:
3、类的定义、实现和使用编程练习 设计并实现一个用户类User,并在主函数中使用和测试这个类。具体要求如下: 每一个用户有用户名(name), 密码(passwd),联系邮箱(email)三个属性。 支持设置用户信息setInfo()。允许设置信息时密码默认为6个1,联系邮箱默认为空串。 支持打印用户信息printInfo()。打印用户名、密码、联系邮箱。其中,密码以6个*方式显示。 支持修改密码changePasswd(),。在修改密码前,要求先输入旧密码,验证无误后,才允许修改。 如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。 在main()函数中创建User类实例,测试User类的各项操作(设置用户信息,修改密码,打印用户信 息) User类功能的完善及拓展丰富(===选做===) 自行设计。在前述内容的基础上,对代码和功能做完善,使其更符合实际应用场景。比如: 支持修改邮箱;用户设置邮箱时对邮箱地址合法性的检测提示(比如是否包含@) 用户更改密码时,当用户输入旧密码和新密码时,屏幕上均以星号代替,而不会显示用户实际 输入的密码;设置密码时对密码的长度、合法性进行有效性校验,等等
#include <iostream> #include <string> using namespace std; class User{ public: void setInfo(string name1,string passwd1="111111",string email1=" "); void changePasswd(); void printInfo(); private: string name; string passwd; string email; }; void User::setInfo(string name1,string passwd1,string email1) { name=name1; passwd=passwd1; email=email1; } void User::changePasswd() { string oldpasswd; int i; cout<<"please enter your oldpasswd"<<endl; cin>>oldpasswd; while(oldpasswd!=passwd && i<=3) {cout<<"Sorry!Try again later."<<endl; cin>>passwd; i++; } if(oldpasswd==passwd) {string newpasswd; cout<<"Please enter your newpasswd"<<endl; cin>>newpasswd; passwd=newpasswd; } } void User::printInfo(){ cout<<"name: "<<name<<endl; cout<<"password:"<<"******"<<endl; cout<<"email: "<<email<<endl; cout<<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","92197","Fairy@hotmain.com"); user2.printInfo(); return 0; }
运行结果:
实验总结:
通过此程序我学习结构体和类的使用。
快速排序程序,让我学会了使用自定义头文件,但是函数模板不会使用,于是借鉴了其他同学的程序。
本次实验编写感觉十分吃力,也感到了自己与其他同学有很大差距,值得反思,希望日后能有所进步。
互评:
https://www.cnblogs.com/bzwy/p/10564202.html