《C程序设计》谭浩强版实验指导书_第1页
《C程序设计》谭浩强版实验指导书_第2页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 9/9C程序设计谭浩强版实验指导书 C+程序设计 实验教学指导书 课程编号:? 撰写人:朱世华 审核人: 前言 程序设计是一门实践性很强的课程,通过实验可以巩固和加强课堂教学内容,提高学生实际工作能力和动手能力,并为后续课程和从事实践技术工作奠定重要的基础。因此,学生在进行理论知识学习的同时,必须十分重视实践环节上机。 上机实验时应该一人一组,独立上机。在上机过程中出现的问题,一般应自己独立处理,学生应在实验前将教师指定的题目编好程序,然后上机输入和调试。 上机前应事先作好准备工作,以提高上机实验的效率,准备工作至少应包括: (1)复习和掌握与本实验有关的教学内容。 (2)准备好上机所需的程

2、序。 (3)对运行中可能出现的问题应事先做出估计;对程序中有疑问的地方,应做上记号,以便上机时给予注意。 (4)准备好调试和运行时所需的数据。 实验设备与环境: 1、硬件配置 Pentium以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于32MB,硬盘自由空间不少于60MB。推荐配置为内存256MB(或以上),硬盘自由空间1GB以上。 2、软件配置 操作系统:Windows XP,Windows 2000以上版本 开发环境:Microsoft Visual C+ 2010以上版本。 目录 实验一 Visual C+ 2010的基本用法 (1) 实验二数据类型、运算符和表达式 (4

3、) 实验三三种基本结构的实现1 (7) 实验四三种基本结构的实现2 (9) 实验六指针 (13) 实验七函数 (14) 实验八结构和联合 (17) 实验九类与对象 (20) 实验十综合实验 (23) 实验一Visual C+ 2010的基本用法一、实验目的 1熟悉Visual C+2010集成开发环境的基本命令和功能键。 2学习完整的C+ 程序开发过程。 3理解简单的C+ 程序结构。 二、实验内容与步骤 本次实验将学习有关Visual C+ 开发环境的一些知识,并尝试实现一个简单的DOS程序和Windows程序。通过本次实验,可以了解用Visual C+ 开发应用程序的全过程。 1、熟悉Vis

4、ual C+ 开发环境 我们选择Visual C+那一项就可以了。下图是VS2010打开后的画面,当然可能你的界面跟我的不一样,没关系,那只是设置问题。 菜单栏我们常用的是File,View和Debug菜单下的菜单项。工具栏各项其实在菜单栏都有与它们对应的菜单项,功能是一样的。左侧面板可以放多个视图,我这里放了解决方案浏览器、类视图和资源视图,解决方案浏览器中我们可以看到所有头文件和源文件构成的树,头文件就是.h后缀的文件,源文件就是.cpp后缀的文件,类视图中显示了每个工程的每个类,也是树状结构,在解决方案浏览器或类视图中双击每一项,中间区域都会打开相应的文件或者到类的位置。资源视图中显示了

5、界面工程中使用的一些界面资源。中间区域默认是打开start page,打开一个工程后我们在左侧面板上双击某项时,中间区域会出现相应的界面。右侧面板上有个Toolbox,是在界面工程中用来往界面资源模板上添加控件的,里面包含了各种控件,直接拖到模板上就行了。底侧还有几个标签,其中一个是output,这是输出视图,用来输出程序运行信息和我们程序中写的一些调试信息,还有一个Find Result 视图,用来显示我们搜索任何字母或单词的结果。 File-New-Project项可以创建一个工程,也可以在start page中点击New Project.,然后出现的New Project窗口中有多个工程

6、类型可以选择, Win32 Console Application是Win32控制台程序,MFC Application是MFC应用程序,可以建立以开发界面程序,Win32 Project是Win32程序,Empty Project是空程序,MFC DLL用来建立生成动态链接库的工程,其它的不常用就不介绍了。我们要建立一个没有应用程序界面的只有Dos命令行界面的工程就选Win32 Console Application项,我们学习C+基础知识用这个就可以了。它跟Win32 Project的区别是,它的入口是main函数,而Win32 Project的入口是WinMain函数。 File-Ope

