實驗報告( 過載,引用,指標,交換,字串的連線 )

ZDhr發表於2024-03-30

一、實驗目的:

  • 掌握函式過載的使用方法
  • 深入理解指標的概念,掌握指標的使用方法
  • 理解引用的概念,掌握引用作為函式引數的使用方法

二、實驗儀器或裝置:微型計算機

三、總體設計(設計原理、設計方案及流程等)

實驗內容:

1、設計一組過載函式add(),至少包括:

char add(char,int);

int add(int,int);

int add(int,int,int);

int add(int,int,double);

void add(char *,char *);//將兩個字串連線。

2、設計兩個數的交換函式

void swap(int *,int *)

void swap(int &,int&)

本實驗執行環境:Microsoft Visual c++ 2010學習版,採用結構化的程式設計方法。

四、實驗步驟(包括主要步驟、程式碼分析等)

(程式程式碼)實驗一:

  1 #include<iostream> 
  2 
  3 #include<cstring> 
  4 
  5 using namespace std;  
  6 
  7 char add(char, int); 
  8 
  9 int add(int, int); 
 10 
 11 int add(int, int, int); 
 12 
 13 int add(int, int, double); 
 14 
 15 void add(char *, const char *);  
 16 
 17 int main() 
 18 
 19 { 
 20 
 21     char n; 
 22 
 23     int m; 
 24 
 25     int a1, a2; 
 26 
 27     int b1, b2, b3; 
 28 
 29     int c1, c2; 
 30 
 31     double c3; 
 32 
 33     char d1[100]; 
 34 
 35     char d2[100]; 
 36 
 37     char result[200];
 38 
 39      cout<<"輸入一個字元和一個整數"<<endl;
 40 
 41     cin>>n>>m;
 42 
 43     cout<<"它們的和為:";
 44 
 45     cout<< add( n, m)<<endl;
 46 
 47     cout<<"輸入倆整數"<<endl;
 48 
 49     cin>>a1>>a2;   
 50 
 51      cout<<"它們的和為:" ;
 52 
 53    cout<< add( a1,a2)<<endl;
 54 
 55    cout<<"輸入三個整數"<<endl;
 56 
 57    cin>> b1>>b2>>b3;
 58 
 59    cout<<"它們的和為:";
 60 
 61    cout<< add(b1,b2,b3)<<endl;
 62 
 63    cout<<"輸入倆整數和一個浮點數"<<endl;
 64 
 65    cin>> c1>>c2>>c3;
 66 
 67    cout<<"它們的和為:"<<endl;
 68 
 69    cout<< add(c1,c2,c3)<<endl;  
 70 
 71     cout << "輸入倆個字串" << endl; 
 72 
 73     cin >> d1 >> d2; 
 74 
 75     cout << "它倆連線為:" << endl;
 76 
 77    result[0] = '\0';  
 78 
 79     add(result, d1); // 首先將d1複製到result 
 80 
 81     add(result, d2);   // 然後將d2附加到result的末尾
 82 
 83     cout << result << endl;
 84 
 85     return 0; 
 86 
 87 }   
 88 
 89 //字元與整數的相加
 90 
 91 char add(char n, int m) 
 92 
 93 { 
 94 
 95     return (n + m); 
 96 
 97 }  
 98 
 99 //兩整數相加
100 
101 int add(int n, int m) 
102 
103 { 
104 
105     return (n + m); 
106 
107 }  
108 
109 //三整數相加
110 
111 int add(int n, int m, int x) 
112 
113 { 
114 
115     return (n + m + x); 
116 
117 }  
118 
119 //兩整數和一浮點數相加
120 
121 int add(int n, int m, double x) 
122 
123 { 
124 
125     return (n + m + static_cast<int>(x));
126 
127 }   
128 
129 //兩字串連線
130 
131 void add(char *dest, const char *src) 
132 
133 {     
134 
135     while (*dest != '\0') { 
136 
137         dest++; 
138 
139     }       
140 
141     while (*src != '\0') { 
142 
143         *dest = *src; 
144 
145         dest++; 
146 
147         src++; 
148 
149     }       
150 
151     *dest = '\0';// 在結果字串的末尾新增null終止符   
152 
153 }

實驗二:

#include <iostream> 

 using namespace std;

 void swap(int *a ,int *b);

 void swap(int &a,int &b);

 int main ()

 {

    int x=3,y=5;

    cout<<"交換前:x=" <<x<<" y="<<y<<endl;

    swap(&x,&y);//用指標交換

    cout<<"交換後:x="<<x<<" y="<<y<<endl;

    swap(x,y);//用引用交換

    cout<<"再次交換後:x="<<x<<" y="<<y<<endl;

   

 }

void swap(int *a, int *b)

{ 

    int temp = *a; 

    *a = *b; 

    *b = temp; 

}

void swap(int &a, int &b) { 

    int temp = a; 

    a = b; 

    b = temp; 

}  

 

五、結果分析與總結

(執行結果截圖,簡短的體會總結)

實驗一截圖及簡短體會:該實驗運用到了函式的過載,以及用到了指標將字串得到連線,使程式更加的靈活。

實驗二截圖及簡短體會:用兩個swap函式的定義,分別用於透過指標和引用交換兩個整數的值,可以看出兩者的差異和相似性。

相關文章