C语言程序设计模三循环程序设计训练
知识点 goto语句语法格式: goto 语句标号; 语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号。 语句标号起标识语句的作用,与goto语句配合使用。执行goto语句后,程序将跳转到该标号处并执行其后的语句。 标号必须与goto语句同处于一个函数中,但可以不在一个循环体中。 goto语句用途有两种: 与if语句一起构成循环; 从循环体内跳到循环体外。 不提倡使用goto语句 边学边练 判断m是否为“素数”。 求100-200间的全部素数,并统计素数个数。 百钱百鸡问题。 拓展提升 3.6 goto语句综述 历史背景 有关goto语句的争论 有关goto语句的公正的评述 可以使用goto语句的情形 从多重循环中直接跳出 出错时清除资源 当型循环,迭代部分在循环体中 while语句 do- while语句 直到型循环,迭代部分在循环体中 for语句 当型循环,两分号不能省略 循环 语句 总结归纳 模块三 循环程序设计训练 能力目标 掌握循环结构的构成及特点; 掌握循环控制变量的使用; 熟练掌握三种基本的循环控制语句; 熟练掌握一重循环的构建方法,学会构建二重循环; 了解goto语句构成的循环; 知识准备 任务引例----计算1+2+...+100。 算法设计 把每一个加数看成要投入的硬币数,第一次投了1枚硬币,第二次投了2枚硬币,…,第100次投了100枚硬币。定义一个变量s用来存放累加和,相当于存放硬币的容器,变量i代表加数(也可以看成累加次数),相当于投放的硬币数,见图3-1。 s = s + i; /* 投入i 枚硬币到s中*/ i = i + 1; /* 计算下次投币数 */ 图3-1 算法设计示意图 #include void main( ){ int s=0;//s用来存放累加和,初始值为0 int i=1;//i用来存放累加次数,初值为1表示第一次相加 while(i<=100){ s=s+i;//把数i累加到s中 i++;//累加次数增1,i也是累加数 } printf(“s=%d\n”,s); } 输出结果 s=5050 程序清单 3.1 while语句 用while语句实现的循环,其结构是当型循环结构,即先判断后执行循环体的循环结构,流程图如下图所示。 做中学3-1 从键盘输入n(n≥0)的值,计算并输出n!。 算法设计 程序中需要定义一个变量f用来存放连乘积,连乘积变量的初值通常被置成1,还需要定义一个变量i用来提供1~ n个乘数。需要做的就是将这n个乘数循环乘入连乘积中。 循环控制变量为i,初值是1; 初始化部分:i=1; 判断部分:i<=n; 循环体部分:f=f*i; 迭代部分:i++; 算法见右图。 结束 #include void main( ){ int i=1,n;//初始化部分 double f=1; printf("请输入变量n的值:\n"); scanf("%d",&n); while(i<=n) { //判断部分 f=f*i;//循环体部分 i++;//迭代部分 } printf("%d!=%le",n,f); } 程 序 清 单 程序运行 请输入变量n的值: 30 30!=2.652529e+032 知识点 while语句语法格式: while(表达式) 语句 其中,“语句”表示while循环结构中不断被重复执行的语句行,称为循环体。若循环体内有多条语句,则用花括弧引起来。 while循环结构的功能: 只要循环条件表达式成立(条件表达式为真),则执行循环体,直到表达式不成立(表达式为假)时结束循环。循环体可以为空语句、简单语句或复合语句。 注 意 while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)就继续循环(执行循环体中的语句); 循环体中应该有使循环趋于结束的语句,否则出现死循环; while语句的循环体允许嵌套while结构,也可以允许多层循环嵌套; while结构中,判断部分若一开始条件就不成立,循环体一次都不执行。 3.2 do-while语句 用do-while语句实现的循环,其结构是直到型循环结构。它的特点是先执行循环体,再判断循环条件是否成立,流程图如下图所示。 做中学3-2 用do-while语句计算1~100的和。 算法设计 程序中需要定义一个变量total用来存放累加和,累加和变量的初值通常被置成0,还需要定义一个