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这些,使得界面的显示效果达到最优。

--------》运行结果:

 

 

 

转载于:https://www.cnblogs.com/snsdzjlz/p/4013548.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值