第4章循环程序设计
Python程序设计 第4章 循环结构程序设计(第7次课)2

sum += score[i]
#循环体——对列表元素求和
aver = sum / 8.0 #循环之后,求平均值 print '\naver = ', aver
计算机编程导论
Copyright © SWFU-CISD, 2012. All rights reserved.
Copyright © SWFU-CISD, 2012. All rights reserved. 1-11
为 i 赋初值 1 False
判断 i <= 100? True
判断 i 是否能被 7 整除但不能被 5 整 除 ?
False
True 输出 i
i 自增 1
结束 图 4-10 整除问题的框图
计算机编程导论
1 1 2 1 2 3 1 2 3 4 1 2 n 1 2 3 3 5 3 5 7 3 5 7 9 3 5 (2n 1)
Copyright © SWFU-CISD, 2012. All rights reserved.
1-10
Copyright © SWFU-CISD, 2012. All rights reserved.
计算机编程导论
【例4-8】求1 ~ 100之间能被7整除,但不能同 时被5整除的所有整数 。
开始
【分析】 (1)本题需要对1 ~ 100 范围内的所有数一一进 行判断。 (2)本题的循环次数确 定是100次。 (3)在每次循环过程中 需要用 if 语句进行条件 判断。因此本题是循环 嵌套选择的结构。
1-19
利用for语句实现双层循环嵌套
循环的嵌套是指在一个循环中又包含另外一个 完整的循环,即循环体中又包含循环语句。 while循环和for循环可以相互嵌套。 循环嵌套的执行过程是:一次外循环对应着完 整的一轮内循环。
第4章 循环结构程序设计

#include <st50d0io5.0h>
#include <stdio.h>510510
void main()
void main()
{
{
int i, sum=0;
int i, sum=0;
scanf("%d", &i);
scanf("%d", &i);
while ( i<=100 )
do
w{hile语句——先判断表达式,后{执行语句
开始
i=1, sum=0 i=12001N
i<=100 Y
sum=sum+i
i=i+1 i=23101
输出sum
结束
循环: 反复执行同一段程序, 直到满足一定的条件后 才停止执行该段程序。
对于有规律的事物, 一般都可以用循环来组织。
2019年11月1日星期五
第4章 循环结构程序设计
主要内容 goto 和 if 语句构成循环 while 语句 do…while 语句 for 语句 辅助控制语句:continue,break
语句类型 表达式语句 空语句 控制语句 复合语句
实例 printf("sum=%d", sum=sum+i); ; if (sum==50) printf("i=%d",i); { sum=sum+i; i=i+1; }
2019年11月1日星期五
while 语句
while 语句的两个要素: while ( 循环条件 )
i++;
for (循环变量赋初值;循环条件;循环变量} 增值)
C语言程序设计(第3版)何钦铭-颜-晖-第4章-循环结构

第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?解答:如果对 item 赋初值 0,则程序运行结果是 pi=0,因为 item 为 0 时不满足 while 循环的执行条件,即不执行循环,故 pi 值为 0。
如果将精度改为10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得 while 循环次数减少,必然影响到π的值。
【练习 4-2】运行例 4-2 程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。
如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则 while 循环条件不成立,不执行循环体。
【练习 4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数 eps,计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps(保留6位小数)。
试编写相应程序。
解答:#include <stdio.h>#include <math.h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1.0;s = 0;while(fabs (item) >= eps) {item = flag * 1.0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习 4-4】如果将例 4-3 程序中的 do-while 语句改为下列 while 语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10;count ++;}解答:会有影响,因为当输入数据 number 为 0 时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。
第四章《程序设计基础》第4课时《运用循环结构描述问题求解过程教学设计粤教版高中信息技术必修1

-循环结构在实际编程中的应用场景。
-如何避免循环结构中的常见错误,如死循环、无限循环等。
- while循环和for循环在实际问题中的选择策略。
请同学们认真完成作业,通过实践提高自己的编程能力。在完成作业的过程中,如有疑问,可以随时向老师和小组成员请教。期待大家在信息技术学科上取得更好的成绩!
6.设想六:评价反馈,促进成长
教学结束后,教师对学生的学习情况进行评价,包括知识掌握、团队合作、创新能力等方面。评价应以鼓励为主,关注学生的个体差异,促进他们在信息技术学科上的持续成长。
四、教学内容与过程
(一)导入新课
1.教学活动:以一个简单的数学问题“计算1到100的累加和”作为引入,让学生思考如何利用已学的程序设计知识解决这个问题。
二、学情分析
在本章节的学习中,学生已经掌握了程序设计的基本概念、顺序结构以及选择结构,具备了初步的程序设计能力。在此基础上,他们对循环结构的学习将进入一个新的阶段。由于循环结构在算法中的广泛应用,学生需要在此阶段加强对循环概念的理解,以便能够熟练地运用循环结构解决实际问题。
考虑到学生的认知水平,他们对循环结构的理解可能还存在一定的困难。部分学生对循环变量的设置、循环条件的判断以及循环体的编写可能感到困惑。因此,在教学过程中,教师应关注这些难点,通过生动的案例和形象的解释帮助学生克服困难。
2.教师示范:通过案例演示,展示如何使用while循环和for循环解决实际问题,如计算1到100的累加和。
3.知识拓展:介绍循环结构的其他应用场景,如遍历数组、实现排序算法等。
(三)学生小组讨论
1.教学活动:将学生分成小组,每组讨论以下问题:
- while循环和for循环有哪些区别和联系?
《C语言程序设计课件》第四章-循环语句

{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
项目04 循环结构程序设计

while语句和do„while语句。本章是程序设计的重点内容,
重点培养读者的逻辑思维能力和程序编写基本能力。要求读 者能理解循环结构的工作过程,并且能用循环语句解决
项目四
循环结构程序设计
实际问题,提高编程能力。
【学习目标】
(1) 掌握for语句、while语句和do„while语句的使用。 (2) 掌握break语句和continue语句的使用。 (3) 能够利用循环语句解决实际问题。
所有商品的总价格;收银员每扫描一次,也就是把该商品的
价格输入给x,然后把x的值转移加入到s盒子里,重复操作, 直到收银员按回车键,在这里用“0”代表回车;最后输出s 盒子中的值,就可得到所有商品的总价格。
第一部分
任 务 学 习
【解决方案】
#include<stdio.h> void main() { float x,s=0;
注:从上面的说明可以看出,C语言的for语句功能强大,
使用灵活,可以把循环体和一些与循环控制无关的操作也都 作为表达式出现,程序短小简洁。但是,如果过分使用
(3) 循环。这样的语句一直重复写到h满足题目要求为
止。 程序代码如下:
第一部分
任 务 学 习
#include<stdio.h> void main() { double h=0.1; int n=0; /*n用来累计对折次数*/ while(h<=8848180) { h=h*2;
n=n+1;
} printf("对折次数为:%d,此时厚度:%.2f\n",n-1,h/2);
第一部分
一、while语句 二、for语句
任 务 学 习
第四章 循环结构程序设计
while(i<=100)
{ i++;
程序运行结果: sum=5050
sum=sum+i;
}
6
4.3 do-while语句
do-while语句的结构 do 语句 while(表达式);
例如: do
x-=1; while(x>0);
功能:
1)执行“语句”。 2)计算“表达式”的值。如果值为非0,转1);否则转3)。
}
8
4.3 do-while语句
1)循环体如果包含一个以上的语句,要用复合语句表示。 2)在循环体中应有使循环趋于结束的语句。 3)while语句的特点是先执行循环体,然后判断表达式的值。 4)一般情况下,用while语句和用do-while语句处理同一 个问题时,若二者的循环体部分一样,其结果也一样。但如
18
4.7 goto语句以及用goto语句构成循环结构
goto语句的一般格式:
goto 语句标号;
例如: goto loop;
功能:程序执行到goto语句时,将程序流程转到语句标号指定的 语句去执行。
有标号的语句的格式:
语句标号: 语句
例如: loop: sum=sum+i;
19
4.7 goto语句以及用goto语句构成循环结构
【例4-9】用goto语句实现求1~100累加和。
#include <stdio.h>
main() { int n=1, sum=0; loop: sum += n; n++;
if(n<=100) goto loop;
printf("sum=%d\n",sum); }
C语言循环结构程序设计PPT课件
知识点精讲
printf(″%d\n″,fun(″056a0″)); } 【解析】 while循环是先判断条件,如果条件成立就执行语句,然后回到条件继续判断,直 到条件不成立就结束循环。while后的表达式为“*s<=′9′&&*s>=′0′”,当表达式的值为0时 循环结束,可以看出这道题就是把连续的数字字符转换成对应的数值,遇到非数字字符就结束, 所以最后的输出结果是56。 【答案】 56
知识点ቤተ መጻሕፍቲ ባይዱ讲
L7 i++; L8 } L9 printf("%f",s); L10 }
答案:第6行改成:{ s=s+1.0/i; //若不使用1.0/i,那么会把小数部分丢掉//
4.下列程序的运行结果是______2_,_-_1_____ #include "stdio.h" main) {int i=2,a=0; while ( i一) a++; printf ("% d,%d",a,i); }
第四章 循环结构程序设计
考纲要求
结构化程序的设计方法,for语句、while语句编程方法。
知识准备
高频考点:当型循环与直到型循环、循环控制变量、利用循环设计算法。 重难点分析:利用循环设计算法。
知识点精讲
知识点1 while循环
真题回顾 (2019年真题)下列程序的运行结果是___________ #include″stdio.h″ int fun(char s[]){ int n=0; while(*s<=′9′&&*s>=′0′) { n=10*n+*s-′0′; s++; } return n; } main(){
Python程序设计 第4章 循环结构程序设计(第6次课)
Copyright © SWFU-CISD, 2012. All rights reserved. 1-8
计算机编程导论
4.2 循环结构概述
(3)给定2个整数,求它们的最大公约数和最小 公倍数。例如:给定6和9,求最大公约数时, 循环过程从6依次பைடு நூலகம்减至1,当循环到3时,判 断得6和9都能被3整除,于是终止循环,求得 最大公约数是3.;求最小公倍数时,循环过程 从9依次递增至54,当循环到18时,判断得18 同时能被6和9整除,于是终止循环,求得最小 公倍数是18。
练习: 1. 求1+3+5+…+99 2. 求2*4*6*…*12
Copyright © SWFU-CISD, 2012. All rights reserved.
1-21
计算机编程导论
第6次上机作业: 1.计算,参考值: S=1.718282 1 1 1 S 1 1*2 1*2*3 1*2*3*50 2.编程求斐波拉契数列的前20项,已知该数列 的第一、二项分别是0、1,从第三项开始,每 一项都是前两项之和。例如:0, 1, 1, 2, 3, 5, 8, 13……
Copyright © SWFU-CISD, 2012. All rights reserved. 1-12
输出 s 结束 图 4-3 累加若干整数值的框图
计算机编程导论
程序:
#Exp4_1.py print '请输入若干正整数进行求和操作,当输入负数时结束: ' s=0 x = input("请输入一个整数: ") while x >= 0: s=s+x x = input("请输入一个整数: ") print '整数之和=', s
C语言程序设计习题集第4章 循环结构(答案)
第4章循环结构一、选择题1、有以下程序段int k=0;while(k=1)k++;while 循环执行的次数是( A)A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次2、t为int类型,进入下面的循环之前,t的值为0while( t=1){ …… }则以下叙述中正确的是( B)A) 循环控制表达式的值为0B) 循环控制表达式的值为1C) 循环控制表达式不合法D) 以上说法都不对3、在C程序中,与while(m)中表达式m完全等价的是(B )A) m==0 B) m!=0 C) m==1 D) m!=14、有以下程序,程序运行后的输出结果是(C )。
main(){int i=1,sum=0;while(i<=4){sum=sum+i;i=i+1;}printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环5、有以下程序,程序运行后的输出结果是(D )。
main(){ int i=1,sum=0;while(i<=4)sum=sum+i;i=i+1;printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环6、有如下程序main(){int n=9;while(n>6){n--;printf(“%d”,n);}}该程序段的输出结果是(B)A) 987 B) 876 C) 8765 D) 98767、以下程序的输出结果是( B )main(){ int num= 0;while(num<=2){ num++; printf(“%d\n”,num);}}A) 1 B) 1 C)1 D) l2 2 23 348、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。
main(){float x,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1.0){x=y;y=z;z=x/y;}elsebreak;}printf(“%f\n”,y);}A)1.500000 B)1.600000 C)2.000000 D)2.4000009、执行以下程序段时x=-1;do{ x=x*x; }while(! x);则下面描述正确的是(A )A) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 系统将提示有语法错误10、有以下程序段其输出结果是(C )int x=3;do{ printf("%d",x-=2); }while (!(--x));A) 1 B) 3 0 C) 1 -2D) 死循环11、有如下程序main(){int x=23;do{printf(“%d”,x);x--;}while(!x);}该程序的执行结果是(B )A) 321 B) 23 C) 不输出任何内容D) 陷入死循环12、有以下程序段int n=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);此处do—while循环的结束条件是( D)A) P的值不等于12345并且n的值小于3B) P的值等于12345并且n的值大于等于3C) P的值不等于12345或者n的值小于3D) P的值等于12345或者n的值大于等于313、以下不构成无限循环的语句或语句组是(A)A) n=0;do {++n;}while(n<0);B) n=0;while(1){n++;}C) n=10;while(n);{n--;}D) for(n=0,i=1; ;i++)n+=i;14、若i为整型变量,则以下循环执行的次数是(B)for(i=2;i= =0;) printf(“%d”,i--);A)无限次B)0次C)1次D)2次15、执行语句for(i=1;i++<4;)后,变量i的值是(C)A) 3 B) 4 C) 5 D) 不定16、有以下程序main(){int y=9 ;for( ; y>0 ; y--)if(y%3==0 ) printf("%d" , --y) ;}程序的运行结果是(C)A) 741 B)963 C)852 D)87542117、以下程序执行后sum的值是( C)A)15 B)14 C) 不确定D)0main(){ int i , sum;for(i=1;i<6;i++) sum+=i;printf(“%d\n”,sum);}18、有如下程序{ int i,sum=0;for(i=1;i<=3;sum++) sum+=i;printf(“%d\n”,sum);}该程序的执行结果是(C)A) 6 B) 3 C) 死循环D) 019、执行语句for(i=3;i>0;i--);i--;后,变量i的值是(C )A)0 B)10 C)-1 D)120、执行下面程序片段的结果是(A )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ while语句和for语句都是先判断循环条件再决 定是否执行循环体,可能一次循环也不执行。
▪ do_ while语句则是先执行循环体再判断循环 条件,至少执行循环体一次。
▪ break和continue是循环的辅助语句, continue 只能用于循环语句。
▪ while、do_while、for可以相互嵌套,自由组 合。
例4-6:打印九九乘法表。
main( )
{ int i, j;
for(i=1; i<10; i++)
printf ( "%8d", i );
printf (" \n---------------------------------" );
}
说明: ▪ 当求累加值时,存放累加值的变量sum的初
值应该为0。 ▪ for括号中用两个分号分隔的三个表达式:
“表达式1”只在循环开始时执行一次;“表 达式2”是循环条件,在每一轮循环开始前进 行计算,如果结果为真则执行循环体,否则 退出for循环;“表达式3”用于循环变量的更 新。 ▪ 可以省略for语句括号中的一个或几个表达式, 但不能省略分号。
for语句的执行过程
表达式1
表达式2 真(非0)
语句序列
假(0)
表达式3
例4-4:从键盘上输入10个整数,求其和。
main( ) {
int i, num, sum; sum = 0; for(i=1; i<=10; i++) { scanf("%d", &num ); sum = sum + num; } printf("这10个整数的和为:%d", sum ); getch( );
圆柱体。 ▪ continue语句
continue语句的作用是:流程跳过循环体中该语句后的所有 语句,提前结束本轮循环,直接进入下一轮循环。 ▪ continue语句与break语句的区别是:前者只是结束本次循环, 而不是结束整个循环;后者则是结束整个循环。 例4-8:输出50到100之间所有不能被7整除的数。
1
真
2
真
3
真
4
真
5
真
6 假(结束循环)
4。2 do_ while循环
▪ do_while语句是称为“直到”型的循环结构, 是另一种形式的循环。
▪ 它的一般形式是: do { 语句序列 } while ( 表达式 );
do_while语句的执行过程
语句序列
真(非0)
表达式 假(0)
例4-2:比较do while语句和while语句:
main( )
{ int sum, i;
sum = 0;
/* 累加器sum置0 */
i = 1;
/* 循环变量i赋初值1 */
while ( i <= 5 )
{ sum = sum + i; /* 将i值累加到sum中 */
i = i +1;
/* 改变循环变量i的值 */
}
printf("1+2+3+4+5 = %d", sum );
{ putchar(ch); ch=getchar( );
} getch( ); } 运行结果: *AB*↙ 无输出
例4-3
▪ 输入一个整数,按相反次序输出。例如,输 入54321,输出12345。
4。3 for循环
▪ for语句的一般形式是: for(表达式1;表达式2;表达式3) { 语句序列 }
4。6 循环结构应用实例
▪ 例4-9:判断一个数是否为素数。 ▪ 例4-10:找出100到200之间所有的素数。 ▪ 例4-11:输入两个整数,求它们的最大公约
数。方法是,采用“碾转相除法”,即反复 模除取余,直到余数为0。
本章小结
▪ 用于实现循环结构的语句有:while语句、 do_while语句、for语句。
#include < stdio . h> main( ) { char ch ; ch=getchar() ;
do { putchar(ch) ;
ch=getchar( ) ; } while(ch!='*');
getch( ); } 运行结果 *AB* ↙ *AB
#include < stdio . h > main( ) { char ch ; ch=getchar() ; while(ch!='*')
第4章 循环程序设计
4.1 while循环 4.2 do_ while循环 4.3 for循环 4.4 多重循环 4.5 break语句和continue语句 4.6 循环结构应用实例 本章小结
4。1 while循环
▪ while语句是一种称为“当型”的循环。 ▪ 它的一般形式是:
while(表达式) {
/* 换行 */
} getch ( ); }
格式符“%8d”的作用是使输出的 每个数据占8个字符位置,右对齐; “%-3d”表示占3列,左对齐。
4。5 break语句和continue语句
▪ break break语句也可以用于循环结构中,使程序提前跳出循环,结
束循环,转移到循环后面的语句。 例4-7:求不同半径的圆柱体的体积,只计算体积在100以下的
printf ("-----------------------------------\n" );
for ( i = 1; i < 10; i++ )
{ for ( j = 1; j <= i; j++ )
printf ( " %2d * %d = % -3d ", i, j , i*j );
printf ( " \n " );
语句序列; }
while语句它的执行过程
表达式 真(非0)
语句序列
假(0)
注意:
▪ 循环必须在有限的次数内结束,否则会出现 “死循环பைடு நூலகம்,在程序中应避免出现死循环。
▪ hile循环执行的特点是先判断条件,后执行循 环体,因此,循环次数可能为0。
例4-1: 编程求1+2+3+4+5之和。
#include <stdio.h>
例4-5:从键盘上输入若干个整数,直到输入0
为止,求它们的乘积。
▪ for语句一般用于循环次数比较明确的情形,而 while或do_while语句则用于循环次数难以判定 的情形。
main( )
{
int n; long t = 1; scanf("%d", &n );
/* 累乘初值为1 */ /* 输入第一个整数 */
getch( );
}
运行结果:
1+2+3+4+5 =15
执行过程如表4-1所示。
变量名
sum
初始状态 0 第1轮循环后 0+1=1 第2轮循环后 0+1+2=3 第3轮循环后 0+1+2+3=6 第4轮循环后 0+1+2+3+4=10 第5轮循环后 0+1+2+3+4 +5 = 15
i
循环条件
( i<=5 )
while ( n != 0 )
{ t= t * n; scanf("%d", &n ); } printf("%ld \n", t );
/* 输入下一个整数 */ /* 输出长整型数据 */
运行时, 输入:5 4 7
0↙ 则输出:140
getch( );
}
4。4 多重循环
▪ 一个循环的循环体中又包含另一个循环, 称为循环嵌套。这个嵌套重复下去,就是多 重循环,也称为嵌套循环。