ImageVerifierCode 换一换
格式:DOCX , 页数:5 ,大小:20.67KB ,
资源ID:1815561      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1815561.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第一阶段面向过程.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第一阶段面向过程.docx

1、第一阶段 面向过程 第一阶段 面向过程 第一阶段 面向过程程序设计 1. 编程序 用迭代法求 a 的立方根,求立方根的迭代公式为 :Xi+1=(2*Xi) /3+a/(3*Xi*Xi) 假定 X 的初值为 a,迭代到|Xi+1-Xi|10 的-5 次方为止. 显示 a=3,27 的值,并通过调用pow(a,1.0/3)函数加以验证.。 2. 编程序, 从键盘输入正整数 n, 求出 n 与其反序数之和并输出。 例如, 输入 2038, 输出应为 2038+8302=10340。 3 编程序, 使用如下所谓的简单变量数据平移 方法来求出 Fibonacci 数列的第 n 项(的具体项值)并显示在屏

2、幕上 (正整数 n 通过键盘输入): 说明变量 old1=1, old2=1, newItem;新的 Fibonacci 项 newItem 总是距它最近 的前两项(old1 与 old2) 的累加和。 而后通过 old1=old2; old2=newItem;进行所谓的 数据平移。 接着计算另一个新的 Fibonacci项 newItem, 依次循环, 直到求出数列的第 n 项时为止。 Fibonacci 数列的计算公式如下: fib(1) = 1; fib(2) = 1; fib(n) = fib(n-1) + fib(n-2); /对大于等于 3 的任意 n。 拓展编程 (选做), 设计

3、递归函数 double fib(int n); 用于求出 Fibonacci 数列的第 n 项 (的具体项值) 并返回, 而后编制主函数对它进行调用。 4. 编程序, 输入正整数 m, 它代表一个人民币钱数(元数)。 求取这样一个方案, 使用最少张数的人民币纸币, 凑成上述的钱数 m, 并输出求取结果。 注意, 现在共有 7 种元以上面值的人民币纸币, 分别为: 100, 50, 20, 10, 5, 2, 1。 5. 编程序, 使 用户任意输入一个年份以及该年的 1 月 1 日是星期几, 而后任意指定某一天(再输入该年的任意一个月份日期), 由程序计算出这一天是星期几。 注意, 2 月份闰年

4、为 29 天, 非闰年为 28 天; 可被 4 整除而不可被 100 整除的年份、 或者可被 400 整除的年份均为闰年。 思考: 利用元年元月元日(即 1 年 1 月 1 日) 是星期一的已知事实, 可对程序进行改造,让用户仅输入一个表示日期的年月日, 则程序就应计算出那一天是星期几。 拓展编程序(选做), 设计星座的计算。 6. 编写程序求解骑士巡游问题: 在 n 行 n 列的棋盘上(如 n=5), 假设一位骑士(按象棋中马走日 的行走法) 从初始坐标位置(x1, y1)出发, 要遍访(巡游) 棋盘中的每一个位置一次。 请编一个程序, 为骑士求解巡游路线图(或告诉骑士, 从某位置出发时,无

5、法遍访整个棋盘 问题无解)。 当 n=5 时, 意味着要在 5 行 5 列的棋盘的 25 个点 处, 按骑士行走规则, 依次将 1至 25 这 25 个棋子(数码) 分别摆放到棋盘上(摆满 25 个位置则成功, 否则失败问题无解)。 例如, 当 n=5 且初始坐标位置定为(1, 1) 即最左上角的那个点时, 如下是一种巡游路线图。 程序执行后的输出结果为: (x1,y1)? = (1=5, 1=5) : 1 1 1 6 15 10 21 14 9 20 5 16 19 2 7 22 11 8 13 24 17 4 25 18 3 12 23 提示: (1)棋盘 可用二维数组 B 表示。 (2)