7、n-Project/Solution可以打开以前建立的工程或者解决方案,一个解决方案中可以包含多个工程,你可以把它理解为多个有关系或者没关系的工程的集合,有时把多个工程放到一个解决方案里调试起来很方便。 在View下的菜单项我们就可以控制它。View-Solution Explorer可以打开或关闭解决方案浏览器视图,View-Class View用来控制类视图的显示,View-Resource View控制资源视图的显示,当然只有界面工程的资源视图中才会有内容。View-Output和 View-FindResults等项大家应该也知道它们的含义了吧。 Debug-Start Debuggi

8、ng(快捷键是F5)用来开始调试,Debug-Toggle Breadpoint (快捷键是F9)用来设置断点,设置断点后然后开始调试,程序运行到断点时会停下来,我们用鼠标放到断点处的各个变量上时可以看到当时这些变量的值。Debug-Start Without Debugging表示不调试直接运行,也就是到断点处也不会停止运行。Debug-Step Into(快捷键是F11)用来单步执行,遇到子函数就进入并且继续单步执行;Debug-Step Over(快捷键是F10)也是单步执行,但在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完而跳到下一步,也就是把子函数

9、整个作为一步。 工具栏上有个下拉列表框,它包含有Debug、Release和Configuration Manager,选择Debug时为调试模式,生成的可执行程序中包含调试信息,我们可以调试并清楚的看到变量值,选择Release时生成的可执行程序中不含调试信息,在设置断点后看到的变量值可能不准确。 msdn帮助可以点Help-View Help(快捷键是F1),也可以点开始-Microsoft Visual Studio 2010-Microsoft Visual Studio 2010 Documentation打开。 2、控制台应用程序的建立 用Appwizard建立一个控制台应用程序,

10、在显示器上输出“Hello,World!”。 (1)创建项目(project) 首先创建一个项目,用来管理用户的应用程序。创建项目的步骤为: 启动visual Studio 2010。 从主菜单中选择菜单项“File”“New”,打开“New”对话框。 选择“Projects”标签,从项目列表中单击“Win32 Console Application”选项。 在“project name”编辑框中键入项目的名字,如“hello”,系统将自动为用户的项目分配一个默认的目录。也可以在“Location”编辑框中重新输入项目存放路径。 单击“OK”按钮继续。 (2)编辑源程序 在项目中添加一个文件:

11、 从主菜单中选择菜单项“File”“New”,打开“New”对话框。 在“New”对话框中选择“File”标签,单击“+ Source File”选项,建立源 文件(扩展名为.cpp)。选中“Add to Project”复选框。在右边的“File name” 编辑框中为文件指定一个名字,如“Hello”,系统将自动加上后缀“.cpp”。 这时在编辑窗口将自动打开一个新的空白文件,在文件中输入源程序。 本例中输入以下内容: include void main() coutradius; perimeter=2*PI*radius; / 计算周长 area=PI*radius*radius; /

