算法竞赛入门经典授课教案第2章循环结构程序设计精心排版并扩充部分内容.docVIP

  • 6
  • 0
  • 约2.98万字
  • 约 49页
  • 2018-12-25 发布于重庆
  • 举报

算法竞赛入门经典授课教案第2章循环结构程序设计精心排版并扩充部分内容.doc

算法竞赛入门经典授课教案第2章循环结构程序设计精心排版并扩充部分内容

第2章 循环结构程序设计 【教学内容相关章节】 2.1 for循环 2.2 循环结构程序设计 2.3文件操作 2.4 小结与习题 【教学目标】 (1)掌握for循环的使用方法; (2)掌握while循环的使用方法; (3)学会使用计算器和累加器; (4)学会用输出中间结果的方法调试; (5)学会用计时函数测试程序效率; (6)学会用重定向的方式读写文件; (7)学会fopen的方式读写文件; (8)了解算法竞赛对文件读写方式和命名的严格性; (9)记住变量在赋值之前的值是不确定的; (10)学会使用条件编译指示构建本地运行环境。 【教学要求】 掌握for循环的使用方法;掌握while循环的使用方法;掌握几个常用的文件操作库函数fopen、fclose、fprintf、fscanf等。 【教学内容提要】 在有些程序中,需要反复执行某些语句。将n条相同的语句简单地复制会使程序变得不合理的冗长,因此高级语言中提供了支持程序重复执行某一段程序的循环控制语句。相关的语句有:for、while、do while、break、continue等。 既可以从文件中读取数据, 也可以向文件中写入数据。读写文件之前,首先要打开文件。读写文件结束后,要关闭文件。C/C++提供了一系列库函数,声明于stdio.h中,用于进行文件操作。这里介绍其中几个常用的文件操作库函数fopen、fclose、fprintf、fscanf等。 【教学重点、难点】 教学重点: (1)掌握for循环的使用方法; (2)掌握while循环的使用方法; (3)掌握文件有关操作; (4)条件编译。 教学难点: (1)掌握for循环的使用方法; (2)掌握while循环的使用方法; 【课时安排(共2学时)】 2.1 for循环 2.2 循环结构程序设计 2.3 文件操作 2.4 小结与习题 2.1 for循环 请用for循环实现输入正整数n,打印1,2,3,…,10,每个占用一行。程序如下: 程序2-1 输出1,2,3,…,n的值 #include stdio.h int main(){ int i, n; scanf(%d, n); for(i = 1; i = n; i++) printf(%d\n, i); return 0; } 提示2-1:for循环的格式:for(初始化;条件;调整) 循环体; 提示2-2:尽管for循环反复执行相同的语句,但这些语句每次的执行效果往往不同。 提示2-3:编写程序时,要特别留意“当前行”的跳转和变量的改变。 有了for循环,可以解决一些简单的问题。 例2-1 aabb。 输出所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字也相等,且为某数平方)。 【分析】 分支和循环结合在一起时威力特别强大:可以枚举所有可能的aabb,然后判断它们是否是完全平方数。注意,a的范围是1~9,但b可以是0。主程序如下: for(a = 1; a = 9; a++) for(b = 0; b = 9; b++) if(aabb是完全平方数) printf(%d\n, aabb); 注意:(1)上面不是真正的程序,把这样的代码称为伪代码(psedocode)。 (2)上面用到了循环的嵌套:for循环的循环体自身又是一个循环。 提示2-4:不拘一格的使用伪代码来思考和描述算法是一种值得推荐的做法。 提示2-5:把伪代码改写成代码时,一般先选择较为容易的任务来完成。 程序2-2 7744问题(1) #include stdio.h #include math.h int main(){ int a, b, n; double m; for(a = 1; a = 9; a++) { for(b = 0; b = 9; b++) { n = a*1100 + b*11; m = sqrt(n); if(floor(m+0.5) == m) printf(%d\n, n); } } return 0; } 说明:函数floor(x)返回x的整数部分,使用floor(m+0.5)==m的原因是浮点数的运算(和函数)有可能存在误差。 提示2-6:浮点运算可能存在误差。在进行浮点数比较时,应考虑到浮点误差。 对于四位完全平方数的还有另一个思路就是枚举平方根x,从而避免开平方操作。补充: (1)向下取整函数:double floor(double x); 使用floor函数。floor(x)返回的是小于或等于x的最大整数。 如: floor(2.5) == 2 ??? flo

文档评论(0)

1亿VIP精品文档

相关文档