面向对象程序设计
实验指示书
实验二 简单结构化程序开发
实验目的
了解基本数据类型的字节宽度和范围表示 理解并掌握程序的分支、循环结构 提高程序可读性
学习过程化程序设计方法
进一步学习掌握查找与修改编译错误的方法 初步学习调试方法
掌握函数声明、定义和使用的方法 掌握函数递归调用的方法
掌握全局变量、局部变量、静态变量的使用方法 掌握内联函数、重载函数及默认函数参数的使用方法 掌握自定义头文件的方法,学会建立和调试多文件程序
实验内容
1. 基本数据类型的长度
编写一个程序,输出基本数据类型char, short, int, long, float, double和指针类型void *, char *, short *, int *, long *, float *, double *的数据类型的长度。
[实现要求]:
搞清你所使用系统上运行的C++编译器中每个基本数据类型的长度。
[实现提示]:
利用函数sizeof(数据类型名)来得到各个数据类型的长度
?编辑技巧
Visual C++编辑器功能非常强大,它具有许多优点,你可以在不断的探索中对其了解。下面的特点你可能已有所体会:
? 自动语法。用高亮度和不同颜色的字来显示关键字和注释内容 ? 自动缩进。帮助你排列源代码,使其可读性更强 ? 参数帮助。显示预定义的windows函数的参数
? 集成的关键字帮助。能够使你得到任何关键字、MFC类或Windows函数的帮助信息(按F1即可) ? 拖放编辑
? 自动错误定位。能自动将光标移动到有编译错误的源代码处。
拖放编辑在本次实验中非常有效,因为你需要写很多类似的代码行,借助于拖放功能,你可以方便地实现代码的移动或复制。具体操作方式为:
(1) 将鼠标放置在要复制的内容的开始部分,按下鼠标左键不放,拖动鼠标,直到要复制内容的结束部分,放开鼠标,此时你选的部分成为反显;
1
(2) 将鼠标放在选中内容的任意部位,按下鼠标左键,此时鼠标右下方出现一个虚的长方形标志,该标志就表示你将要拖动的内容。如果你想复制所选的内容,则再按住Ctrl键(缺省为移动操作),此时鼠标右下方的长方型标志中间出现了一个十字形; (3) 按住鼠标左键不放,拖动鼠标,你会看到一个虚的光标跟随鼠标移动,将它移动到想要放代码的新位置,松开鼠标左键(如果按了Ctrl键,在松开鼠标以后再松开按键)。
(4) 你所选的代码就可以移动(或复制)到新的位置。
[思考问题]
为什么所有的指针长度一样?
2. 循环与分支结构
编写一个程序,循环从标准输入读入某雇员的工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员月工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。若雇员月工作小时超过50小时,则超过50的部分按原工资的3 倍的加班工资来计算,而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。
[测试数据] 输入:30 4 输出:120 输入:45 4.5 输出:213.75 输入:60 5 输出:425 输入:0 0 程序结束 [实现要求]
(1) 分别用三种循环(for, while, do while)完成程序要求
(2) 要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的工资值时,可以提示:
“Please input employee’s work time and wage_per_hour:” 输出时,提示:
“The employee’s wage :”。
(3) 循环在用户输入的工作时间为0时结束。 (4) 为你的程序加上注释,使得其清晰可读。 (5) 尝试利用调试程序来修改你程序的逻辑错误。
[实现提示]
(1) 可以利用永久循环(while(1))加break语句的方式控制程序流程
?调试(debugging) Visual C++内置了强大的调试功能。调试发生在你已经成功地进行了编译、连接,得到了可执行程序,但是程序执行的结果不正确的情况下。调试是修改你的代码以便它能够正确工作的过程。Developer Studio提供了许多工具帮助你跟踪和定位错误。调试系统提供特殊的菜单、窗口、对话框等来为开发者提供帮助。
调试命令
2
有关调试的命令分散在Build、Debug、View和Edit菜单中。Build菜单包含一个Start Debug子菜单,其中的命令是Debug菜单命令的子集,包括:启动调试过程(Go)、单步跟踪( Step Into) 和运行到光标处( Run To Cursor).当启动调试进程后,Build菜单会被Debug菜单代替,Debug菜单包含各种控制程序执行的命令,如单步执行、进入函数体、从函数体中出来、运行到光标所在位置等。View菜单包含一些命令,可以控制显示各种与调试有关的窗口,如变量窗口(Variables window)、调用栈窗口(Call Stack window)等。Edit菜单下的Breakpoints命令可以打开一个对话框,在其中可以插入、删除、启动、停止各个断点。
设置断点 你可以控制程序直接运行到指定地点,然后查看运行到这个地方时程序的状态,如变量的值、调用栈的情况等。你可以通过设置断点来达到这一目的。设置断点的方式是:将光标移到要设置断点的地方,按F9,这时会有一个红的圆点出现在代码行的左边。
如果你想取消断点,将光标移动到设置断点的代码行,按F9。
启动调试 按F5或者在Build菜单中,选择Start Debug然后选择Go,就可以启动调试程序。程序会一直运行到需要用户输入或者有断点的代码处。
查看变量值 查看变量值有多种方式,你可以选择你喜欢的方式进行。1)你可以将鼠标移动到程序的变量名处,系统会自动为你显示变量的值;2)复杂变量(如对象)可以通过QuickWatch查看,方法是:将光标定位到所要查看值的变量处,按鼠标右键,选择QuickWatch菜单,就可以看到变量值。3)启动调试程序后,屏幕下方将会出现两个输出窗口,一个是Watch,另一个是Variable。Watch窗口显示变量名和变量值,你可以在Watch窗口中加上你想观察值的变量名,也可以直接从源代码中选择变量名,并把它拖动到Watch窗口中。Variable窗口显示程序当前运行上下文涉及的变量的值。
控制程序执行 你可以控制程序单步执行(F10)、跟踪到一个函数内部(F11)、从一个函数运行出来(shift+F11)、运行到光标所在位置(Ctrl+F10),以便方便地调试程序。这些命令用于在某个局部范围详细地调试程序。你也可以通过设置断点(F9)然后用直接运行(GO或者F5)来控制程序直接运行到断点位置。如果你设置了多个断点,程序将会在遇到的第一个断点处停下来。要从断点处继续运行,可以用上面所说的各种命令(F5, F10, F11, Shift+F11, Ctrl+F10)。
结束调试 要结束调试,可以按shift+F5或者选择菜单Debug|Stop Debugging。当结束调试后,所有调试窗口会自动关闭,Debug菜单也会自动还原为Build菜单。
[思考问题]
(1) 哪种循环语句最适合本应用?如果已经知道要计算的雇员的数目(如5个),用哪种循环方便?
(2) 本实验能否用switch语句完成对输入值的判断?
3. 分析程序运行结果
输入下列程序,运行它,分析得到的结果。 #include
3
int func(int x = 10);
void main() {
int a,b; a = 5; b = func(a); cout << \ << \ << \ a++; b = func(a); cout < < \ << \ << \
func(); }
int func(int x ) { int a=1; static int b=10; a++; b++; x++; n++; cout << \ << \ << \ return a+b; }
[实现要求]:
? 运行该程序,得到运行结果
? 分析得到的结果,说明为什么得到这样的结果
4. 递归与非递归函数
编写一个函数,求从n个不同的数中取r个数的所有选择的个数。其个数值为:Cr!n?nr!*(n?r)!其中: n! = n*(n-1)*(n-2)*...*1。
[测试数据]: 输入:5 3
4
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库实验二(简单结构化程序设计)在线全文阅读。
相关推荐: