- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章_递归与图形
第8章 C语言高级编程技术 §8.1 递归程序设计 §8.2 文本的屏幕输出和键盘输入 §8.3 图形程序设计 §8.4 发声技术 §8.5 Linux操作系统下的C语言编程基础 §8.6 Windows操作系统下的C语言编程基础 §8.7 综合应用开发实例 WinMain函数必须执行以下几个步骤: (l)定义窗口类; (2)注册窗口类; (3)创建该类窗口; (4)显示窗口; (5)运行消息循环。 2、定义和注册窗口类 Windows的每一个应用程序都要有一个主窗口。每个程序的主窗口不尽相同。每一个窗口都要有一个窗口类。窗口类规定了此类窗口所具有的风格、字体、图标等信息。窗口类是相对于结构体WNDCLASSEX的一个结构体变量。 定义了窗口类后,就调用函数RegisterClassEX()来注册这个窗口类。只有注册了窗口类,才能创建新的窗口。 3、创建窗口 创建窗口只需要调用CreateWindowEx()函数。函数的原型为: HWND CreateWindowEx( DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam ); * 一、递归与递归程序设计 递归分直接递归和间接递归两种。 直接递归调用:若在一个函数的定义中出现了对自身的调用,称之为直接递归; 间接递归调用:若一个函数f的定义中包含了对函数g的调用,而g的实现过程又调用了f,即函数调用形成了一个环状调用链, 这种方式称之为间接递归。 funa() { ... funa(); ... } funa() { ... funb(); ... } funb() { ... funa(); ... } 直接递归调用 间接递归调用 二、递归实例 例1:编写一个递归函数,求n的阶乘值n!。 若用fact(n)表示n的阶乘值,根据阶乘的数学定义可知: long fact(int n) { long m; if (n == 0) return(1); else { m=n*fact(n-1); return (m); } } 要使用递归技术进行程序设计,首先必须将要求解的问题分解成若干子问题,这些子问题的结构与原问题的结构相同,但规模较原问题小。由于子问题与原问题结构相同,因而它们的求解过程相同,在进行程序设计时,不必再仔细考虑子问题的求解,只需借助递归机制进行函数自身调用加以实现,然后利用所得到的子问题的解组合成原问题的解即可;而递归程序在执行过程中,通过不断修改参数进行自身调用,将子问题分解成更小的子问题进行求解,直到最终分解成的子问题可以直接求解为止。 一个问题要采用递归方法来解决时必须符合以下三个条件: (1)能将问题转化为一个新的问题,而这个新问题的解决方法与原问题的解法相同,它们只是有规律的递增或递减。 (2)通过转化过程使问题得到解决。 (3)要有一个明确的结束递归的条件。 三、递归程序执行过程的分析 递归程序的执行过程可分为递推和回归两个阶段。 在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。 在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解 四、递归算法的优缺点 优点:是可以把算法写的比使用非递归函数时更清晰更简洁。 缺点:一是需要额外的内存开销;二是递归算法的执行效率相对较低。 五、递归程序设计的应用举例 例2:编程求两个正整数的最大公约数。 例3:汉诺塔(Hanoi)问题 一、文本的屏幕输出 显示模式有两种:文本方式和图形方式。 文本方式下的坐标系统:坐标原点在屏幕左上角,其坐标为(1,1),X轴为水平方向,Y轴为垂直方向。 Turbo C 的字符屏幕函数主要包括文本窗口大小的设定、窗口颜色的设置、窗口文本的清除和输入输出等函数。 1、文本窗口的定义 void textmode(int newmode); 功能:该函数将清除屏幕,以整个屏幕为当前窗口,并移光标到屏幕左上角。 void window(int left, int top, int right, int
您可能关注的文档
最近下载
- 2019-2020学年重庆八中七年级(上)期末数学试卷.docx
- 02J331 地沟及盖板(标准图集).pdf VIP
- 第十一章 沟通——管理学(马工程).ppt
- 2020-2021学年重庆八中八年级(下)期中数学试卷.doc VIP
- 2020年重庆八中八年级(下)期中物理试卷 .doc VIP
- 某家具城进销存管理系统数据库课程设计.docx
- 生物柴油安全技术说明书.pdf
- 新疆地区输电线路工程冬季施工增加费用解析权威资料.doc VIP
- DB11-1624 2019 北京市电动自行车停放场所防火设计标准.docx
- 重庆市第八中学校2023-2024学年八年级上学期期末考试数学试卷(含解析).doc VIP
文档评论(0)