6、 编制一个具有如下原型的递归函数 solve, 用于完成任务: 从(i,j)点出发, 做第 k至第 n*n(即 n 的平方) 次的移动 将 k 直到 n 的平方这些数码按规则分别摆放到棋盘即数组 B 中, 若成功则通过引用参数 ok 返回 true, 否则返回 false。 void solve(int i, int j, int k, bool ok); (3) 编制主函数, 让用户输入作为巡游起点的初始坐标位置(x1,y1), 在该处摆放棋子(数码) 1, 而后进行调用solve(x1, y1, 2, ok); 来完成所求任务。 欲处理的初始问题为: 从某点(x1,y1)出发, 按所给行走

7、规则, 作 24 次移动, 遍访棋盘中没被访问过的各点(或发现无路可走)。 可分解化简为如下两个子问题(正是形成递归函数的基础): 由点(x1,y1)出发, 按所给行走规则作 1 次移动到达(g,h)(或发现无路可走); 从(g,h)点出发, 按所给行走规则, 作 23 次移动, 遍访棋盘中没被访问过的各点(或发现无路可走)。 solve 函数具体实现时, 若由(i,j)点出发已无路可走, 则将引用参数 ok 置为 false 而递归出口; 否则, 先迈一步 到达(g,h)点, 而后再进行递归调用: solve(g, h, k+1, ok); 以实现从新点(g,h)出发, 将 k+1 直到 2

8、5 这些棋子(数码) 分别摆放到棋盘上, 若成功则通过引用参数 ok 返回 true(否则返回 false)。 点评: (1) 也可编制第二种解法的主函数: 将棋盘上的 n 平方个点依次作为巡游起点的初始坐标位置(x1,y1), 判断从每一位置出发是否有解或无解(输出OK! 或NO!, 但并不输出路线图)。 (2) 若更改程序中的 n 值(如改为 4 或 6 等), 便可求解其他阶数的巡游路线图。 (3) 可改用非递归方法设计并编写 solve 函数, 那样的话, 通常要增加一个记录摆放棋子 信息的数组, 可记录下是沿着什么方向到达了当前的什么位置(在那儿摆放了棋子) 等, 而且对上述数组可按

9、照栈(stack) 的方式来使用(栈总是采用 FILO 即所谓的先进后出使用方式), 以便在无路可走 的情况下, 回退(回溯) 到上一个位置, 接着按照另外的方向去寻找其他的行走 方法。 7. 将输入的罗马数据化为 10 进制数。 假设罗马数据中只使用如下 7 个基值 字母: M、D、 C、 L、 X、 V、 I, 分别用来表示 1000、 500、 100、 50、 10、 5、 1。 如, 罗马数据LXXXVII 表示 10 进制的 87。 将输入的 10 进制正整数转换为罗马数据。 假设罗马数据中只使用基值 字母: M、D、 C、 L、 X、 V、 I, 分别用来表示 1000、 500

10、、 100、 50、 10、 5、 1。 8. 编程序, 循环进行如下的处理过程: 由计算机生成简单的四则运算题; 用户给出答案;计算机判断对错。 直到用户回答说不再继续做了时结束程序。 提示: 可让用户选择指定出加、 减、 乘、 除哪一种运算题, 以及出一位数还是两位数的运算题; 而后通过使用rand()%10 或rand()%100 来获得一个 0 到 9 的一位整数随机值或得到 0 到 99 的两位整数随机值来为用户出题。 还可进一步对用户所做算术题的对错次数进行记录, 结束程序时给出一个某种形式的成绩。 9. 编程序, 按如下要求来求解任意阶数满秩矩阵的逆矩阵。 (1) 矩阵行数(阶数

11、) n 之值由用户通过键盘输入; (2) 将欲求逆的原始矩阵 另加一个单位矩阵 存放在于数组 A 之中, 而 n 行 2n 列的 A 存储空间通过 new 来动态分配, 且原始矩阵 的各元素值也由用户通过键盘输入; (3) 利用行初等变换设法将 A 左半的原始矩阵 化为单位矩阵, 此时, 右半的原单位矩阵 则变成了欲求的结果逆矩阵。 提示: 将整个求解任务(总任务) 进行分解, 设计出多个各负其责的自定义函数以完成各子任务。 求取逆矩阵的主要工作是: 利用行初等变换(如将某一行的各数据乘以适当的倍数加到另一行的对应各元素上去), 设法将 A 左半的原始矩阵 化为单位矩阵(首先将左半 消为上三角

12、; 又将左半 主对角线消为 1; 最后将左半 消为单位矩阵), 此时,右半的原单位矩阵 则变成了欲求的逆矩阵。 10. 编写程序对八皇后问题进行求解: 在 8 行 8 列的棋盘上放置 8 个皇后, 使任一个皇后都不能吃掉其他的 7 个皇后(注: 皇后可吃掉与她处于同行或同列或同一对角线上的其他棋子), 并将结果以某种方式显示出来。 例如, 当求出下述的一个解时, 可输出如下信息来表示该解(输出了表示摆放皇后的坐标位置以及棋盘状态 棋盘中有皇后的位置放一个Q 字符, 其他位置为+ 字符)。 (1,1) (5,2) (8,3) (6,4) (3,5) (7,6) (2,7) (4,8) Q + +

