C++實驗報告一


實驗一 C++基礎的應用

(實驗課時:2  實驗性質:設計

 實驗名稱:  C++基礎的應用

 實驗目的1進一步學習VC++6.0開發環境及程序調試方法。

2練習C++函數的定義及使用

3)練習C++數組的定義及使用

4練習C++指針的定義及使用

5練習C++結構體的定義及使用

6)練習多文件的程序的編譯和運行方法;

 實驗設備: (1)硬件:個人微機(配置不低於:CPUP4,主頻1.6G,內存256MB,硬盤40GB);

2)軟件:操作系統為WindowsXP(或2000server2003等),工具軟件為Visual C++6.0

 實驗內容1熟悉Visual C++6.0編譯系統的常用功能,特別是debug調試功能;

2)編程1:編寫一個程序c1.cpp,用來求2個或3個整數的最大數。要求:用重載函數的方法來求最大數;函數原型:int max( int a, int b) 和 int max( int a, int b,int c)

3)編程2:編寫一個程序c2.cpp,求: a+ b! + c!的值。要求:使用遞歸函數。主程序和函數分開到兩個源程序文件中,分別進行編譯后,再運行;

4)編程3:有一個3*4的矩陣,要求編程求出其中值最大的那個元素的值,以及其所在的行號和列號;

5)編程4:建立一個動態鏈表並進行輸出和刪除管理。鏈表的每個節點為學生信息,包括:學號,姓名,性別,下一學生信息的指針。程序的工作:(a)建立三個學生信息的節點,然后順序輸出該三個學生信息;(b)刪除中間的節點,再順序輸出學生信息。

6)使用debug調試功能:追蹤第2個程序中函數的運行。

 (7)思考:

    在第2個程序中,如果abc的值較大,則顯示的結果會怎樣?這時如何解決此問題?

(提示:顯示的結果會不對,可能還會是負數,定義一個數組來存放最后結果。)

 

實驗要求1掌握Visual C++6.0開發環境的常用功能及使用,能進一步使用Visual C++6.0debug調試功能:單步調試、設置斷點等;

(2)掌握C++函數的定義及使用,掌握函數的嵌套調用和遞歸調用的方法;

3)掌握C++數組、指針、結構體的定義及使用;

4)掌握多文件的程序的編譯和運行方法;

5)程序格式規范,程序運行正確;

6)認真書寫實驗報告,如實填寫各項實驗內容。

 實驗步驟(1)啟動Visual C++6.0開發環境;

2)熟悉Visual C++6.0編譯系統的常用功能;

3)在file菜單中,新建C++源程序c1.cpp; 

4)編輯C++源程序文件c1.cpp的內容。

5) 編譯c1.cpp,系統會提示是否創建工程(由於前面沒有創建工程),選擇“是”。則創建一個工程;

6)程序編譯正確時,則可建立可執行程序;

(注意觀察每步的結果)

7)運行可執行文件;

8)關閉工作空間。

9)對編程2,在file菜單中,新建C++源程序cpp2_1; 

10)編輯C++源程序文件cpp2_1的內容;

11)編譯cpp2_1,系統會提示是否創建工程(由於前面沒有創建工程),選擇“是”,則創建工程;

12)在file菜單中,新建C++源程序cpp2_2; 

13)編輯C++源程序文件cpp2_2的內容;

14)編譯文件cpp2_2時,系統提示是否加入到此工程,選擇“是”,則把文件cpp2_2加入到該工程中。

15)編譯和運行此程序,並注意觀察每步的結果。

16)使用調試功能:運行到光標處、單步跟蹤、查看變量值。

17)使用關閉工作空間。

 (18)參照上述方法,完成編程3和編程4

 

注意:若編譯時出錯:“fatal error c1010:unexpexted end of file while looking for precompiled header directive.”;

該文件需要包含頭文件:stdafx.h,即在開頭有語句:#include “stdafx.h”

 

思考題:假如已建立了兩個C++源程序c1.cppc2.cpp。先用open打開c1.cpp,並完成了編譯、連接和運行,再打開c2.cpp,對它進行編譯和連接。此時會出現什么問題?原因何在?怎樣解決?