12、 计算面积 cout void main( ) char c1, c2; c1=a; c2=b; cout void main( ) int x,y; x = 8; y = 10; cout void main ( ) int x, y, m=0, n=0; x = 8; y = 10; m += x+: n -= -y; coutabc; if(a= b) max = a; /a=b else max = b; /amax) max = c; /c是最大值 cout void main() float score; char grade; cout score; if ( score 100

13、 ) cout void main() int i, j, k, n; for ( n = 100; n void main() int n, s, j; for ( n=1; n void main( ) char c30; int i , sum=0; cinsetw(30)c; for ( i=0; ci!=0; i+ ) if (ci = *) sum=sum + 1; cout high时,返回查找失败信息/表空,查找失败 (3)lowelemmid,low=mid+1;转(2)/查找在右半区进行 若kx=elemmid,返回数据元素在表中位置/查找成功 测试数据: 例如,有序表20

14、,25,30,36,42,48,55,61,69,72,83,97 程序先输出:请输入一个整数: 用户输入:72 程序则应输出:数据72在有序表中的位置下标是10。 用户输入:35 程序则应输出:在有序表中无此数! 5、将两个字符串链接起来。 要求:不使用strcat函数。 提示:定义两个字符型数组,找到第一个串的最后一个字符位置,将第二个串的字符依次放入。注意串的结束标志“0”。 6、找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能 没有鞍点。 提示: 用cin语句从键盘输入数组各个元素的值,检查结果是否正确。题目并未指定二维数组的行数和列数,程序应能处理任意行

15、数和列数的数组。因此,从理论上来说,应当准备许多种不同行数和列数的数组数据,但这样的工作量太大,一般来说不需要这样做,只需要准备典型的数据即可。 如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用cin 语句。请同学们修改程序以实现之。 测试数据:(至少应当准备两组测试数据) (1)二维数组有鞍点 9 80 205 40 90 -60 96 1 210 -3 101 89 (2)二维数组没有鞍点 9 80 105 40 90 -60 196 1 210 -3 101 89 实验六指针 一、实验目的 1、掌握指针的概念,会定义和使用指针变量。 2、能正确使用数组的指针和指向数组

16、的指针变量。 3、能正确使用字符串的指针和指向字符串的指针变量。 4、了解二级指针的概念及其使用方法。 二、实验内容与步骤 1、输入两个整数,按由大到小的顺序输出。 输入以下程序并调试运行。 #includeab; if ( anumber; if (prime(number) cout int n=0; int func( int x=10 ); void main() int a, b; a=5; b=func(a); cout=1并且n=r; (4)注意整数能存放的数据范围有限,如何解决? 提示: (1)可以用double数据类型来存放函数的计算结果。 (2)递归结束条件: 如果r=0,

17、则C(n,r)=1; 如果r=1, 则C(n,r)=n。 测试数据: 输入:5 3 输出:10 输入:10 20 输出:Iput Invalid1 输入:50 3 输出:1.#IND 输入:0 0 Iput Invalid1 程序结束 思考问题: (1)对各种数据类型的字长是否有了新的认识? (2)递归函数的书写要点是什么? (3)递归和非递归函数各有哪些好处? 5、求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数,用另一个函 数求最小公倍数。 (提示:可以用下面的方法求: 一、利用辗除法或其它方法求得最大公约数; 二、最小公倍数等于两数之积除以最大公约数。) 要求: 两个整数在主函

18、数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再和两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。 实验八结构和联合 一、实验目的 1、掌握结构体类型变量的定义和使用。 2、掌握结构数组的概念和使用。 3、掌握链表的概念,初步学会对链表进行操作。 4、掌握联合体的概念与应用。 二、试验内容与步骤 1、输入和运行以下程序。 #includeu.s0u.s1; coutu.b;输入60000给b,分析运行结果。 2、打印学生成绩单,内容包括学号、姓名、三门课(数学MT、英语EN、计算机COMPU)的 成绩。计算每个学生三门课程的总分SUM和

19、平均分AVER。若三门课成绩都在90分以上者,输出“Y”;否则输出“N”,并打印学生成绩单,格式如下: NUM NAME MT EN COMP SUM AVER =90 9501 Liufan 95 98 96.5 289.5 96.5 Y 9502 Zhanghua 95 82 86.5 263.5 87.8333 N 9503 Liming 68 89 85 242 80.6667 N 输入以下程序并调试运行。 #include struct student int num; char name15; float score3; float sum; float aver; char ch

20、; ; void main() student stu3; int i,j; for ( i=0; i stui.num; cin ; for ( j=0; j stui.scorej; for ( i=0; i=90 #includegoods.h / 货物类的定义文件 void main( ) coutw; Goods *g1=new Goods(w); / 购进一箱货物 coutw; Goods *g2=new Goods(w); / 购进一箱货物 cout #include int employee:employeeNo=1000; /员工编号基数为1000 employee:employee() char namestr20; /输入雇员姓名时首先临时存放在namestr中 cout namestr; name=new char strlen(namestr)+1; /动态申请用于存放姓名的内存空间strcpy(name,namestr); /将临时存放的姓名复制到name individualEmpNo=employeeNo+ ; /新输入的员工,编号为目前最大编号加1 grade=1; /级别初值为1 accumPay=0.0; /月薪总额初值为0 employee:employee() delete name; /在析构函数中删除

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论