13、 + + + + + + + + + + + Q + + + + + Q + + + + + + + + + + Q + Q + + + + + + + + + Q + + + + + + + + + Q + + + + Q + + + + + 提示: (1) 通过int LineNum9; bool a9, b15, c15; 说明具有全局作用域的 4 个数组。 其中的: LineNumi表示第 i 列的皇后要放的行位置(只用其中的列号 1 到 8); ai为 true(i =1, 2, , 8) 表示第 i 行上尚未放皇后; bi为 true(i =0, 1, 2, , 14) 表示第 i

14、 条斜对角线上尚未放皇后(斜对角线指的是/ 状对角线, 该对角线上各点的行列号之和 i+j 为一个常数); ci为 true(i=0, 1, 2, , 14) 表示第 i 条反斜对角线上尚未放皇后(反斜对角线指的是 状对角线, 该对角线上各点的行列号之差 i-j 为一个常数)。 从而当使用语句if ( aj bi+j-2 ci-j+7 ) LineNumi=j; 时, 可用于判断并实现: 如果在第 j 行的第 i 列上放置皇后安全的话, 则将一枚皇后放置到那儿。 (2) 编制一个具有如下原型的递归函数 solve, 它负责往第 i 列开始的连续 8-i+1 列上均放上皇后, 若成功则通过引用参

15、数 ok 返回 true(否则返回 false)。 void solve(int i, bool ok); 摆放皇后之后, 若 i=8 即已放满时则递归出口; 否则通过 solve(i+1,ok);进行递归调用。 (3) 编制主函数, 首先初始化一个空棋盘, 即将 a、 b、 c 数组的各元素均置为 true(表示当前棋盘的 8 个行、 15 条斜对角线以及 15 条反斜对角线上都尚未摆放皇后)。 而后执行调用语句solve(1, ok);, 它负责往第 1 列开始的连续 8 列上均放上皇后, 若成功则通过引用参数 ok 返回 true(否则返回 false)。 点评: (1) 可改用非递归方

16、法设计并编写 solve 函数, 那样的话, 通常要设置数组来记录皇后的摆放位置信息, 还要记录这些皇后所产生的影响面(所建立的势力范围) 使得哪些行列位置不可再摆放皇后。 当在新的行列位置摆放了皇后、 但此时又无法进一步摆放其他的皇后时, 要回退(回溯) 到上一个位置接着去考虑另外的行走 方法(若还有的话)等等。 但注意, 回退 一步后, 要同时撤销 由于该步的回退而关联的那些影响面(释放势力范围)。 (2) 本程序只是找到了某一种摆放方案 而终止, 还可进一步考虑寻找其他各种不同的摆放方案(实际上共有 92 种)。 (3) 也可用同样的方法去处理其他阶数 的皇后问题, 如求解四皇后问题等。 第4题:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1