1.函数重载编程

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

  1. #include <iostream>
  2. using namespace std;
  3. struct complex {
  4. double real;
  5. double imaginary;
  6. };
  7. int add(int x2, int y2)
  8. {
  9. return x2 + y2;
  10. }
  11. double add(double a1, double b1)
  12. {
  13. return a1 + b1;
  14. }
  15. complex add(complex a, complex b)
  16. {
  17. complex c;
  18. c.imaginary = a.imaginary + b.imaginary;
  19. c.real = a.real + b.real;
  20. return c;
  21. }
  22.  
  23. int add(int x2, int y2);
  24. double add(double a1, double b1);
  25. complex add(complex a, complex b);
  26. int main()
  27. {
  28. int x = , y = , s1;
  29. double m = 4.2, n =1.5, s2;
  30. complex complex1, complex2, complex3;
  31. complex1.real = , complex1.imaginary = ;
  32. complex2.real = , complex2.imaginary = ;
  33. s1 = add(x, y);
  34. s2 = add(m, n);
  35. complex3 = add(complex1, complex2);
  36. cout << s1 << endl;
  37. cout << s2 << endl;
  38. cout << complex3.real << "+" << complex3.imaginary << "i" << endl;
  39. system("pause");
  40. return ;
  41. }

2.函数模板编程

编写实现快速排序函数模板,并在main()函数中,定义不同类型数据,调用测试。

  1. #ifndef Quicksort
  2. #define Quicksort
  3. template <class T>
  4. void quicksort(T s[], int low, int high) {
  5. int a, b, c = ;
  6. T f, ex;
  7. a = low; b = high - ; f = s[(low + high) / ];
  8. if (a < b) {
  9. while (a < b) {
  10. while (a < b&&f < s[b])
  11. b--;
  12. while (a < b&&f > s[a])
  13. a++;
  14. if (a >= b) c = b;
  15. else { ex = s[a]; s[a] = s[b]; s[b] = ex; }
  16. }
  17. quicksort(s, low, c);
  18. quicksort(s, c + , high);
  19. }
  20. }
  21. #endif
  1. #include <iostream>
  2. #include <iomanip>
  3. #include "quicksort.h"
  4. using namespace std;
  5. int main()
  6. {
  7. int i;
  8. int a[] = { ,,,, };
  9. double b[] = { 5.5,8.5,9.9,2.5,3.6 };
  10. quicksort(a, , );
  11. quicksort(b, , );
  12. for (i=;i<;i++)
  13. cout << setw() << a[i];
  14. cout << endl;
  15. for (i=;i<;i++)
  16. cout << setw() << b[i];
  17. cout << endl;
  18. system("pause");
  19. return ;
  20. }

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

设计并实现一个用户类User,并在主函数中使用和测试这个类。

每一个用户有用户名(name), 密码(passwd),联系邮箱(email)三个属性。
支持设置用户信息setInfo()。允许设置信息时密码默认为6个1,联系邮箱默认为空串。
支持打印用户信息printInfo()。打印用户名、密码、联系邮箱。其中,密码以6个*方式显示。
支持修改密码changePasswd(),。在修改密码前,要求先输入旧密码,验证无误后,才允许修改。
如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。
在main()函数中创建User类实例,测试User类的各项操作(设置用户信息,修改密码,打印用户信
息)

  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. class User {
  5. public:
  6. User(string yourname, string yourpasswd, string youremail);
  7. User() {
  8. name = "";
  9. password = "";
  10. email = "";
  11. }
  12. void setInfo(string yourname = "", string yourpasswd = "", string youremail = "");
  13. void changePasswd();
  14. void printInfo();
  15. private:
  16. string name;
  17. string password;
  18. string email;
  19. };
  20. void User::setInfo(string yourname, string yourpasswd, string youremail) {
  21. if (name == " ") cin >> yourname;
  22. name = yourname;
  23. if (password == " ") cin >> yourpasswd;
  24. password = yourpasswd;
  25. if (email == " ") cin >> youremail;
  26. email = youremail;
  27. }
  28. void User::changePasswd() {
  29. string yourpassword;
  30. int i = ;
  31. cout << "please input password:";cin >> yourpassword;
  32. while (password != yourpassword && i < )
  33. {
  34. cout << "wrong,please input it again:";cin >> yourpassword;
  35. i++;
  36. }
  37. if (password != yourpassword && i == )
  38. cout << "please try later" << endl;
  39. if (password == yourpassword)
  40. {
  41. cout << "please input your password:";cin >> yourpassword;
  42. }
  43. }
  44. void User::printInfo() {
  45. cout << "Name: " << name << endl;
  46. cout << "Password: " << "******" << endl;
  47. cout << "Email: " << email << endl;
  48. }
  1. #include<iostream>
  2. #include<iomanip>
  3. #include"user.h"
  4. int main() {
  5. cout << "testing 1......" << endl;
  6. User user1;
  7. user1.setInfo("Leonard");
  8. user1.printInfo();
  9. user1.changePasswd();
  10. user1.printInfo();
  11. cout << endl << "testing 2......" << endl << endl;
  12. User user2;
  13. user2.setInfo("Jonny", "", "xyz@hotmail.com");
  14. user2.printInfo();
  15. system("pause");
  16. return ;
  17. }

