1、C+练习指导书实验一 Visual C+/C+Builder初识与选择分支程序设计实验目的 了解Visual C+/C+ Builder的集成开发环境 初步掌握在VC+或C+ Builder中开发应用程序的一般步骤 初步掌握程序编辑、调试的基本方法 掌握单分支结构语句:if 掌握双分支结构语句:ifelse 掌握多分支选择结构语句:switchcase;实验示例例1-1 在VC+开发环境中,编写一个计算三角形面积的C+程序,调试运行程序,运行时输入三角形的三条边。实现步骤:1启动Visual C+开发环境通过执行菜单“开始”“程序”“Microsoft Visual Studio 6.0”“M
2、icrosoft Visual C+6.0”项,启动Visual C+开发环境。2编辑程序1)执行VC+菜单“文件”“新建”项,打开新建对话框;2)在对话框中单击“文件”标签,在弹出的“文件”选项卡中单击“C+ Source File”选项;3)在“目录”文本框中输入或选择存放程序的文件夹,在“文件”文本框中输入程序文件名;4)单击“确定”按钮,系统打开文件编辑窗口,参照如下代码,编写计算三角形面积的源程序:#include #inclkude using namespace std;void main() double a,b,c,s,area; coutabc; / 键盘输入三角形三条边长
3、 s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); cout”area: ”areaendl;3编译和链接程序1)执行VC+菜单“编译”项,屏幕出现“询问是否创建默认项目工作区”对话框;2)单击“是”按钮,出现“询问是否保存文件”对话框;3)单击“是”按钮保存文件后,系统开始对源程序进行编译。4)若有语法错误,将在输出区窗口中显示错误信息。双击某条错误信息,文件编辑窗口的对应程序行的左边将出现一个箭头。依据提示信息修改程序,然后重新编译程序,直到没有错误为止。5)执行VC+菜单“编译”“构建”项,系统将对编译好的程序进行链接。若出现链接错误,依据错误信息修
4、改程序后,再进行编译和链接,直到正确。4执行目标程序1)执行VC+菜单“编译”“执行”项,程序开始执行,执行到键盘输入语句时,系统显示“输入数据和输出结果”窗口,等待用户输入数据。2)依题输入3个实数,作为三角形的三条边的边长,程序继续执行,显示计算结果。3)若运行时出现错误,分析出错原因,是运行时输入的数据有误,还是程序代码有错?(均非语法错误),依据需要修改程序、重新编译、链接和执行程序。7关闭程序项目执行菜单“文件”“关闭工作区”项,将关闭程序项目。8打开已有项目。执行菜单“文件”“打开”项,可打开已有程序项目。例1-2 在C+ Builder集成开发环境中,完成上例的程序编辑、调试和运
5、行。1启动C+ Builder开发环境通过执行菜单“开始”“程序”“Borland C+Builder 6”“C+Builder6”项,启动C+Builder开发环境。2创建应用程序项目本例需要建立一个控制台应用程序,执行菜单【File】【Close All】关闭当前项目,再执行菜单【File】【New】【Console Wizard】项,或单击工具栏上的New items快捷钮打开的对话框来创建控制台应用程序项目。在Console Wizard对话框中,做如上图所示的选择后确定。系统自动创建项目和初始化源程序文件。3编辑程序在代码编辑窗口中,编写实现功能要求的程序。在C+Builder中,可
6、以省略std命名空间的引用声明,系统自动引用和链接。4保存程序项目执行菜单【File】【Save Project As】项,或执行菜单【File】【Save All】项,或单击Save All快捷钮,在打开的保存源程序文件对话框中输入文件名,确认保存源文件(扩展名cpp);在打开的保存项目文件对话框中,选择项目保存位置,编辑项目文件名,确认保存项目(扩展名bpr)。5编译、和执行和调试程序单击Run快捷钮,或按F9键,编译和执行程序。也可以先执行【Project】【Compile Unit】编译命令,再运行程序。C+Builder的集成环境的调试命令与Turbo C的相似,Borland公司一
7、脉相承,可以方便地设置断点、跟踪运行、监视表达式的值等。例1-3 创建和编写一个控制台应用程序:程序执行时,分别输入被除数和除数,计算后输出商,若除数为0,程序给出提示。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码:#include void main() double a,b; couta; coutb; if (b) cout”商是:”a/bendl; else cout”除数为0,无意义。”endl;3编译、链接和执行程序例1-4 新建一个程序。程序运行后,输入百分制的成绩,输出“优”、或“良”、或“合格”、或“不合格”等对
8、应的等级。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码: #include void main() int score; coutscore; switch(score/10) case 10: case 9: cout”优”; break; case 8: cout”良”; break; case 7: case 6: cout”合格”; break; default: cout= 0 输出解:0.5*(-b+sqrt(d)/a 和 0.5*(-b-sqrt(d)/a否则,d:=sqr(b)-4*a*c 否则 无实数解5编写一个
9、C+控制台应用程序,实现判断按键的类型是数字、字母或其它。实验二 循环处理程序设计与数组应用实验目的 掌握循环语句:for 掌握循环语句:do while 掌握循环语句:while 掌握跳转语句:break和contitue 理解数组的概念 掌握数组的定义和数组元素的访问方法 理解运用数组的一些算法实验示例例2-1 设计一个控制台应用程序:实现计算和输出3到100之间的所有素数,以及素数的个数。解题思路:所谓素数,即仅能被1和自身整除的数。判定n是否为素数,可以用n相继(循环)除于2到n/2之间的整数,若出现余数为0,即n被其中某个数整除,则n非素数,中断循环判断;否则,直到n除于n/2的余数
10、非0,则n为素数。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码:#include void main() int n,j,s; s=0; / 素数个初始为0 for (n=3; n=100; n+) for (j=2; jn/2) s+; coutn”, ”; cout”共有”s”个素数n”;3编译、链接和执行程序例2-2 设计一个控制台应用程序,实现计算任意输入的两个正整数的最大公约数。解题思路:求解m和n的最大公约数,采用欧几里德的算法如下: 以n除m,令余数为r; 若r为0,则n为解,输出并结束; 否则,令m为n,n为r,重
11、复步骤继续进行。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码:#include void main() int m,n,r; coutm; coutn; do r= m % n; m=n; n=r; while (r); cout” 最大公约数是:”mendl;或参考以下代码:#include void main() int m,n,r; coutm; coutn; r= m % n;while(r) m=n; n=r;r= m % n; cout” 最大公约数是:”nendl;3编译、链接和执行程序例2-3 设计一个控制台应用程
12、序:随机产生并显示10个1到100之间的整数,排序后再输出这10个整数。解题思路:定义一个数组变量,元素为int类型;利用随机数函数rand()循环初始化数组的每一个元素并输出。排序时采用直接选择排序算法:设有n个元素需按从小到大的次序排列,可用如下n-1趟的选择过程完成:第1趟,从第1第n的n个元素中,选择出最小的与第1个元素交换;第2趟,从第2第n的n-1个元素中,选择出最小的与第2个元素交换;.第n-1趟,从第n-i第n的2个元素中,选择出最小的与第n-1个元素交换;排序结束。最后循环一遍输出每个元素。实现步骤:1新建Win32 Console Application程序项目2在文件编辑
13、区窗口编写如下程序代码:#include #include void main() int i,j,k,temp; int a10; srand(time(0); / 初始化随机系列 for (j=0; j10; j+) temp = rand(); / rand()返回一个1到32767之间的随机整数aj = temp %100 +1; coutaj”, ”; for (i=0; i9; i+) / 9趟的选择排序 k = i; / 设k为第i趟选择的最小元数的初始下标 for (j=i+1; j10; j+) if ajak k=j;if (k!=j) temp=ak; ak=aj; aj
14、=temp; for (j=0; j10; j+) coutaj”, ”; coutendl;3编译、链接和执行程序例2-4 设计一个控制台应用程序:由键盘任意输入一串字符,统计这个字符串中字母字符、数字字符和其它字符的个数。解题思路:定义一个字符数组,用于保存输入的字符串;利用循环识别字符串中每个字符(数组元素),并统计各类字符的个数。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码:#include void main() char s300; int j,a=0,b=0,c=0; cout连续按键,直到回车为止s; for(j=
15、0; j=A)&(sj=a)&(sj=0)&(sj=9) b+; else c+; cout字母;aendl; cout数字;bendl; cout其他;cendl; 3编译、链接和执行程序例2-5 设有如下数列:0、1、1、2、3、5、8、13、。除第1项和第2项外,数列的任一项是其前2项的和。编写一控制台应用程序,输出数列的前30项及其总和。解题思路:利用整型数组存储数列的各项,初始化数组的前2个元素,从第3个元素开始循环递推计算其余元素的值,最后输出。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码:#include void
16、main()int fib30; int j,sum=1; fib0=0; fib1=1; for(j=2; j30; j+) fibj=fibj-2+fibj-1;sum+=fibj; for(j=0; j30; j+) coutfibj”, ”; coutendl”前30项的和: ”sumendl; 3编译、链接和执行程序实验习题1设计一个C+控制台应用程序,运行时,输入两个正整数,计算并输出这两个数之间所有不能被3和7整除的数的和。2设计一个利用下列公式计算圆周率的C+程序,要求精度控制在0.0000001内。= 4(1/1-1/3+1/5-1/7+) 提示:括号中是一个数列的和,数列的
17、第n项是1/(2n-1),奇数项为正,偶数项为负。利用循环逐项求和,直到该项的绝对值小于0.0000001为止。3编写一个控制台应用程序,运行时输入10个整数,输出其中的最大数和次大数。提示:以数组存储逐个输入的10个整数,查找其中的2个最大的数时,首先将数组的前2个元素的较大者初始为最大数,较小的初始为次大数,然后从第3个数开始逐个与最大数和次大数比较,比较时仅有两种情形需考虑: 当前元素比最大数大,则原最大数成为次大数,当前数为最大数; 当前元素仅比次大数大,则当前数为次大数。4编写一个控制台应用程序,输出一个6行的杨辉三角形。提示:以二维数组存储杨辉三角形的每个元,初始化其第1行第1列、
18、第2行第1列、第2行第2列等3个元素的值为1,之后从第3行开始逐行计算各列元素的值,计算方法为:第1列和最后一列(第i行有i列)的值为1,其余元素的值是上一行前一列和上一行上一列的数值的和。最后逐行输出显示。实验三 指针、引用与函数实验目的 掌握指针的定义和依据指针访问数据的方法 掌握引用的概念和用法 掌握函数的声明、定义和调用 掌握函数中指针或引用类型参数的用法实验示例例3-1 编写一个C+控制台应用程序,将某个位数不确定的正整数进行三位分节后输出,例如输入1234567,则输出1,234,567。解题思路:自定义一个函数,其中实现将传递的整数转换成字符串,再定义另一个函数将字符串由后向前进
19、行分节,即每3个字符插入一个逗号,利用指针的运算寻找插入的位置。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码:#include #include char *separate(int);char *inttostr(int);void main()int n; char *p; coutn; p=separate(n); cout”分节输出: ”pp1) / 由后向前 if (count=3) pt=p3+; while (pt=p2) *(pt+1)=*pt- *p2=,; count=0; count+; p2-; retur
20、n p1; char *inttostr(int num) / 将整数转换成对应数字字符串 char *p,*p1,*p2,temp; p=p1=p2=new char30; while (num) *(p2+)=num%10+0; num/=10; *(p2-)=0; while (p2p1) temp=*p2; *p2-=*p1; *p1+=temp; return p; 3编译、链接和执行程序例3-2 编写程序,实现两个字符串变量的交换。解题思路:使用引用来交换两个字符串指针的值。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码
21、:#include #include void swap(char *&x, char *&y) char *temp; temp=x; x=y; y=temp;void main() char *ap, *bp; coutap; coutbp; swap(ap,bp); cout”第一个字符串:”apendl; cout”第二个字符串:”bpendl;3编译、链接和执行程序例3-3 例4-3的斐波那契数列:0、1、1、2、3、5、8、13、。除第1项为0和第2项为1外,数列的任一项是其前2项的和。编写计算数列的第n项的函数,调用函数输出数列的第30项。解题思路:斐波那契数列可以如下形式的函数
22、表示: 0 当n=1时, f(n)= 1 当n=2, f(n-1)+f(n-2) 其它自定义一个递归函数,返回参数n指定的数列项,计算方法是:当n=1时,函数返回0;当n=2时,函数返回1;否则,返回用参数n-1调用自身函数的值与用参数n-2调用自身函数的值的和。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码:#include int Fib(int n) switch (n) case 1: return 0; case 2: return 1; default: return Fib(n-1)+Fib(n-2); / 递归调用函
23、数 void main() cout”数列的第30项是:”Fib(30)endl;3编译、链接和执行程序实验习题1编写一个控制台应用程序,运行时输入一个字符串,然后逆序输出该字符串。2将实验四习题1中查找n个元素的一维数组中的最大值和次大值的算法定义成一个函数,改造并完成该题。实验四 类与对象实验目的 掌握类和对象的概念、定义和访问方法 掌握不同类型成员的访问限制 掌握构造函数和析构函数的使用方法实验示例例4-1 运用面向对象程序设计方法编写一个程序,计算两个给定长方形的面积,其类中设计一个用于计算两个长方形的总面积成员函数。解题思路:设计一个类Rect,包含数据成员len(表示长度)、wid
24、(表示宽度),以及求面积的公有成员函数area()、求两个长方形的总面积成员函数addarea(),并设计两个重载的构造函数。实现步骤:1新建Win32 Console Application程序项目2在文件编辑区窗口编写如下程序代码:#include #include class Rect float len,wid; public: Rect() ; / 默认的构造函数(内联的) Rect(float,float); / 构造函数 float area() return len*wid; ; / 求面积(内联的) void addarea(Rect,Rect); / 求两个长方形的面积;R
25、ect:Rect(float a, float b) len=a; wid=b;void Rect:addarea(Rect r1, Rect r2) cout”总面积:”r1.len*r1.wid+r2.len*r2.widendl;void main() Rect A(3.5,2.0), B(3.8,2.3), C; coutA.areatB.areaendl;C.addarea;3编译、链接和执行程序例4-2 编写一个程序,设计一个类score用于统计一个班的平均成绩。解题思路:使用2个静态数据成员分别存储总分、人数,另定义一个静态成员函数输出平均成绩。实现步骤:1新建Win32 Console Application程序项目2在文件
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1