安徽工业大学面向对象程序设计实验报告实验课程:《C++语言程序设计》学生姓名:学号:专业班级:2011年 12 月 18 日目录实验1熟悉C++开发环境及简单程序设计和应用 (3)实验2基本控制结构程序设计 (6)实验3 类与对象 (10)实验4友元函数与友元类 (13)实验5数组与指针 (16)实验6静态成员 (20)实验7类的继承 (22)实验8多态 (24)安徽工业大学实验报告学生姓名:张虹学号:6100409033 专业班级:网络工程091 实验类型:□验证□综合□设计□创新实验日期:实验成绩:实验1熟悉C++开发环境及简单程序设计和应用一、实验目的1.初步了解C++程序的编译、连接和运行的过程。
2.掌握和理解C++程序的结构。
二、实验内容1.使用VC2.运行一个简单的C++程序3.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数三、实验步骤1.启动VC或2.建立工程并输入以下程序#include<iostream> using namespace std; void main(){int i(1), sum(0); do {sum+=i;i++;}while(i<=10);cout<<"sum="<<sum<<endl; }3.保存文件、运行程序、退出VC程序、打开已经存在的文件4.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数编写以下代码:#include<iostream>using namespace std;void main(){int a,b,c,d,i;cout<<"a=";cin>>a;cout<<"b=";cin>>b;for(i=1;i<=a && i<=b;i++)if(a%i==0 && b%i==0)c=i;for(i=a*b;i>=a && i>=b;i--)if(i%a==0 && i%b==0)d=i;cout<<"a和b的最大公约数为"<<c<<endl;cout<<"a和b的最小公倍数为"<<d<<endl;}将以上代码编译链接运行.得到结果:安徽工业大学实验报告学生姓名:张虹学号:6100409033 专业班级:网络工程091 实验类型:□验证□综合□设计□创新实验日期:实验成绩:实验2基本控制结构程序设计一、实验目的:学会编写简单的C++程序。
练习使用简单的输入输出。
观察关文件的作用。
学会使用DEBUG调试程序。
二、实验任务:(1)输入并运行教材《C++语言程序设计》中的例题2-7,即:用do-while语句编程,求自然数1~10之和。
程序正确运行之后,去掉源程序中的#include语句,重新编译,观察会有什么问题。
do-while语句用for语句代替,完成相同的功能。
程计算图形的面积。
程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积后将其显示出来。
使用debug调试功能观察程序运行中变量值的变化情况。
定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
三、实验步骤建立一个控制台应用程序项目lab2_1,向其中添加一个C++源文件lab2_1.cpp,输入教材《C++语言程序设计》中例2-7的代码,检查一下确认没有输入错误,选择菜单命令编译源程序,再选择Execute运行程序,观察输出是否与教材中的答案一致。
程序正确运行之后,在源程序第一行”#include <iostream.h>”前面加注释标记”//”使之成为注释行,重新编译,观察编译的结果。
另建立一个项目lab2_2,包含一个C++源程序lab2_2.cpp,将do-while语句用for语句代替,完成与实验任务1相同的功能。
建立项目lab2_3,计算图形面积。
圆形的面积计算公式为S=PI*r*r,长方形的面积计算公式为S=a*b,正方形的面积市场计算公式为S=a*a。
程序中定义一个整型变量iType表示图形的类型,用cout语句输出提示信息让用户选择图形的型,用cin读入iType的值,然后,使用switch语句判断图形的类型,分别提示用户输入需要的参数值,计算出面积的值后用cout 语句显示出来。
最后编译运行程序。
学习简单的debug调试功能,参考程序如下://lab2_3.cpp#include <iostream.h>const float PI=3.1416;void main(){int iType;float radius,a,b,area;cout<<”图形的类型?(1为圆形,2为长方形,3为正方形):”;cin>>iType;switch(iType){case 1:cout << “圆的半径为:”; cin>>radius;area=PI*radius*radius;cout<<”面积为”<<area<<endl; break;case 2:cout<<”矩形的长为:”; cin>>a;cout<<”矩形的宽为:”; cin>>b;area=a*b;cout<<”面积为:”<<area<<endl; break;case 3:cout<<”正方形的边长为:”; cin>>a;area=a*a; cout<<”面积为:”<<area<<endl;break;default:cout<<”不是合法的输入值!”<<endl;}}选在第10行处设置调试断点。
用鼠标左键单击源程序第10行左边的空白处,出现一个菜单。
择Insert|Remove Breakpoint选项,可看到左边的边框上出现一个褐色的圆点,这代表已经在这里设置了一个断点。
后选择菜单命令Build|Start Debug|Go,系统统进入Debug状态,程序开发运行,并停在断点处。
单步执行,并观察程序中相应变量的变化情况。
根据实验要求输入以下代码:1.当a=1,b=2,c=3时,编程求出a^b&-ca&b|c!a|a~a|aa^aa>>2按要求编写以下程序:#include<iostream>using namespace std;void main(){cout<<"a=1 b=2 c=3"<<endl;int a=1,b=2,c=3;int answer[6];cout<<"a^b&-c"<<(answer[0]=a^b&-c)<<endl;cout<<"a&b|c"<<(answer[1]=a&b|c)<<endl;cout<<"!a|a"<<(answer[2]=!a|a)<<endl;cout<<"~a|a"<<(answer[3]=~a|a)<<endl;cout<<"a^a"<<(answer[4]=a^a)<<endl;cout<<"a>>2"<<(answer[5]=a>>2)<<endl; }将代码编译链接得到2.编程实现这样一个完整的程序,运行时向用户提问“你考试考了多少分?(0~100),等级范围优90〈=分数〈=100良80〈=分数〈90中60〈=分数〈80差0〈=分数〈60按要求编写以下代码:#include<iostream>using namespace std;int main(){int score;cout<<"请输入分数: ";cin>>score;if(score>=100 || score<=0){cout<<"输入有误.程序关闭"<<endl;return 0;}else{if(score>=90)cout<<"优秀"<<endl;else if(score>=80)cout<<"良"<<endl;else if(score>=60)cout<<"中"<<endl;elsecout<<"差"<<endl;return 1;}}运行得到以下结果:3.用递归方法编写程序求Fibonacci级数,公式为:fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1;观察递归调用的过程。
按要求编写以下代码:#include <iostream> using namespace std; int fib(int n);void main(){int n;cout<<"请输入n:"; cin>>n;int a;a=fib(n);cout<<a <<"是第"<<n<<"级Fib级数的值"<<endl;}int fib(int n){if(n==1 || n==2)return(1);elsereturn(fib(n-1)+fib(n-2));}五.思考题1.小结多重选择结构。
2.递归调用如何才是有意义的。