c++第二次实验
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; cin>>a>>b; cout<<add(a,b)<<endl; double x,y; cin>>x>>y; cout<<add(x,y)<<endl; struct complex m,n,p; cin>>m.real>>m.imaginary>>n.real>>n.imaginary; p=add(m,n); cout<<p.real<<"+"<<p.imaginary<<"i"<<endl; return 0; } int add(int x,int y) { return x+y; } double add(double x,double y) { return x+y; } complex add(complex x,complex y) { complex a; a.real=x.real+y.real; a.imaginary=x.imaginary+y.imaginary; return a; }
2.函数模板编程练习
编写实现快速排序函数模板,并在main()函数中,定义不同类型数据,调用测试。
#include<iostream> using namespace std; template <typename T> void quick(T a[], int x, int y) { if (x >= y) { return ; } int begin = x; int end = y; T t = a[x]; while (begin < end) { while (begin < end&&a[end] >= t) { end--; } a[begin] = a[end]; while (begin < end&&a[begin] <= t) { begin++; } a[end] = a[begin]; } a[begin] = t; quick(a, x, begin - 1); quick(a, begin + 1, y); } int main() { int n, i; int a[100]; cin >> n; for (i = 0; i < n; i++) cin >> a[i]; quick(a, 0, n - 1); for (i = 0; i < n; i++) cout << a[i]; return 0; }
3.类的定义、实现和使用编程练习
设计并实现一个用户类User,并在主函数中使用和测试这个类。具体要求如下: 每一个用户有用户名(name), 密码(passwd),联系邮箱(email)三个属性。 支持设置用户信息setInfo()。允许设置信息时密码默认为6个1,联系邮箱默认为空串。 支持打印用户信息printInfo()。打印用户名、密码、联系邮箱。其中,密码以6个*方式显示。 支持修改密码changePasswd(),。在修改密码前,要求先输入旧密码,验证无误后,才允许修改。 如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。 在main()函数中创建User类实例,测试User类的各项操作(设置用户信息,修改密码,打印用户信 息)
#include<iostream> #include<string> using namespace std; class user { public: void setinfo(string name0, string passwd0="111111", string email0=""); 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; } void user::changepasswd() { string s; int n = 1; cout << "请输入原密码:"; cin >> s; if (s == passwd) { string newpasswd; cin >> newpasswd; passwd = newpasswd; } while (s != passwd && n < 3) { { cout << "密码错误,请重新输入:"; cin >> s; n++; } } if (n == 3) { cout << "请稍后再试."<<endl; } } 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", "92197", "xyz@hotmail.com"); user2.printinfo(); return 0; }
实验总结与体会
1.这次实验让我初步学会了函数重载,函数模板和类的定义,实现和使用。
2.这次实验让我认识到我还有很多东西要学,让我认识到自己有很多不足,尤其是编译快速排序的时候,刚开始完全没思路,然后去看了网上的,网上的有几步过程起初没看懂,以为是它错了,然后自己改了,发现编出来的不对,用网上的过程发现它是对的,然后我才发现是我错了。关于算法我还有许多不足,以后要多练练算法。