《C++程序设计》谭浩强版实验指导书.docx
- 文档编号:6093857
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:35
- 大小:33.99KB
《C++程序设计》谭浩强版实验指导书.docx
《《C++程序设计》谭浩强版实验指导书.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》谭浩强版实验指导书.docx(35页珍藏版)》请在冰豆网上搜索。
《C++程序设计》谭浩强版实验指导书
《C++程序设计》
实验教学指导书
课程编号:
?
?
?
?
?
撰写人:
朱世华
审核人:
前言
程序设计是一门实践性很强的课程,通过实验可以巩固和加强课堂教学内容,提高学生实际工作能力和动手能力,并为后续课程和从事实践技术工作奠定重要的基础。
因此,学生在进行理论知识学习的同时,必须十分重视实践环节----上机。
上机实验时应该一人一组,独立上机。
在上机过程中出现的问题,一般应自己独立处理,学生应在实验前将教师指定的题目编好程序,然后上机输入和调试。
上机前应事先作好准备工作,以提高上机实验的效率,准备工作至少应包括:
(1)复习和掌握与本实验有关的教学内容。
(2)准备好上机所需的程序。
(3)对运行中可能出现的问题应事先做出估计;对程序中有疑问的地方,应做上记号,以便上机时给予注意。
(4)准备好调试和运行时所需的数据。
实验设备与环境:
1、硬件配置
PentiumⅡ以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于32MB,硬盘自由空间不少于60MB。
推荐配置为内存256MB(或以上),硬盘自由空间1GB以上。
2、软件配置
操作系统:
WindowsXP,Windows2000以上版本
开发环境:
MicrosoftVisualC++2010以上版本。
实验一VisualC++2010的基本用法1
实验二数据类型、运算符和表达式4
实验三三种基本结构的实现17
实验四三种基本结构的实现29
实验六指针13
实验七函数14
实验八结构和联合17
实验九类与对象20
实验十综合实验23
实验一VisualC++2010的基本用法
一、实验目的
1.熟悉VisualC++2010集成开发环境的基本命令和功能键。
2.学习完整的C++程序开发过程。
3.理解简单的C++程序结构。
二、实验内容与步骤
本次实验将学习有关VisualC++开发环境的一些知识,并尝试实现一个简单的DOS程序和Windows程序。
通过本次实验,可以了解用VisualC++开发应用程序的全过程。
1、熟悉VisualC++开发环境
我们选择VisualC++那一项就可以了。
下图是VS2010打开后的画面,当然可能你的界面跟我的不一样,没关系,那只是设置问题。
菜单栏我们常用的是File,View和Debug菜单下的菜单项。
工具栏各项其实在菜单栏都有与它们对应的菜单项,功能是一样的。
左侧面板可以放多个视图,我这里放了解决方案浏览器、类视图和资源视图,解决方案浏览器中我们可以看到所有头文件和源文件构成的树,头文件就是.h后缀的文件,源文件就是.cpp后缀的文件,类视图中显示了每个工程的每个类,也是树状结构,在解决方案浏览器或类视图中双击每一项,中间区域都会打开相应的文件或者到类的位置。
资源视图中显示了界面工程中使用的一些界面资源。
中间区域默认是打开startpage,打开一个工程后我们在左侧面板上双击某项时,中间区域会出现相应的界面。
右侧面板上有个Toolbox,是在界面工程中用来往界面资源模板上添加控件的,里面包含了各种控件,直接拖到模板上就行了。
底侧还有几个标签,其中一个是output,这是输出视图,用来输出程序运行信息和我们程序中写的一些调试信息,还有一个FindResult视图,用来显示我们搜索任何字母或单词的结果。
File->New->Project项可以创建一个工程,也可以在startpage中点击NewProject...,然后出现的NewProject窗口中有多个工程类型可以选择,Win32ConsoleApplication是Win32控制台程序,MFCApplication是MFC应用程序,可以建立以开发界面程序,Win32Project是Win32程序,EmptyProject是空程序,MFCDLL用来建立生成动态链接库的工程,其它的不常用就不介绍了。
我们要建立一个没有应用程序界面的只有Dos命令行界面的工程就选Win32ConsoleApplication项,我们学习C++基础知识用这个就可以了。
它跟Win32Project的区别是,它的入口是main函数,而Win32Project的入口是WinMain函数。
File->Open->Project/Solution可以打开以前建立的工程或者解决方案,一个解决方案中可以包含多个工程,你可以把它理解为多个有关系或者没关系的工程的集合,有时把多个工程放到一个解决方案里调试起来很方便。
在View下的菜单项我们就可以控制它。
View->SolutionExplorer可以打开或关闭解决方案浏览器视图,View->ClassView用来控制类视图的显示,View->ResourceView控制资源视图的显示,当然只有界面工程的资源视图中才会有内容。
View->Output和View->FindResults等项大家应该也知道它们的含义了吧。
Debug->StartDebugging(快捷键是F5)用来开始调试,Debug->ToggleBreadpoint(快捷键是F9)用来设置断点,设置断点后然后开始调试,程序运行到断点时会停下来,我们用鼠标放到断点处的各个变量上时可以看到当时这些变量的值。
Debug->StartWithoutDebugging表示不调试直接运行,也就是到断点处也不会停止运行。
Debug->StepInto(快捷键是F11)用来单步执行,遇到子函数就进入并且继续单步执行;Debug->StepOver(快捷键是F10)也是单步执行,但在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完而跳到下一步,也就是把子函数整个作为一步。
工具栏上有个下拉列表框,它包含有Debug、Release和ConfigurationManager,选择Debug时为调试模式,生成的可执行程序中包含调试信息,我们可以调试并清楚的看到变量值,选择Release时生成的可执行程序中不含调试信息,在设置断点后看到的变量值可能不准确。
msdn帮助可以点Help->ViewHelp(快捷键是F1),也可以点开始->MicrosoftVisualStudio2010->MicrosoftVisualStudio2010Documentation打开。
2、控制台应用程序的建立
用Appwizard建立一个控制台应用程序,在显示器上输出“Hello,World!
”。
(1)创建项目(project)
首先创建一个项目,用来管理用户的应用程序。
创建项目的步骤为:
1启动visualStudio2010。
2从主菜单中选择菜单项“File”→“New”,打开“New”对话框。
3选择“Projects”标签,从项目列表中单击“Win32ConsoleApplication”选项。
在“projectname”编辑框中键入项目的名字,如“hello”,系统将自动为用户的项目分配一个默认的目录。
也可以在“Location”编辑框中重新输入项目存放路径。
单击“OK”按钮继续。
(2)编辑源程序
在项目中添加一个文件:
1从主菜单中选择菜单项“File”→“New”,打开“New”对话框。
2在“New”对话框中选择“File”标签,单击“C++SourceFile”选项,建立源文件(扩展名为.cpp)。
选中“AddtoProject”复选框。
在右边的“File name”编辑框中为文件指定一个名字,如“Hello”,系统将自动加上后缀“.cpp”。
这时在编辑窗口将自动打开一个新的空白文件,在文件中输入源程序。
本例中输入以下内容:
#include
voidmain()
{
cout<<〞hello,world!
〞< } 仔细检查输入的内容,确保内容正确。 (3)保存源文件 单击工具栏中的“save”图标,或选择菜单项“File”→“Save”保存源文件。 (4)编译源文件 选择菜单项“Build”→“CompileHello.cpp”来编译源文件,如果输入的内容没有错误,那么,在屏幕下方的输出窗口将会显示: hello.obj--0error(s),0warning(s) 如果在编译时得到错误或警告,则表明源文件出现错误,检查源文件,改正错误后再编译,直至无误。 (5)链接程序 选择菜单项“Build”→“BuildHello.exe”链接程序,如果链接过程中没有错误,则在输出窗口会显示: hello.exe--0error(s),0warning(s) 如果有错误,应改正,然后重复(4)、(5),直至无误。 (6)运行程序 选择菜单项“Build”→“ExecuteHello.exe”运行程序,将显示一个类似于DOS的窗口,在窗口中第一行输出“hello,world! ”,第二行输出“Pressanykeytocontinue”,提示用户按任意键回到开发环境。 3、编写一个简单的C++程序 要求: 输入圆的半径,计算圆的周长和面积。 步骤: (1)按照上面的步骤创建一个项目,名字为“Circle”。 (2)在项目中增加一个文件,命名为“Circle.cpp”。 (3)在文件中输入源程序如下: #include constdoublePI=3.14159;//定义符号常量 voidmain() { doubleradius;//定义半径 doubleperimeter,area;//定义周长和面积 cout<<"请输入圆的半径: "; cin>>radius; perimeter=2*PI*radius;//计算周长 area=PI*radius*radius;//计算面积 cout<<"圆的周长为: "< cout<<"\n圆的面积为: "< } (4)编译、链接程序,直到没有错误。 (5)运行程序,输入测试数据,测试程序的功能。 测试数据: 输入: 5 输出: 圆的周长为: 31.4159 圆的面积为: 78.5397 输入: 7 输出: 圆的周长为: 43.9823 圆的面积为: 153.938 思考问题: (1)程序中为什么要包含头文件iostream.h? (2)建立控制台应用程序的一般步骤是怎样的? 实验二数据类型、运算符和表达式 一、实验目的 1.掌握VisualC++基本数据类型的字节宽度和范围表示,熟悉如何定义一个整型、字符型和实型变量,以及对它们赋值的方法。 2.掌握不同类型数据之间赋值的规律。 3.学会使用C++的有关算术运算符,以及包含这些运算符的表达式,特别是自增(++)和自减(――)运算符的使用。 4.进一步熟悉C++程序的编辑、编译、连接和运行的过程。 二、实验内容与步骤 1、基本数据类型的长度 编写一个程序,输出基本数据类型char、short、int、long、float、double和指针类型void*、char*、short*、int*、long*、float*、double*的数据类型的长度。 要求: 弄清所使用的系统上运行的C++编译器中每个基本数据类型的长度。 提示: 利用运算符sizeof(数据类型名)来得到各个数据类型的长度。 思考问题: 为什么所有的指针长度都一样? 2、整型、字符型变量的定义及赋值 (1)输入并调试运行下面的程序 #include voidmain() { charc1,c2; c1=’a’; c2=’b’; cout< } ①运行此程序,写出执行结果。 ②在此基础上增加一个语句: cout<<(int)c1< 再运行,并观察结果。 ③将第1行改为;intc1,c2; 再运行,并观察结果。 ④将第2、3行改为: c1=a;//不用单撇号 c2=b; 再使之运行,分析其运行结果。 ⑤将第2、3行改为: c1=”a”;//用双撇号 c2=”b”; 再使之运行,分析其运行结果。 ⑥将第2、3行改为: c1=300;//用大于127的整数 c2=400; 再使之运行,分析其运行结果。 (2)输入并调试运行下面的程序 #include voidmain() { charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’; cout< cout<<”\t\b”< } 要求: 在实验前先分析程序,写出应得结果,实验时将二者对照。 (3)输入并调试运行下面的程序 include voidmain() { intx,y,m,n; x=8; y=10; m=++x; n=y++; cout< } ①运行程序,注意x、y、m、n各变量的值。 ②将第4、5行改为: m=x++; n=++y; 再运行。 ③将程序改为: #include voidmain() { intx,y; x=8; y=10; cout< } ④在③的基础上,将cout语句改为: cout<<++x< ⑤再将cout语句改为: cout< ⑥将程序改为: #include voidmain() { intx,y,m=0,n=0; x=8; y=10; m+=x++: n-=--y; cout< } 写出程序的执行结果。 实验三三种基本结构的实现1 一、实验目的 1、学会正确使用逻辑运算符和逻辑表达式。 2、熟练掌握if语句和switch语句。 3、学习调试程序。 二、实验内容与步骤 1、已知三个数a、b、c,找出最大值放于max中。 (1)输入并调试运行下面的程序: #include voidmain() { inta,b,c,max;//定义四个整型变量 cin>>a>>b>>c; if(a>=b) max=a;//a>=b else max=b;//a if(c>max) max=c;//c是最大值 cout<<"max="< } (2)若输入下列数据,分析程序的执行顺序并写出运行结果。 1123 2213 3321 4312 5332 6212 2、输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90(包括80): B 70至80(包括70): C 60至70(包括60)D 60分以下: E 输入以下程序并调试运行。 #include voidmain() { floatscore; chargrade; cout<<"inputastudentscore: "; cin>>score; if(score<0||score>100) cout<<"inputerror! "< else { switch(int(score)/10) { case10: case9: grade='A';break; case8: grade='B';break; case7: grade='C';break; case6: grade='D';break; default: grade='E'; } cout<<"thestudentscort: "< } } 输入测试数据,调试程序并写出结果。 测试数据要覆盖所有路径,注意临界值,例如此题中的100分、60分、0分以及小于0和大于100的数据。 3、有一函数: x(x<1) y=2x-1(1≤x<10) 3x-11(x≥10) 用cin语句输入x的值,求y值。 运行程序,输入x的值(分别为x<1、1≤x<10、x≥10三种情况),检查输出的y值是否正确。 思考问题: (1)if语句和switch语句适合于什么情况? (2)能否用switch语句完成对输入值的判断? 实验四三种基本结构的实现2 一、实验目的 1、学会正确使用逻辑运算符和逻辑表达式。 2、理解并掌握程序的循环结构。 3、熟练掌握用while语句、do—while语句和for语句实现循环的方法。 4、掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 5、进一步学习调试程序。 二、实验内容与步骤 1、打印500以内的“水仙花数”。 “水仙花数”是一个3位数,其各位数立方和等于该数本身。 输入以下程序并调试运行 #include voidmain() { inti,j,k,n; for(n=100;n<=500;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) cout< } } 2、一个数如果恰好等于它的因子之和,这个数就称为完数。 求500之内的所有完数。 输入以下程序并调试程序。 #include voidmain() { intn,s,j; for(n=1;n<=500;n++) { s=0; for(j=1;j if(n%j==0) s=s+j; if(s==n) cout< } } 3、任给一个的正整数,要求: (1)求出它是几位数。 (2)按逆序打印出各位数字。 例如原数为321,应输出123。 (3)除此之外,程序还应当对不合法的输入作必要的处理。 例如: 输入负数。 提示: 利用%、/运算符,循环迭代。 4、编写一个程序,循环从标准输入读入某雇员的工作时间(以小时计)和每小时的工资数,计算并输出他的工资。 若雇员月工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。 若雇员月工作小时超过50小时,则超过50的部分按原工资的3倍的加班工资来计算。 而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。 要求: (1)分别用三种循环(for、while、do--while)完成程序要求。 (2)要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的工资值时,可以提示: “请输入雇员的工作时间和小时工资: ” 输出时,提示: “雇员工资为: ” (3)循环在用户输入的工作时间为0时结束。 测试数据: 输入: 304 输出: 120 输入: 454.5 输出: 213.75 输入: 605 输出: 425 输入: 00 程序结束 思考问题: (1)三种循环语句都适合于什么情况? 如果已经知道要计算的雇员的数目(如10个),用哪种循环更方便? (2)while、do—while的区别? 实验五数组 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法。 2、掌握字符数组和字符串函数的使用。 3、掌握与数组有关的算法(特别是排序算法和查找算法)。 二、实验内容与步骤 1、输入一串字符,计算其中*字符的个数。 输入以下程序并调试运行。 #include voidmain() { charc[30]; inti,sum=0; cin>>setw(30)>>c; for(i=0;c[i]! =’\0’;i++) if(c[i]==‘*‘) sum=sum+1; cout< cout<<“*字符的个数为: ”< } 2、输入一行字符,分别统计出其中的英文字母、数字和其他字符的个数。 在得到正确结果后,请修改程序使之能分别统计大小写字母、数字和其他字符的个数。 提示: 用数组统计个数。 3、从键盘读入若干整数,使用选择排序方法将它们按由低到高排序输出。 要求: 用一个数组存放各个整数,用cin语句输入。 提示: 选择排序法的算法如下: (1)从n个数中选择最小的一个,把它和第一个数组元素交换; (2)从剩下的n–1个数中选择最小的一个,把它和第二个数组元素交换; (3)依此类推,直到从最后两个元素中选出倒数第二小的元素并把它和倒数第二个元素交换为止。 测试数据: 程序先输出: 请输入数据个数: : 用户输入: 5 程序再输出: 请输入全部数据: 用户输入: 3175634558 程序输出: 3145586375 4、有若干个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。 如果该数不在数组中,则输出“无此数”。 要求: 若干个数用赋初值的方法在程序中给出,要找的数用cin语句输入。 提示: 折半查找法: 折半查找的思想为: 在有序表中,取中间元素作为比较对象,若给定值与中间元素的关键码相等,则查找成功;若给定值小于中间元素的关键码,则在中间元素的左半区继续查找;若给定值大于中间元素的关键码,则在中间元素的右半区继续查找。 不断重复上述查找过程,直到查找成功,或所查找的区域无数据元素,查找失败。 (1)low=0;high=length-1;//设置初始区间 (2)当low>high时,返回查找失败信息//表空,查找失败 (3)low<=high,mid=(low+high)/2;//取中间 ①若kx (2)//查找在左半区进行 ②若kx>elem[mid],low=mid+1;转 (2)//查找在右半区进行 ③若kx==elem[mid],返回数据元素在表中位置//查找成功 测试数据: 例如,有序表{20,25
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计 C+ 程序设计 谭浩强版 实验 指导书