《c++上机实验报告.doc》由会员分享,可在线阅读,更多相关《c++上机实验报告.doc(104页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 实验1 熟悉上机环境及C+基础实验1.实验目的和要求(1)熟悉上机环境,了解Visual C+6.0集成开发环境、掌握源程序编辑、程序调试、查看变量、程序运行;(2)熟悉C+的程序结构,掌握main函数、保留字、变量及变量定义、输入与输出流等概念;(3)熟悉类与类对象的定义、类成员的调用。2.实验内容任务1:程序调试#includeint main()cout您好!浙江大学欢迎您,愿您喜欢C+的输入输出。; cout2008; coutn; cout20.1; coutendl; coutI amyears old student.; char name30; int age; coutna
2、me; coutage; coutYour name isnameendl; coutyou areageyears old.;return 0;思考1:1)在程序中任何一行少一个“;”符号,有什么提示?error C2146: syntax error : missing ; before identifier cout2)删除int age;这一行,编译后有什么错误提示。error C2065: age : undeclared identifier思考2:1)C+中的注解有哪些? C+注解形式有两种:单行注解(/)以及多行注解(/*.*/)2)应用输入输出流应包含什么库? 输入输出流库
3、iostream.h3)定义变量有什么含义? 给变量分配存储空间4)常用变量有哪些基本类型? int char double float 任务2:程序调试在实验1的源程序基础上,作以下程序的调试,并回答相关问题。(1)用单行注释符”/”注解预处理命令,编译程序有什么提示?error C2065: cout : undeclared identifiererror C2297: : illegal, right operand has type char 46warning C4552: : operator has no effect; expected operator with side-
4、effecterror C2297: : illegal, right operand has type char 2error C2296: : illegal, left operand has type const doubleerror C2297: : illegal, right operand has type const doubleerror C2065: endl : undeclared identifierwarning C4552: : operator has no effect; expected operator with side-effecterror C2
5、297: : illegal, right operand has type char 5error C2297: : illegal, right operand has type char 30error C2297: : operator has no effect; expected operator with side-effecterror C2297: : illegal, right operand has type char 13error C2297: : illegal, right operand has type char 8如果程序中使用函数fabs,应该增加什么样
6、的预处理?增加一句 #include(2)把int main()写成int Main( ) ,编译程序有什么提示?请回答在C+程序设计对大小写有什么要求?error C4716: Main : must return a value C+程序设计中,必须要区分大小写(3)如果把语句cout2008; 如改写为:cout2008 编译程序有什么提示?请回答在C+程序设计对语句结束有什么要求? error C2146: syntax error : missing ; before identifier cout 语句结束时,必须用“;”结尾(4)程序中的变量定义:int age ; 如改写为:i
7、nt age_1 ; 编译程序有什么提示?error C2065: age : undeclared identifier 如改写为:int 1_age ; 编译程序有什么提示?如改写为:int for ; 编译程序有什么提示?关于变量的取名你能总结出什么经验?error C2059: syntax error : bad suffix on numberwarning C4091: : ignored on left of int when no variable is declarederror C2143: syntax error : missing ; before constant
8、error C2146: syntax error : missing ; before identifier _ageerror C2065: _age : undeclared identifiererror C2065: age : undeclared identifier在变量取名时应注意确定变量的类型,同时变量名不能是类似于1_age的形式任务3:程序设计#includeint main()char name20,name130;int age;cout请输入您的学院名name;cout请输入您的姓名name1;cout请输入您的年龄age;cout欢迎来自name学院的name1
9、同学,您的年龄是age岁endl;请输入您的学院名zhejiangdaxuechengshixueyuan请输入您的姓名honghongming请输入您的年龄20欢迎来自zhejiangdaxuechengshixueyuan学院的honghongming同学,您的年龄是20岁Press any key to continue任务4:程序调试#includeclass sprivate: int x,y;public:s(int a,int b)x=a;y=b;int area()return x*y;void show()cout面积:area()ab;s x(a,b);x.show();r
10、eturn 0;编译运行程序后写出程序的运行结果并回答下列问题:(a)省略预处理行#include,会出现什么样的错误提示?error C2065: cout : undeclared identifiererror C2297: : illegal, right operand has type char 7error C2065: endl : undeclared identifiererror C2065: cin : undeclared identifier(b)程序中出现了哪些关键字? class private int public return void(c)函数init、a
11、rea、show功能分别是什么?输入变量值 计算 输出结果(d)在类中,如果private、public不写,会出现什么样的错误提示?为什么?不写private不会出现错误。不写public会出现的错误:error C2248: s:s : cannot access private member declared in class s D:1.cpp(7) : see declaration of s:serror C2248: show : cannot access private member declared in class s D:1.cpp(9) : see declarati
12、on of show原因:若程序未设置访问权限则默认为私有的(private)。(e) 重写程序,把成员函数定义在类的外部,提示:请参照下列类定义。class sprivate: int x,y; public: void init(int a,int b); int area( ); void show( );void s:init(int a,int b)x=a;y=b;int s: area( )return x*y; void s: show( )cout面积:area( )endl;#includeclass sprivate: int x,y;public:void init(in
13、t a,int b);int area();void show();void s:init(int a,int b)x=a;y=b;int s:area()return x*y;void s:show()cout面积:area()ab;s x;x.init(a,b);x.show();return 0;任务5#includeclass cubpublic:cub(int x,int y,int z)a=x;b=y;c=z;int Volume()int z;z=a*b*c;return z;void show()cout立方体体积为:Volume()abc;cub x(a,b,c);x.sho
14、w();return 0;运行结果:123立方体体积为:6Press any key to continue任务6#includevoid main()char dig20;cout1.求函数值endl;cout2.计算方程的根endl;cout3.画简单图形endl;cout0.退出endl;cout请输入您的选择:dig;cout您的选择是:digendl;1.求函数值2.计算方程的根3.画简单图形0.退出endl请输入您的选择:2您的选择是:2Press any key to continue实验2 C+文件组织与C+运算符的应用1.实验目的和要求(1)熟悉C+的多文件组织(1个C+程序
15、,由多个文件构成);(2)掌握C+的常量与变量,掌握读入不同进位制常量,用dec、oct、hex等控制输出;各种算术、关系运算符的应用,可含数学函数;(3)熟悉类与类对象的定义、类成员的调用。2.实验内容任务1:C+多文件程序调试+多文件组织、类对象与类成员的使用。理解一个+程序可以由一个或多个文件构成,一个文件可以由一个或多个函数构成。下列程序是完成简单的函数调用,完成一些基本运算,程序的主要思想是掌握多文件系统的编译,此+程序由五个文件构成。(1)开始程序Microsoft Visual StudioMicrosoft Visual C+ 6.0新建文件C+Source File在文件对话
16、框中输入文件名2-1-1,编辑2-1-1.cpp内容:int add(int x,int y)return x+y;(2)文件新建文件C/C+Header File在文件对话框中输入文件名2-1,编辑2-1.h内容:#include#include2-1-1.cpp(3)文件新建文件C+Source File在文件对话框中输入文件名2-1,编辑2-1.cpp内容:#include2-1.hint main()int a,b;cinab;int c=add(a,b);couta+b=c : operator has no effect; expected operator with side-e
17、ffecterror C2065: add : undeclared identifiererror C2065: cout : undeclared identifiererror C2297: ab;int c1=f1(a,b);couta+b=c1endl;int c2=f2(a,b);couta-b=c2endl;int c3=f3(a,b);couta*b=c3endl;int c4=f4(a,b);couta/b=c4endl;(2) 分别在文件2-2-1.cpp、2-2-2.cpp、2-2-3.cpp、2-2-4.cpp中编写函数f1、f2、f3、f4分别完成算术运算+、-、*、
18、/的功能。int f1(int x,int y)return x+y;int f2(int x,int y)return x-y;int f3(int x,int y)return x*y;int f4(int x,int y)return x/y;(3)编辑头文件2-2.h#include#include2-2-1.cpp#include2-2-2.cpp#include2-2-3.cpp#include2-2-4.cpp(4)编译并运行程序。5 65+6=115-6=-15*6=305/6=0Press any key to continue任务3:输入输出操纵符控制程序设计(1)编辑并调
19、试下列程序,程序的文件名为2-2.cpp。#include#includeint main()int x,y;cinxy;coutx=x y=yendl;coutx=octx y=hexyendl;coutx=setw(3)x y=yendl;(2)常用进位制操纵算子有dec、oct、hex,它们在程序中分别起什么作用?分别表示进制数,dec是十进制,oct是八进制,hex是十六进制。在上述oct的位置分别用dec、hex去代替,输出结果分别是什么?用dec代替:12 14x=12 y=14x=12 y=ex= c y=ePress any key to continue用hex代替:12 1
20、4x=12 y=14x=c y=ex= c y=ePress any key to continue(3)setw(5)起什么作用?设置宽度请多次改变其中的参数5,观察程序的运行结果有什么变化?12 14x=12 y=14x=14 y=ex=c y=ePress any key to continue12 14x=12 y=14x=14 y=ex= c y=ePress any key to continue(4)设计一个程序,输入20给x,输出结果为: x=20 x= 14 x= 20 x=24 注意:程序设计中不能对x作运算,只能使用dec、oct、hex、setw进行控制。#includ
21、e#includeint main()int x;cinx;coutx=x x=setw(4)hexxendl;coutx=setw(4)decx x=octxendl;任务4:程序设计,运算符的应用阅读程序,写出下列程序的运算结果,设程序的文件名为2-4.cpp。#includeclass dataprivate:int x,y;public:data(int a,int b)x=a;y=b;void gt()coutxy=(xy)ab;data A(a,b);A.print();return 0;请改写函数print,分别调用成员函数函数:lt( )、ge( )、eq( )、and( )、
22、or( )分别用于关系运算(=、=)、逻辑运算(&、|)的操作,请在类中增加成员函数lt、ge、eq、and、or的定义,并在print函数中调用。#includeclass dataprivate:int x,y;public:data(int a,int b)x=a;y=b;void gt()coutxy=y)endl;void lt()coutxy=(xy)endl;void ge()coutx=y=y)endl;void eq()coutx=y=(x=y)endl;void and()coutx&y=(x&y)endl;void or()coutx|y=(x|y)ab;data A(a
23、,b);A.print();return 0;任务5:程序设计重新设计任务4,把类及成员函数的实现存放在文件test4.h中,把main函数存放在test4.cpp中,编辑程序并编译运行。提示在文件test4.cpp中要有预处理命令#include” test4.h”(1) test4-1.cpp内容class dataprivate:int x,y;public:data(int a,int b)x=a;y=b;void gt()coutxy=y)endl;void lt()coutxy=(xy)endl;void ge()coutx=y=y)endl;void eq()coutx=y=(x
24、=y)endl;void and()coutx&y=(x&y)endl;void or()coutx|y=(x|y)endl;void print()gt();lt();ge();eq();and();or();(2)test4.h内容#include#includetest4-1.cpp(3)test4.cpp内容#includetest4.hint main()int a,b;cinab;data A(a,b);A.print();return 0;任务6:程序设计新建三个文件,其文件名分别为ex2-2.h、ex2-2-1.cpp、ex2-2-2.cpp,其中ex2-2-1.cpp文件定义
25、一个main函数,定义一个类对象,从键盘输入数据,作为对象的参数。在ex2-2.h中定义类,在ex2-2-1.cpp中定义类中所有的成员函数。程序功能:(1)定义三角形类,可计算三角形周长与面积。(2)定义一个棱形类,输入棱形的两条对角线,类中可求得棱形的周长与面积。#include ex2-2.hvoid main()int a,b,c,e,f;cinabc;data A(a,b,c,e,f);A.print1( );A.print2();cinef;A.print3();A.print4();#include#include class dataprivate:int x,y,z,m,n;
26、public:data(int a,int b,int c,int e,int f)x=a;y=b;z=c;m=e;n=f;double add();double area();double add1();double area1(); void print1()cout三角形的周长为add()endl; void print2()cout三角形的面积为area()endl; void print3()cout菱形的周长为add1()endl;void print4()cout菱形的面积为area1()endl;double data:add()return x+y+z;double data
27、:area()double p,s;p=(x+y+z)/2;s=sqrt(p*(p-x)*(p-y)*(p-z);return s;double data:add1() double temp;temp=sqrt(m*m/4+n*n/4);return 4*temp;double data:area1()return m*n/2;实验3 C+循环程序设计1. 实验目的和要求(1) 了解各种循环语句的基本形式。(2) 理解并掌握循环语句的构成方法。(3) 理解for循环的三个表达式的含义及执行过程。(4) 理解并掌握while、dowhile、for的应用。(5) 理解break与continu
28、e语句的差异。2. 实验内容任务1:程序调试定义一个类,此类的功能是求n至m间的自然数的和。程序设计代码如下:#include class Addn_mprivate:int n,m;public:Addn_m(int n1,int m2)n=n1;m=m2;int Add();void print()coutAdd()endl;int Addn_m:Add()int sum=0,i;i=n;while(iab;Addn_m A(a,b);A.print();(1) 程序运行时,从键盘输入1100之间的两个数,并注意数的大小。请思考程序运行的结果。5050(2)在程序段中:while(i=m)
29、sum=sum+i;i-;(4)请思考成员函数Add能否用访问控制符private来限定。能,在同一类中,public能访问private中的函数任务2:程序调试程序的功能是计算一个整数的阶乘。#includeclass Factorialprivate:int n;public:Factorial(int a)n=a;int mult();void print()coutnmult()endl;int Factorial:mult()for(int i=1,s=1;ia;Factorial A(a);A.print();正确任务3:程序设计仿照任务2,定义一个求阶乘和的类,从键盘输入一个不大
30、于10的整数n,求表达式的值sum=1!+2!+3!+n!.#includeclass Factorialprivate:int n;public:Factorial(int a)n=a;int sum();void print()coutsum=sum()endl;int Factorial:sum() int mult;for(int i=1,sum=0;i=n;i+)mult=1;for(int j=1;ja;Factorial A(a);A.print();运行结果:6sum=873Press any key to continue任务4:编写计算近似公式:e=1-1/1!+1/2!-
31、1/3!+1/4!-1/5!+.的程序,并使其误差小于0.00001.#includevoid main() int flag=-1,i=1,s=1; double e=1; while(1.0/s=0.00001) s=s*i;e=e+flag*1.0/s;flag=-flag;i+; coute=eabch;graphics A(a,b,ch);A.print();如果程序在执行时输入:3 4 *程序执行的结果为:*请设计程序并调试。#includeclass graphicsprivate:int x,y;char z;public:graphics(int a,int b,char c
32、)x=a;y=b;z=c;void print()int i,j;for(i=1;i=x;i+)for(j=1;j=y;j+)coutz;coutabch;graphics A(a,b,ch);A.print();程序运行结果:3 4 *Press any key to continue任务6:程序设计设计程序,在屏幕上输出如下图形。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *程序:#includevoid main()int i,j;for(i=1;i=7;i+)for(j=1;j=i;j+)cout*;cout=1;i-)for(j=1;j=i;j+)cout*;cout0,b0;则计算a+b若a0,b0;则计算a2 +b2 若a0;则计算a*e b若a0,b0;则计算a b编写程序实现以