程序一

------》源代碼:

 

 1 #include "iostream.h"
 2 
 3 int max(int a,int b)
 4 {
 5     if(a>b)
 6         return a;
 7     else
 8         return b;
 9 }
10 
11 int max(int a ,int b,int c)
12 {
13     if(a>=b&&a>=c)  return a;
14     if(b>=a&&b>=c)  return b;
15     if(c>=a&&c>=b)  return c;
16 }
17 
18 main()
19 {
20     int a,b,c,t1,t2;
21     
22     
23     cout<<"a="; cin>>a;
24     cout<<"b="; cin>>b;
25     cout<<"c="; cin>>c;
26 
27     t1=max(a,b);
28     t2=max(a,b,c);
29 
30     cout<<"t1="<<t1<<endl;
31     cout<<"t2="<<t2<<endl;
32 }

 

-------》分析總結:

            1、重載函數:在同一命名空間內,可以允許不同函數有相同的名字。要求是這些函數在“參數個數”或“參數類型”這兩方面至少有一個不一樣。

 

                                                                               程序二

-----------》源代碼:

 1 //功能函數(遞歸)
 2 #include "iostream.h"
 3 
 4 double fact(int n)
 5 {
 6     double result;
 7     if(n==1||n==0)
 8         result=1;
 9     else
10         result=n*fact(n-1);
11     return result;
12 }
13 //主函數
14 #include "iostream.h"
15 
16 main( )
17 {
18     double fact(int n);
19     int sum,a,b,c;
20     cout<<"a="; cin>>a;
21     cout<<"b="; cin>>b;
22     cout<<"c="; cin>>c;
23     sum=fact(a)+fact(b)+fact(c);
24     cout<<"sum="<<sum;
25 }

---------》分析總結:

1.遞歸函數:此函數兩個關鍵點是——遞歸出口、遞歸式子。遞歸出口是判斷什么時候停止遞歸的關鍵;遞歸式子關鍵靠找規律如何自己調用自己。

2.文件、工程:

 

                                                                                     程序三

----------》》源代碼:

 1 //有一個3*4的矩陣,要求編程求出其中值最大的那個元素的值,以及其所在的行號和列號.
 2 
 3 #include "iostream.h"
 4 
 5 main( void )
 6 {
 7 
 8     int a[3][4];
 9     int i,j,max,line=0,list=0;
10 
11     for(i=0;i<3;i++)
12     {    for(j=0;j<4;j++)
13         {
14             cout<<"請輸入第["<<i<<"]"<<"["<<j<<"]矩陣值:";
15             cin>>a[i][j];
16         }
17     }
18 //改進后的----------------------------------------------------------------------------------------------
19     cout<<"please input no.1 line:"<<endl; 
20     for(j=0;j<4;j++)
21           cin>>a[0][j];
22     cout<<"please input no.2 line:"<<endl;
23     for( j=0;j<4;j++)
24            cin>>a[1][j];
25     cout<<"please input no.3 line:"<<endl;
26     for( j=0;j<4;j++)
27            cin>>a[2][j];    
28 //----------------------------------------------------------------------------------------------------
29   for(i=0;i<3;i++)    
30         for(j=0;j<4;j++)
31         {
32             if(a[i][j]>=a[line][list])
33             {
34                 line=i;  
35                 list=j;
36             }
37         }
38     max=a[line][list];
39     cout<<"max="<<max;
40     cout<<"line="<<line+1;
41     cout<<"list="<<list+1<<endl;
42    return 0; 
43 }
44 //增加一個顯示出矩陣的功能:並添加了一些\t\n等的應用,使得界面更好看)
45 cout<<endl;
46 for(i=0;i<3;i++)
47     {    for(j=0;j<4;j++)
48     {
49             cout<<a[i][j];
50             cout<<"\t";   
51     }
52         cout<<"\n";
53     }

--------》分析總結:

              1、多理解和用一些endl\t\n這些,使得界面的顯示效果達到最優。

--------》運行結果:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM