第3次课 循环程序设计
全国“创新杯”计算机专业类说课大赛优秀作品:FOR循环程序设计说课-2022年学习资料
教学过程-知识引入一案例分析一布置任务一课堂总结一课后作业-同学们每天的生活都在-注意事项-重复,如果不结束,会-y=0-有什么后果?-for i 1 to 365-y=y*i-next-死循环!-程序永远无法结束-危险!-FOR循环语句-第17页
e>-教学过程-知识引入一案例分析一布置任务一课堂总结一课后作业-制作界面-√-编写代码-学生-计算国际象棋填麦子的-赏赐是否能实现?-调试程序交程序-FOR循环语句-第18页
e>-教学过程-知识引入一案例分析一布置任务一课堂总结一课后作业-老师活动-学生活动-表扬-讨论-组内评-提示-加分-交流-组间评-提醒-进行评价 FOR循环语句-第20页
e>-教学过程-知识引入一案例分析一布置任务一课堂总结一课后作业-总结教学内容以及重难点->指正学生在编程中存在的问题->总结for循环结构的注意 项->强调一定要避免死循环-FOR循环语句-第21页
e>-教学重、难,点-重点-掌握for循环语句的基本格式-难点-理解for循环语句的执行过程-FOR循环语句-第7页
教学方法-案例分析法-自主探究法-葵-送-任务驱动法-协作学习法-演示法-练习法-●-FOR循环语句-第8页
e>-教学过程-教学环节-课后作业-课堂总结-2分钟-布置任务-5分钟-为-案例分析-25分钟-知识引入-40分钟-课在-元成-8分钟-本词-天8 分-FOR循环语句-第9页
教学过程-知识引入一案例分析一布置任务一课堂总结一课后作业-分组讨论-国际象棋发明者的故事。一位智者发明了一种新棋-子,棋局上有64个空格。-国王 的十分高兴,就对-智者说,他需要什么,一定赏赐给他,这位智者说-他别无所求,只希望国王赏赐他一些麦子。麦子布-局如下:-第1格中放1粒麦子-第2格 放2粒麦子-第3格中放4粒麦子-赏赐能否实现?-FOR循环语句-第10页
C++程序设计 循环结构说课稿
C++程序设计循环结构说课稿1. 引言在C++程序设计中,循环结构是一种重要的控制结构。
通过循环结构,可以在代码中重复执行一系列语句,从而实现对数据的处理和操作。
本说课稿将介绍循环结构的基本概念、语法和常用的应用场景。
2. 循环结构的基本概念循环结构是一种用于重复执行特定任务的控制结构。
在C++中,常用的循环结构有`while`循环、`do-while`循环和`for`循环。
- `while`循环:先判断条件是否成立,如果成立,则执行循环体内的语句,然后再次判断条件是否成立,以此类推,直到条件不成立为止。
- `do-while`循环:先执行一次循环体内的语句,然后判断条件是否成立,如果成立,则继续执行循环体内的语句,以此类推,直到条件不成立为止。
- `for`循环:通过设置循环变量的初始值、循环条件和循环变量的更新方式,来控制循环的执行次数。
3. 循环结构的语法3.1 `while`循环的语法while(条件){// 循环体内的语句}其中,条件是一个逻辑表达式,如果条件为真,则执行循环体内的语句。
3.2 `do-while`循环的语法do{// 循环体内的语句}while(条件);其中,条件是一个逻辑表达式,如果条件为真,则继续执行循环体内的语句。
3.3 `for`循环的语法for(初始化; 条件; 更新){// 循环体内的语句}其中,初始化是一个表达式,用于初始化循环变量;条件是一个逻辑表达式,如果条件为真,则执行循环体内的语句;更新是一个表达式,用于更新循环变量的值。
4. 循环结构的应用场景循环结构在实际的程序设计中有广泛的应用场景,例如:- 遍历数组或:通过循环结构可以逐个访问数组或中的元素,进行数据处理或操作。
- 输入验证:可以使用循环结构不断要求用户输入,直到输入符合条件为止。
- 计数器:通过循环结构可以实现对某个事件或条件的计数,并在达到一定次数后执行相应的操作。
5. 总结循环结构是C++程序设计中必不可少的控制结构之一,通过循环结构可以重复执行特定的任务,实现对数据的处理和操作。
C语言课后实验设计题目及答案
设 total:桃子的总数
x1 :前一天的桃子数
x2 : 后一天的桃子数
day: 天数
计算公式:x1=(x2+1)*2 第1天的桃子数是第2天桃子数加1后的2倍。
(2)求1-1/2+1/3-1/4+⋯⋯,输入1个正整数n(n<=100),计算并输出1-1/2+1/3-1/4+⋯⋯的前n项和(保留3位小数)。
实验项目四 分支结构程序设计
题目
(1)输入四个整数,输出其中的最小值。
实验报告
1、主程序:
// zx.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
}
2、主程序:
// s.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
int main(int argc, char* argv[])
{
x=x*x*x*x;return(x);
}
int main(int argc, char* argv[])
{
float x;
printf("请输入X=");
scanf("%f",&x);
double s;
循环结构程序设计说课稿(正式)
循环结构程序设计说课稿,通过此篇说课稿,可以让你掌握说课稿的基本结构,把握说课稿的重难点!各位评委老师好,我是来自梓潼县第一高级职业中学,至今已工作十五年,主要从事计算机和电子专业的专业课教学我说课的题目是“循环结构程序设计” (板书),下面我从该课的设计理念,教材分析、教学对象、教学目标、教学重点难点、教学过程七个方面来说明本课,请各位专家多提珍贵意见。
一、教材分析《循环结构程序设计》是四川省教育科学研究所主编的高中信息技术教材下册第二章第七节的内容。
本节内容分2 课时。
学生刚刚学习了顺序结构程序及分支结构程序,对程序设计的理论与方法有一定的了解。
众所周知,无论多么复杂的程序都可以分解为顺序、选择、循环这三种基本结构,因此本节内容的学习效果将影响到今后编程编写的学习以及编程习惯和态度的培养。
根据教学大纲、教材内容的要求和教学对象的实际,确定以下教学目标及重难点1 、教学目标知识和技能(1)掌握计数循环语名格式和功能(2)掌握条件循环语名格式和功能(3)了解多重循环的结构。
(4)会画循环结构的流程图。
(5)学会用循环语句解决日常生活中实际问题过程和方法(1) 经历实践、分析、归纳,掌握循环语句的格式和功能。
情感态度与价值观(1)运用半成品加工策略,完善程序,发展学生思维的逻辑性,及严谨的学习态度。
2、重点、难点重点:掌握循环语句的格式和功能难点:提高学生运用循环语句解决实际问题的能力。
突出重点,突破难点的方法:通过投影,教师精讲,学生练习实践、合作探索、师生互动的方式。
三、学情分析对同学来说,还是刚刚接触程序设计,已学习了顺序程序设计和分支程序设计,学生对于程序设计的知识还是相对匮乏的。
因此,在学习设计的过程中,应弱化对于某一编程语言的学习,应更注重学生编程思想的培养。
在让学生实践的环节,让学生随着教学的不断深入,充分发挥自己的思维想象,让学生与教学的进度同步进行,最后能够较好的理解程序的基本结构这一思想,并能较为系统地了解算法分析的普通过程。
python小学课程设计
python 小学课程设计一、课程目标知识目标:1. 了解Python编程语言的基本概念,掌握基本的语法结构。
2. 学习使用Python进行简单的变量赋值、数据类型转换和运算符运用。
3. 理解并能运用基本的控制结构,如顺序结构、条件结构和循环结构。
技能目标:1. 能够使用Python编写简单的程序,解决实际问题。
2. 学会运用逻辑思维,分析问题,设计合理的程序解决方案。
3. 掌握使用Python编程环境,如IDLE,进行代码编写、调试和运行。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习主动性和探究精神。
2. 培养学生的团队协作意识,学会与他人共同解决问题。
3. 培养学生勇于尝试、不怕失败的精神,树立自信心。
课程性质:本课程为小学信息技术课程,旨在通过Python编程教学,培养学生的逻辑思维能力、问题解决能力和团队协作能力。
学生特点:小学生处于好奇心强、求知欲旺盛的阶段,对新鲜事物充满兴趣,但注意力容易分散,需要结合实际案例,激发学习兴趣。
教学要求:结合Python编程的趣味性和实用性,注重培养学生的动手实践能力,以任务驱动、案例教学为主,让学生在轻松愉快的氛围中掌握编程技能。
将课程目标分解为具体的学习成果,以便在教学过程中进行有效指导和评估。
1. Python编程环境介绍:安装与启动IDLE,熟悉编程界面。
2. 基本概念:变量、数据类型(整数、浮点数、字符串)、赋值语句。
3. 运算符:算术运算符、比较运算符、逻辑运算符。
4. 控制结构:- 顺序结构:编写简单的顺序执行程序。
- 条件结构:if语句及其嵌套,实现简单的选择结构。
- 循环结构:for循环和while循环,进行重复执行操作。
5. 程序设计实例:- 求和、平均值计算。
- 最大值和最小值查找。
- 简单的猜数字游戏。
6. 代码调试:学会使用print输出,进行程序调试。
教学安排和进度:第一课时:Python编程环境介绍,基本概念与变量赋值。
《Python程序设计》课件—03条件、循环语句、列表和函数
循环语句
while循环 while 表达式A: 循环语句块
在“while”循环中,当表达式A为真时(也就是布尔值True),则会一直执循 环语句块,当表达式A为假时(也就是布尔值Flase),则会不执行或者会跳出 while循环。需要注意,表达式A后面的冒号“:”不能省略,语句块A要注意缩进 的格式。
列表常ቤተ መጻሕፍቲ ባይዱ函数
len(列表名):返回列表中的元素个数,同样适用于元组、字典、集合、字 符串等。
max(列表名)、 min(列表名):返回列表中的最大或最小元素,同样适用于 元组、字典、集合和“range”对象等。
sum(列表名):对列表的元素进行求和运算,对非数值型列表运算需要指 定“start”参数,同样适用于元组、“range”。
列表常用方法
调用方式:对象.方法(参数)
列表常用方法
append( )方法 >>> num=[3,4,5,7] >>> num.append(10) >>> num [3, 4, 5, 7, 10] extend( )方法 >>> num=[3,4,5] >>> num.extend([7,8,9]) >>> num [3,4, 5, 7, 8, 9] insert( )方法 >>> num=[3,4,5,7,8,9] >>> num.insert(3,6) #在索引为3的位置插入元素6 >>> num [3,4,5,6, 7, 8, 9] pop( )方法 >>>num = list((3,5,7,9,11)) >>> num.pop() 11 >>> num [3, 5, 7, 9] >>> num.pop(1) >>> num [3, 7, 9] sort( )方法 >>> num=[3,4,9,10,8,5] >>> num.sort() >>> num [3, 4, 5, 8, 9, 10]
循环程序设计PPT课件
表达式? N
Y
后续语句
第23页/共59页
for语句 计算表达式1
表达式2? N
Y… continue;
… 计算表达式3
后续语句
[例]:用while语句求n项和
#include<stdio.h> main() {int i,sum=0; i=1; while(i<=100)
{sum=sum+i; i++; } printf("%d\n",sum); }
while 循环程序 #include<stdio.h>
do -while 循环程序 #include<stdio.h>
main()
main()
{int i,sum=0;
{int i,sum=0;
scanf("%d",&i);
scanf("%d",&i);
while(i<=10)
do
{sum=sum+i;
main()
main()
{ int x,sum=0; scanf("%d",&x);
{ int x,sum=0;
do
结果:sum=-2
while(x>=0) 结果:sum=8 { sum=sum+x;结果:sum=0
scanf("%d",&x);
{
结果:sum=-10
scanf("%d",&x);
sum=sum+x;
do—while循环体中一定要有能使表达式值 趋于0的操作(如i++),否则会出现死循环。
实验三 循环结构程序设计(答案)
实验教案}三、实验内容(按要求设计以下程序,并调试分析运行结果,此部分完成在实验报告上)1、设计程序sy3-1.c,要求打印小学九九乘法表。
算法分析:根据九九乘法表可知,该表共有9行,第i行有i个表达式,而且表达式中的操作数和行、列数相关,因此可以用嵌套的双重循环来实现,外循环控制行数(循环变量从1到9),内循环控制每行的表达式个数(循环变量从1变到i)。
参考答案:# include <stdio.h>void main(){int i,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%-5d",j,i,i*j);printf("\n");}}运行结果:2、设计程序sy3-2.c,要求编程计算x n,其中x和n均由键盘输入2。
算法分析:要计算x的n次方,即是n次x相乘,其中x可以是整型或实型,而n必须是整型;另外要考虑结果的类型,若x和n比较大,一般的int型容易产生溢出。
参考答案:# include <stdio.h>void main(){int i,n;float x,p=1; /*累乘器要赋初值1*/printf("Input x,n: ");scanf("%f,%d",&x,&n); /*以逗号分隔输入的已知数据x和n的值*/for(i=1;i<=n;i++)p=p*x;printf("%g^%d=%g\n",x,n,p);}运行结果:3、设计程序sy3-3.c,已知祖父年龄70岁,长孙20岁,次孙15岁,幼孙5岁,问要过多少年,三个孙子的年龄之和同祖父的年龄相等,试用单重循环结构编程实现。
4、设计程序sy3-4.c,有一数列:2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。
10.22_循环结构(嵌套_循环语句的程序设计)
为什么需要循环控制
在日常生活中或是在程序所处理的问题中 常常遇到需要重复处理的问题
要向计算机输入全班50个学生的成绩 教师检查30个学生的成绩是否及格
大多数的应用程序都会包含循环结构
循环结构和顺序结构、选择结构是结构化 程序设计的三种基本结构,它们是各种复 杂程序的基本构造单元
用break语句提前终止循环
#include <stdio.h> #define SUM 100000 int main() { float amount,aver,total; int i; for (i=1,total=0;i<=1000;i++) { printf("please enter amount:"); scanf("%f",&amount); total= total+amount; if (total>=SUM) break; } 实际捐款人数 aver=total / i ; printf(“num=%d\naver=%10.2f\n“,i,aver); return 0;}
语句 表达式 ;
Y
循环体语句 表达式 N
用do---while语句实现循环
例用 语句求: ,即
n
n 1
100
用do---while语句实现循环
解题思路:
Y N
i=1; sum=0; do { sum=sum+i; i++; }while(i<=100);
#include <stdio.h> int main() { int i=1,sum=0; do { sum=sum+i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; }
《第七课循环程序》作业设计方案-初中信息技术新世纪18八年级上册自编模拟
《循环程序》作业设计方案(第一课时)一、作业目标本次《循环程序》作业设计的主要目标是让学生掌握循环程序的基本概念和结构,理解循环程序在编程中的重要性,并能够通过实践操作加深对循环程序的理解和运用。
二、作业内容1. 理论知识学习:学生需认真阅读《循环程序》的教材内容,理解循环程序的基本概念、种类和结构,了解不同循环程序的使用场景。
2. 编程实践操作:学生需在计算机上编写一段简单的循环程序,并成功运行。
程序应至少包含三种不同的循环结构(如For 循环、While循环和Do-While循环),并在程序中实现一些基本的计算或逻辑判断功能。
3. 编程思想训练:通过本次编程实践,学生需深入理解循环思想,能够自主构思使用循环程序的场景和目的,能够使用不同的循环程序来解决实际问题。
4. 程序设计创意展示:鼓励学生在自己的程序中加入一些创意元素,如有趣的输出内容、图形绘制等,以增强程序的趣味性和实用性。
三、作业要求1. 完成时间:本次作业的完成时间为一星期,学生需在规定时间内完成所有任务。
2. 编程语言:学生需使用学校指定的编程语言进行编程,如Python、Java等。
3. 代码规范:学生需按照编程语言的规范编写代码,保证代码的可读性和可维护性。
4. 创意性:在完成基本任务的基础上,鼓励学生发挥创意,使程序设计更具趣味性和实用性。
5. 格式要求:学生在提交作业时需附上程序说明文档,详细阐述程序的设计思路、主要功能及实现方法。
同时,提交的代码需整洁有序,符合学校的格式要求。
四、作业评价1. 评价标准:作业的评价将根据学生的理论知识掌握程度、编程实践操作能力、程序设计创意和代码规范性等方面进行综合评价。
2. 评价方式:教师将对学生的作业进行仔细审阅和测试,对优秀作品进行表扬和展示,对存在问题的地方给出具体的指导和建议。
五、作业反馈1. 教师反馈:教师将对学生的作业进行详细的批改和点评,指出学生在理论知识掌握和编程实践操作中存在的问题,并给出具体的改进建议。
循环结构程序设计FOX
《循环结构程序设计FOX/NEXT 循环语句》说课稿一、教材分析QBASIC语言是国内外广泛使用的,易于学习和掌握的计算机高级语言,本课程是计算机专业的专业基础课,也是入门课。
我今天所要讲的内容《循环结构程序设计FOX/NEXT 循环语句》是选取职业高中课本《QBASIC程序设计》第三章《程序设计基础》第五节的循环结构程序设计。
这一章从增强学生的切身感受、激发学生兴趣入手,深入浅出地介绍程序设计的三大结构——顺序结构、分支结构和循环结构的基本知识,以及编程时所用语句的定义方法,通过QBASIC程序设计软件,让学生真正了解到程序设计的方法。
本节课是程序设计的第三个课时,在学习本节课之前,学生已经初步具备利用QBASIC语句编写顺序结构和分支结构的程序的能力,这节课可以说,是原有基础上的一个再提高,程序设计离不开设计思想,作为一名计算机老师,不仅要传授给学生计算机知识,更重要的是传授给学生程序设计思想、程序设计意识,因此本节课在教学中力图向学生传授程序设计的思想。
二、教学目标在教学过程中,充分发挥学生的主体作用,调动学生的学习积极性,有效地培养学生的分析问题、解决问题的能力,主要体现下面三个目标:1、知识目标:能过FOR/NEXT语句的学习,理解循环过程,能写出简单的循环程序。
2、能力目标:培养学生分析问题,解决问题的能力。
3、情感目标:激发学生学习热情,培养学生学习的积极性。
三、教学重点、难点、关键本着课程标准,在吃透教材的基础上,我确立了如下的教学重点、难点、关键重点:掌握FOR/NEXT循环语句的格式,并能运用它来编写程序。
难点:解决问题的思路和方法(算法),流程图制作,确定循环变量和循环体。
关键:会画流程图,能独立编写程序。
四、教学方法及教学手段1、教学方法QBASIC语言是一门理论与实践性都很强的学科,它要求教学不能仅仅满足于使学生掌握一些理论知识,而应着力于发展学生的能力(特别是自学和创新能力),培养学生全面思考问题,养成科学思维的习惯。
循环结构的程序实现—while语句教学设计
循环结构的程序实现—while语句教学设计新课教学如果循环的执行次数是未知的,可以使用while循环来编程解决该类问题。
●自主学习--while语句的格式及其使用(1)自主学习教师提供的微课--while语句的格式和的使用。
while循环的格式:while 条件:<循环体>while循环在执行时,首先会判断条件是否为真,如果条件为真,执行一次循环体,在此判断条件是否为真,如果仍威震,那么再执行一次循环体,以此类推,直到条件为假时推出while语句。
while语句的使用:地球到月球的距离是38.4万千米,一张A4纸的厚度大约是0.1毫米,将这张A4纸不停的对折,请问对折多少次,纸的厚度将到达月球?d = 38.4 * 10000 * 1000 * 100 * 10 # 地月距离h = 0.1 # A4纸的厚度c = 0 # 对折的次数while h <= d:c += 1h *= 2print(c)(2)while语句程序填空完成程序填空:程序从命令行输入一个大于1的整数,能够判断该数是否为素数。
根据素数的定义,素数除了1和它本身以外不再有其他因数。
所以判断n是否为素数,只要判断2到n-1是否存在n的因数即可。
分析该问题,只需要找到2到n-1中的第一个因数就能证明n是非素数,程序便可以输出结果,所以不需要把2到n-1的所有数字都进行检验。
但是,通过几次检验找到因数是不确定的,所以该问题适合用while语句编程解决。
在解决该问题时,可以先假设n是素数,然后依次检验2到n-1的数字,找到第一个因子,假设不成立,循环结束,程序输出结果;如果2到n-1没有一个数字是n的因子,假设没有被推翻,n是素数。
参考答案(划线处为填空):n = int(input("请输入一个大于1的整数:"))i = 2is_prime = Truewhile i <= n – 1 and is_prime:if n % i == 0:is_prime = Falsei += 1 通过自主学习教师提供的while语句的格式和使用的微课理解while循环的格式和使用,初步理解while循环的循环变量与条件控制。
《第七课循环程序》作业设计方案-初中信息技术新世纪18八年级上册自编模拟
《循环程序》作业设计方案(第一课时)一、作业目标本节课的作业设计旨在巩固学生对循环程序的理解,通过实践操作加深对循环结构及程序逻辑的认识,并培养学生自主探究、合作学习的能力。
通过本节作业的完成,期望学生能掌握基本的循环程序编写方法,并能应用于简单的编程实践中。
二、作业内容作业内容围绕《循环程序》课程的第一课时进行设计,具体如下:1. 理解循环结构的基本概念和常见的循环语句,如for循环、while循环等。
2. 通过编写一个简单的程序案例,使学生体验循环程序的执行过程,并理解其在实际编程中的应用。
3. 实践操作:选择一个生活中的实例(如计算连续的加法、计数等),利用循环语句编写程序实现该实例。
例如,编写一个计算1到100所有奇数和的Python程序。
4. 要求学生记录下编程过程中的难点及疑问,为下节课的课堂讨论做好准备。
三、作业要求1. 学生在完成作业时需认真阅读教材,理解循环结构的基本概念和原理。
2. 编程实践时,应确保程序的正确性和可读性,合理使用注释说明程序的功能和关键代码的作用。
3. 学生在编写程序时需注意代码的规范性和整洁性,避免出现语法错误和逻辑错误。
4. 记录下在编程过程中遇到的困难和疑问,并尝试自行解决或通过查阅资料、请教同学和老师等方式寻求帮助。
四、作业评价1. 评价标准:根据学生提交的作业内容、程序的正确性、可读性、规范性以及学生记录的疑问和困难解决情况进行评价。
2. 评价方式:教师通过查阅学生提交的作业,进行综合评价,并给出相应的成绩和反馈意见。
同时,鼓励学生在课堂上进行交流和讨论,互相评价和学习。
五、作业反馈1. 教师将对学生的作业进行批改,并给出详细的反馈意见和建议,帮助学生更好地理解和掌握循环程序的知识点。
2. 对于在编程过程中遇到困难的学生,教师将给予耐心的指导和帮助,鼓励其克服困难,提高编程能力。
3. 通过本次作业的完成情况,教师将了解学生对循环程序的理解程度和编程实践能力,为后续的教学提供参考依据。
《Python编程案例教程》课件 第3章 判断和循环语句
#输出乘法表达式
print("")
#输出空字符串,作用是为了换行
程序运行效果
循环语句
3.2.4 break和continue语句
循环语句
1.break语句
我们可以使用break语句跳出循环体,而去执行循环下面的语句。在循环结构中,break语句通常 与if语句一起使用,以便在满足条件时跳出循环。
例:计算满足条件的最大整数n,使得1+2+3+…+n<=10000。
#输出三角形面积
else:
#如不满足条件
print("输入的三条边不能构成三角形");
#输出提示信息
3.1.3 if-elif-else语句
编程时常常需要判定一系列的条件,一旦其中某一个条件为真就立刻停止。
if 判断条件1: 语句块1
elif 判断条件2: 语句块2
… elif 判断条件n:
语句块n else :
判断语句
if语句只允许在条件为真时指定要执行的语句,而if-else语句还可在条件为假时指定要执行的语句。
if 判断条件: 语句块1
else: 语句块2
例:编写程序,要求输入年龄,判断该学生是否成年〔大于等于18岁〕,如未成年,计算还需要 几年能够成年。
age = int(input("请输入学生的年龄:")) if age>=18:
S+=i i+=1 print("S=1+2+3+…+100=",S)
程序运行效果
#创立变量i,赋值为1 #创立变量S,赋值为0 #循环,当i>100时结束 #求和,将结果放入S中 #变量i加1 #输出S的值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3次课循环程序设计
一、案例
1、兔子问题
(1)问题的提出
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
(2)分析
第一个月 1对兔子
第二个月 1对兔子
第三个月这对兔子生一对小兔子,总数为2对兔子
第四个月再生一对兔子,总数为3对兔子
第五个月第一个月出生的兔子继续生一对兔子,第三个月出生的兔子开始生一对兔子,本月总数为3+1+1=5
依次类推第六个月兔子总数5+1+1+1=8
……
所以兔子的规律为数列1,1,2,3,5,8,13,21....
从数列中可以发现前两项的和等于第三项,这样每个月的兔子数就很容易知道。
(3)程序代码
void main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{ printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n");/*控制输出,每行四个*/
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
}
}
(4)思考
变量i既是循环控制变量,又控制每行数输出的个数。
循环中经常用到这种方法。
比如1+2+3+……+100这个例题中,变量i既控制循环次数又参与累计数。
只要数的值是同步变化的,都可以使用同一变量实现多种功能。
控制每行输出的个数,经常用到的方法就是用变量求余。
本程序中当i的值为1时,输出两个数,当i的值为2时,输出两个数,i模2等于0,换行。
这样就能实现一行输出
四个数。
如果要求每行输出6个数,该怎么写条件呢?
2、最大公约数和最小公倍数
(1)问题的提出
输入两个正整数m和n,求其最大公约数和最小公倍数
(2)分析
最大公约数和最小公倍数的概念,大家已经非常熟悉。
只要求到最大公约数,最小公倍数就能很快得到。
常用的求最大公约数的方法是分解质因数法和短除法。
分解质因数法,把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是这几个数的最大公约数.例如,求24和60的最大公约数.24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2,2和3,它们的积是2×2×3=12,所以(24,60)=12.
辗转相除法,m对n求余为a, 若a不等于0 则n赋值给m,a赋值给n, 继续求余否则n 为最大公约数。
循环条件就是。
当前求得的余数是否为0,若为0既退出循环。
(3)程序代码
#include <stdio.h>
void main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2)/*若num1小于num2,则交换两数,以确保num1是两数较大者*/
{ temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0) /*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}
(4)思考
辗转相除法是否合理,请读者自行验证。
3、求数列和
(1)问题的提出
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
(2)分析
求数列前20项之和,循环次数控制为20。
数列必须要遵循一定规律,才能写出循环体。
注意观察分子和分母,前一项的分子为后一项的分母,后一项的分母为前一项的分子和分母之和。
(3)程序代码
void main()
{
intn,t,number=20;
float a=2,b=1,s=0;
n=1;
do{
s=s+a/b;
t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/
n++;
}while(n<=number)
printf("sum is %9.6f\n",s);
}
(4)思考
本次程序中用s累和,a/b就是数列的每项,这里变量a和变量b定义为float类型,还能定义为别的类型吗?
一般累和的数列都有一定的规律,指出其中规律,就能用循环解决。
二、实验指导
1、求1+2!+3!+...+20!的和
(1)问题提出
求1+2!+3!+...+20!的和
(2)分析
循环从1的阶乘累加到20的阶乘,循环的次数为20。
阶乘的数较大,注意用long int 来定义变量。
用一个变量s来累和,temp累计阶乘,i是循环变量,循环执行第一次,temp 的值为1的阶乘,循环执行第二次,temp变为2的阶乘既temp=temp*i……这样循环体很容易写出。
请读者自行完成代码。
(3)测试
用指数形式输出结果为:2.56133e+18
2、猴子吃桃问题
(1)问题提出
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
(2)分析
第十天桃子数=第九天桃子数-(第九天桃子数/2+1)=第九天桃子数/2-1,所以第九天桃子数=(第十天桃子数+1)*2,依次类推,第八天桃子数=(第九天桃子数+1)*2……
这样循环就要执行九次,就能推出第一天桃子数了。
请读者自己完成代码。
(3)测试
输出结果为:桃子总数为1534
3、阅读填空
(1)问题提出:
下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数
#include <stdio.h>
void main()
{ inti,j;
for(i=0;①;i++)
{ j=i*10+6;
if( ② ) countinue;
printf("%d",j);
}
}
(2)分析
此程序输出的是变量j的值,则是对j进行判断,是否符合题目要求。
又看for循环里有语句j=i*10+6;这句就确保了j 的个位数为6,很显然第二个空应该是对j是否能被3整除进行判断。
for循环条件就是要确定循环执行多少次,题目要求是100以内的数,很快能推出变量i的范围。
请读者自行完成代码
4、百钱买百鸡
(1)问题提出:
一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少?
(2)分析
这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x ,y ,z ,问题化为三元一次方程组:
⎩
⎨⎧=++=++)(100)(1003/35百鸡百钱z y x z y x 这里x,y,z 为正整数,且z 是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z 的取值范围:
1) x 的取值范围为1~20
2) y 的取值范围为1~33
3) z 的取值范围为3~99,步长为3
对于这个问题我们可以用穷举的方法,遍历x,y,z 的所有可能组合,最后得到问题的解。
此程序即可写成三重循环又能写成二重循环。
对于二重循环,最外层是x 的循环,内层是y 的循环,z=100-x-y;条件就是能否用百钱买下x 只公鸡,y 只母鸡,z 只小鸡,并且判断z 是否是3的倍数。
请读者自行完成代码。
(3)测试
输出数据为:
(1)公鸡:4,母鸡18,小鸡78;
(2)公鸡:8,母鸡11,小鸡81;
(3)公鸡:12,母鸡4,小鸡84;
(4)思考
如何用三重循环完成次程序?比较三重循环和二重循环的优缺点。