c++实验2

函数重载编程练习

 1 #include<iostream>
 2 using namespace std;
 3 struct complex
 4 {
 5     double real;
 6     double imaginary;
 7 };
 8 int add(int ,int );
 9 double add(double ,double );
10 complex add(complex ,complex );
11 int main()
12 {
13         int a=1,b=2;
14         double c=1.32,d=5.98;
15         complex s1,s2;
16         s1.real=1;
17         s1.imaginary=1.3;
18         s2.real=3.32;
19         s2.imaginary=2.31; 
20         cout<<add(a,b)<<endl;
21         cout<<add(c,d)<<endl;
22         cout<<add(s1,s2).real<<"+"<<add(s1,s2).imaginary<<"i"<<endl;
23         return 0;        
24 }
25 int add(int x,int y)
26 {
27     return x+y;
28 }
29 double add(double x,double y)
30 {
31     return x+y;
32 }
33 complex add(complex x,complex y)
34 {
35     complex s3;
36     s3.real=x.real+y.real;
37     s3.imaginary=(x.imaginary+y.imaginary);
38     return s3;
39 }

 

函数模板编程练习

头文件quicksort.h

 1 #ifndef QUICKSORT
 2 #define QUICKSORT
 3 #include<iostream>
 4 #include<iomanip>
 5 using namespace std;
 6 template<class T>
 7 void quicksort(T a[],int left,int right){
 8     if(left<right){
 9         int i,j;
10         T norm;
11         norm=a[left];//作为基准的数
12         i=left;
13         j=right;
14     //找到两个要交换的数 
15         while(i!=j){
16             while(a[j]>=norm&&i<j)
17                 j--;
18             while(a[i]<=norm&&i<j)
19                 i++;
20     //交换这两个数
21             if(i<j) {
22                 swap(a[i],a[j]);
23             }
24         }
25     //把基准数放到中间
26         a[left] =a[i];
27         a[i]=norm;
28     //递归
29         quicksort(a,left,i-1);
30         quicksort(a,i+1,right); 
31     }
32 }
33 template<class T>
34 void output(T a[],int len){
35     int i;
36     for(i=0;i<len;i++)
37         cout<<setw(5)<<a[i]; 
38     
39 }
40 #endif

主函数

#include<iostream>
#include"quicksort.h"
using namespace std;
int main(){
    int a[10]={3,4,2,1,6,10,5,9,7,8};
    quicksort(a,0,9);
    output(a,10);
    cout<<endl;
    double b[10] ={2.1,3.2,4.5,9.8,7.8,6.5,10.1,3.9,1.2,0.3};
    quicksort(b,0,9);
    output(b,10);
    return 0;
}

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

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 // User类的声明
 5 class User {
 6 public:
 7     void setInfo(string Nname, string Npasswd = "111111", string Nemail = "");
 8     // 声明带有默认形参值的成员函数setInfo()
 9     // 密码默认值为6个1
10     // 邮箱默认值为空串
11     void changePasswd();
12     void printInfo();
13 private:
14     string name;
15     string passwd;
16     string email;
17 };
18 // User类的实现
19 // 成员函数setInfo()的实现
20 // 功能:设置用户名(name), 密码(passwd), 联系邮箱(email)
21 void User::setInfo(string Nname, string Npasswd, string Nemail ) {
22     name = Nname;
23     passwd = Npasswd;
24     email = Nemail;
25 }
26 // 成员函数changePasswd()的实现
27 // 功能:修改密码
28 // 要求:在修改密码前,要求先输入旧密码,验证无误后,才允许修改。
29 // 如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。
30 void User::changePasswd() {
31     int count=0;
32     string oldpasswd;
33     cout << "please enter your old password" << endl;
34     while (true) {
35         cin >> oldpasswd;
36         if (oldpasswd == passwd) {
37             cout << "please enter new password" << endl;
38             cin >> passwd;
39             break;
40         }
41         else {
42             cout << "sorry,wrong password,pls try again" << endl;
43             count++;
44         }
45         if (count == 3) {
46             cout << "pls try later" << endl;
47             break;
48         }
49     }
50 }
51 // 成员函数printInfo()的实现
52 // 功能:打印用户信息
53 // 要求: 密码以6个*显示
54 void User::printInfo() {
55     cout << name << endl;
56     cout << "******" << endl;
57     cout << email << endl;
58 }
59 
60 int main() {
61     cout << "testing 1......" << endl;    
62     User user1;
63     user1.setInfo("Leonard");
64     user1.printInfo();
65     user1.changePasswd();
66     user1.printInfo();
67     cout << endl << "testing 2......" << endl;
68     User user2;
69     user2.setInfo("Jonny", "92197", "xyz@hotmail.com");
70     user2.printInfo();
71     return 0;
72 }

 

 实验总结体会:
1. 快速排序,上课的时候毫无头绪,课后查阅了一些资料后搞懂了。

2. 快速排序在数据量较多时能有效减少计算机的工作负担。

3. 对于类的定义和使用现在只能刻板的根据书本模仿,还不能随心所欲地应用,还有很大的提升空间。

posted @ 2019-03-25 21:25  Yyao丶  阅读(135)  评论(1编辑  收藏  举报