信息学奥赛NOIP第4单元循环结构程序的设计说明.pptVIP

  • 4
  • 0
  • 约1.2万字
  • 约 70页
  • 2019-08-03 发布于安徽
  • 举报

信息学奥赛NOIP第4单元循环结构程序的设计说明.ppt

第 6 课 程序的调试与跟踪 学习目标 熟练掌握程序的调试与跟踪。 程序的调试与跟踪 在编写程序的过程中,错误是在所难免的。一般来说,程序代码越长、算法和数据结构越复杂,出错的概率越高。因此,调试就成了极其重要的一个环节。学会程序的调试与跟踪,可以快速、准确地发现并改正错误。 1. 静态查错 程序写好后,首先要从头至尾通读程序,检查是否存在下面几个问题:语句的顺序、思路、逻辑是否有误;语法是否有误,如关键字是否录入错误、变量是否没有定义就使用、变量的大小写问题、用错标点符号等。其它错误如下: (1) 变量未赋初值 (2) 中间运算结果越界 (3) if-else 语句混乱 (4) 实数比较出错 2. 通过添加输出语句调试程序 //p4-6-1 #includeiostream using namespace std; int main(){ int x; cin x; for(int i = 2; i x; i++){ if(x % i == 0) { cout x “ “ i endl; // 用于查看 x 和 i 的值 cout “ not “ ; break; } } cout “ prime ” endl; return 0; } 3. 借助 IDE 的调试工具实施单步跟踪 通过“单步执行”观察跟踪某个变量的值的变化。 实践巩固 第 7 课 循环结构应用举例 学习目标 1. 总结与反思建立循环结构的知识体系。 2. 实践巩固,熟练应用循环结构解决一些实际问题。 例1、金币问题 具体问题见教材128页。 【问题分析】 设共有 N 天,当前为第 i 天,则当 i ≤ N 时,可以统计之后连续 K 天所得的金币,在统计过程中,如果 iN,则退出统计。 参考程序见教材129页。 例2、比例简化 具体问题见教材129页。 【问题分析】 由于 L≤100,可以穷举 A′和 B′,然后判断 A′和 B′是否互质。如果互质,那么判断“A′/B′-A / B”的值是否更小,如果满足,则更新最小值 mindiff 和答案 resa 和 resb。 参考程序见教材130页。 实践巩固 知识回顾Knowledge Review 例1、用 for 语句实现:输出一行 10 个“@”。 //p4-3-1a #includecstdio using namespace std; int main(){ for(int i = 1; i = 10; i++) printf( “ @ ” ); printf( “ \n ” ); return 0; } for 语句写法灵活,上述程序也可以写成: //p4-3-1b #includecstdio using namespace std; int main(){ int i = 1; for(; i = 10; i++) printf( “ @ ” ); printf( “ \n ” ); return 0; } 还可以写成: //p4-3-1c #includecstdio using namespace std; int main(){ int i = 1; for(; i = 10; ){ printf( “ @\n ” ); i++; } printf( “ @\n ” ); return 0; } 例2、斐波那契数列 【问题描述】 斐波那契数列是指这样的数列:第一个数和第二个数都为 1,接下来每个数都等于前面两个数之和。编程输入一个正整数 k,输出斐波那契数列第 k 个数。 【输入格式】 一行一个正整数 k,1≤k≤46。 【输出格式】 一行一个正整数,表示斐波那契数列第 k 个数的大小。 【样例输入】 19 【样例输出】 4181 【问题分析】 //p4-3-2 #includeiostream using namespace std; int main(){ int k; cin k; int k1 = 1,k2 = 1,k3 = 1; for(int i = 3; i = k; i++){ k3 = k1 + k2; k1 = k2; // 迭代法 k2 = k3; } cout k3

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档