实验总结:

1.对于快速排序不是很理解,所以不知道怎么写,去问了同学和看了她的程序还是不太理解,所以最后基本上参考了同学的程序;

2.函数重载和类的定义基本上用了老师给的程序框架,但在编程的过程中还是很费劲;

3.以上问题说明我还没有掌握这些知识点,还有以上程序出现的不足之处,还请各位多多指教。

评论:

https://www.cnblogs.com/nnn13579/p/10561474.html

https://www.cnblogs.com/xuexinyu/p/10585574.html

https://www.cnblogs.com/KOKODA/p/10566358.html

C++ 实验2:函数重载、函数模板、简单类的定义和实现的更多相关文章

  1. C++ 类的多态二(函数重载--函数重写--函数重定义)

    //函数重载--函数重写--函数重定义 #include<iostream> using namespace std; /* 函数重载: 必须在一个类中进行(子类无法重载父类中的函数) 子 ...

  2. singleton 类模板限制类只能定义一个对象

    singleton 类模板限制类只能定义一个对象 singleton 类模板限制类只能定义一个对象 singleton 类模板限制类只能定义一个对象 ???

  3. C++实验二——函数重载、函数模板、简单类的定义和实现

    一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...

  4. c++学习笔记之函数重载和模板理解

    1.函数重载: C++ 不允许变量重名,但是允许多个函数取相同的名字,只要参数表不同即可,这叫作函数的重载(其英文是 overload).重载就是装载多种东西的意思,即同一个事物能完成不同功能. 所谓 ...

  5. c++之函数重载(函数匹配)

    Case void f(); void f(int); void f(int, int); void f(double, double = 3.14); 匹配原则: 1)其形参数量与本次调用提供的实参 ...

  6. JS高级之简单类的定义和继承

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. C++学习笔记之模板(1)——从函数重载到函数模板

    一.函数重载 因为函数重载比较容易理解,并且非常有助于我们理解函数模板的意义,所以这里我们先来用一个经典的例子展示为什么要使用函数重载,这比读文字定义有效的多. 现在我们编写一个交换两个int变量值得 ...

  8. C++ primer(八)--内联函数 引用变量 引用传递函数参数 函数重载/模板/模板具体化

    一.内联函数     常规函数和内联函数的区别在于C++编译器如何将他们组合到程序中.编译过程的最终产品是可执行程序--由一组机器语言指令组成.运行程序时,操作系统将这些指令载入到计算机内存中,因此每 ...

  9. C++函数重载和函数模板(04)

    函数重载 函数重载可以使一个函数名具有多种功能,即具有“多种形态”,这种特性称为多态性. C++的多态性又被直观地称为“一个名字,多个函数”.源代码只指明函数调用,而不说明具体调用哪个函数.编译器的这 ...

随机推荐

  1. [运维-安全]CentOS7.0环境下安装kangle和easypanel

    一.康乐简介 主要特点1.免费开源kangle技术团队希望国人拥有一款真正好用.易用.实用的国产web服务器.2.跨平台可在linux.windows.freebsd.openbsd.netbsd.s ...

  2. 调用sklearn包中的PLA算法[转载]

    转自:https://blog.csdn.net/u010626937/article/details/72896144#commentBox 1.Python的机器学习包sklearn中也包含了感知 ...

  3. switch语句语法

    switch  case语句适用于从一组互斥的分支中选择一个执行分支. int day = 0;switch (day) { : dayName = "Sunday"; break ...

  4. [LeetCode] 697. Degree of an Array_Easy tag: Hash Table

    Given a non-empty array of non-negative integers nums, the degree of this array is defined as the ma ...

  5. 复习一下property

    在面向对象程序里,一个对象不要直接访问另一个对象内部的数据.所以我们使用accessor methods来进行对象内部的数据交互. accessor methods(getters and sette ...

  6. 【C语言】指向一维数组元素的指针

    本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组 ...

  7. canvas实现验证码功能

    我们在做一些后台系统登录功能的时候,一般都会用到验证码,最多的就是后台生成的验证码图片返回给前端的.也可以不调用后端接口,前端使用canvas直接生成验证码. 由于功能过于简单,不需要多少代码和文字说 ...

  8. springmvc学习笔记一框架的理解

    SpringMVC现在在很多公司都很流行,所以这个框架对我们来说,是很重要的. 首先我们对比mvc来分析springmvc这个框架是怎么设计,以及它的工作的流程. 首先来看mvc: 1.  用户发起r ...

  9. pandas练习(一)------ 了解数据

    探索Chipotle快餐数据 (相关数据见github) 步骤1 导入pandas库 import pandas as pd 步骤2 导入数据集 path1 = "./data/chipot ...

  10. Python入门之面向对象编程(四)Python描述器详解

    本文分为如下部分 引言——用@property批量使用的例子来引出描述器的功能 描述器的基本理论及简单实例 描述器的调用机制 描述器的细节 实例方法.静态方法和类方法的描述器原理 property装饰 ...