第5章 循环结构程序设计
C语言 第五章-循环结构程序设计
执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
第5章 循环结构程序设计
do-while语句的简单应用 do-while语句的简单应用
【例5.3】用辗转相除法求m和n的最大公约数 5.3】用辗转相除法求m
定义m、 、 定义 、n、r m<n T F m和n交换 和 交换 r=m%n m=n n=r 当r != 0时 时 输出最大公约数m 输出最: 算法和程序:
main( ) { int m,n,r; scanf("%d, %d",&m,&n); if (m<n) { r=m; m=n; n=r; } do { r=m%n; 程序运行情况如下: 程序运行情况如下: m=n; 24, 60 24, n=r; 12 }while(r!=0); while(r!=0 printf("%d\n",m); }
for语句的算法 for语句的算法
流程图 计算表达式1 计算表达式
表达式2 表达式 为真? 为真
15
N-S结构图 结构图 for (表达式 表达式 表达式 表达式1;表达式 表达式3) 表达式 表达式2;表达式 N 语句
Y 语句 计算表达式3 计算表达式
例如: 例如: 可部分或全部省略, 可部分或全部省略, main( ) 但“;”不可省略 { int i,sum; sum=0; for ( i=1; i<=100; i++) i=1 i<=100; sum=sum+i; sum=sum+i; printf("sum=%d\n",sum); }
龙诚数码:
18
for语句的简单应用 for语句的简单应用
【例5.4】求n! ,即计算p=1×2×3×…×n 5.4】 即计算p=1× 的值。 的值。
第五章 循环结构程序设计
第五章循环结构程序设计循环结构是结构化程序设计的三种基本结构之一,也是最重要、最常用的一种基本结构。
其特点是:在给定条件成立时,反复执行某程序段,直到给定条件不成立时为止。
给定的条件称为循环条件,反复执行的程序段称为循环体。
根据开始或结束循环的条件不同,在C 语言中可以用如下语句实现循环:1. 用goto语句和if语句构成循环。
2. 用while循环语句。
3. 用do-while循环语句。
4. 用for循环语句。
5.1 语句标号、goto语句及用goto语句构成的循环1.语句标号语句标号就是给程序中的某一个语句定义的标识符,标号可以是任意合法的标识符,但在语句标号和它所标识的语句之间必须加一个冒号作为分隔符。
C程序中的任何一个可执行语句之前都可以加上语句标号。
例如:stop:printf(“END\n”);通常,语句标号只是用作goto 语句的转向目标。
如:goto stop;如果程序中没有用goto语句改变程序的执行顺序,也就没有必要出现语句标号。
2.goto语句goto语句称为无条件转向语句,goto语句的一般形式为:goto 语句标号;goto语句的作用是把程序的执行转移到语句标号所在的位置,但这个语句标号必须与此goto语句在同一个函数之内。
goto语句不符合结构化程序设计的原则,因为无条件转向使得程序的结构没有规律、可读性差。
对于初学者来说应尽量避免使用goto语句,但如果使用goto语句能够大大地提高程序的执行效率,也可以使用。
3.用goto语句构成的循环结构goto语句通常与if语句配合构成条件转移语句,用来实现构成循环或跳出循环等功能。
例5.1统计从键盘输入的一行字符的个数。
#include <stdio.h>main(){int n= 0;char ch;printf("input a string\n");loop: ch= getchar();n++;if(ch!='\n') /*字符'\n'是结束从键盘输入字符串的标志*/goto loop;n=n-1; /*不要统计字符'\n'*/printf("%d",n);}当用户从键盘上输入一个字符后,先执行n++进行计数,然后判断该字符是否为'\n'字符,若该字符不是'\n'字符,则转移至loop构成循环;否则不执行goto语句,程序在输出n的值后结束。
清华大学VB经典教案第五节——循环结构程序设计
每循环一次,循环变量的值自动加一个
步长,然后判断循环变量的值是否“超 越”终值,如果“超越”,则结束循环,
否则进行下一次循环,用如图5-1所示
的流程图表示。
说明: (1)循环变量、初值、终值、步长都是数值类型; (2)步长可正可负,但不能为0,否则,循环将变成死循环或 无限循环;步长为1时,[Step <步长>]可以省略; (3)当初值小于终值时,步长为正;当初值大于终值时,步 长为负; 通过初值、终值、步长可以计算循环体的循环次数,计算公 式如下: 循环次数=Int((终值-初值)/步长)+1 注意:如果循环次数≤0,即当初值小于终值时,步长为负 ,或者当初值大于终值时,步长为正,则循环体一次都不执行。 (4)Exit For可以退出其所在层的For…Next循环,这一点在 多重循环中尤为重要。
分析:假设某个三位的正整数为n, 要判断n是否是“水仙花数”,关键是 要求出n的百位数字a、十位数字b和个 位数字c,即 百位数字a = n \ 100 十位数字b = n \ 10 Mod 10 个位数字c = n Mod 10
5.2 While…Wend循环 While…Wend循环用于循环次数未知的循环,其语法格式 如下: While <条件表达式> [<语句组>] Wend 当条件表达式的值为True时执行循环体,为False时结束 循环,用如图5-5所示的流程图表示。
入项;组合框是由文本框和列表框组合而成,因此,组合框 具有文本框和列表框的功能,既可以输入项也可以选择项,
但任意时刻最多只能选择一个项,选中的项将显示在组合框
中。
5.5.1 列表框 1.列表框的常用属性 (1)List属性 存放列表框中的所有项,是一个一维字符串数组,数组 名为List,下标为项的索引值,从上到下,第一个项的索引值 为0,第二个项的索引值为1,以此类推。 (2)ListCount属性 返回列表框中项的个数。 (3)ListIndex属性 返回当前选中项的索引值。若有多个项被选中,则返回 最后一个选中项的索引值;也可以给该属性赋一个整数值来选 中对应索引值的项;如果没有选中任何项,ListIndex属性值 为-1。 (4)Selected属性 判断列表框中的某个项是否被选中,选中为True,否则 为False。该属性是一个一维布尔或逻辑型数组,数组名为 Selected,下标为项的索引值。
C语言程序设计_05循环结构程序设计
5.2 DO…WHILE循环结构 5.2.1 DO…WHILE语句的格式 DO…WHILE语句的一般格式为: DO 语句 WHILE(表达式); DO…WHILE语句中的表达式表示循环的条件,可 以是任何表达式,常用的是关系表达式和逻辑表达 式。表达式必须加圆括号。语句是重复执行的部分, 称作循环体。
由亍循环体在表达式2乊后表达式3乊前执行所以把循环体语句放在表达式3的开头循环体语句不原来的i构成逗号表达式作为循环语句新的表达式3从而也就没有循环体语句了
第5章 循环结构程序设计
5.1 WHILE循环结构 5.2 DO…WHILE循环结构 5.3 FOR循环结构 5.4 与循环有关的控制语句 5.5 3种循环语句的比较 5.6 循环的嵌套 5.7 循环结构程序举例 本章小结
图5-6 FOR语句执行过 程
FOR语句的执行过程如图5-6所示。具体由以下几步 完成: (1)求表达式1。 (2)求表达式2,并判定其值为0或非0。若值为非0, 转步骤(3);否则结束FOR语句。 (3)执行语句,然后求表达式3。 (4)转向步骤(2)。 由FOR语句的执行流程可知,表达式1的作用是为循 环控制的有关变量赋初值,表达式2是循环控制条件, 表达式3用于修正有关变量,语句是重复执行部分。
【例5.7】输入20个数,求出其中的最大值与最小值。
5.3.3 FOR语句的各种变形 1.在FOR语句中省略表达式 FOR语句中的3个表达式可以部分或全部省略,下面 给出语句的4种基本变形。 (1)表达式1移至FOR语句前,但它后面的分号必 须保留。这时FOR语句的形式为: 表达式1; FOR(; 表达式2; 表达式3) 语句
(2)表达式3移至循环体语句之后,但它前面的分 号必须保留。FOR语句的形式为: FOR(表达式1; 表达式2;) { 语句; 表达式3; } 对于求P=5!的程序段,省略表达式3,将其放在循环 体中,则程序段写成:
第5章-循环结构程序设计PPT优秀课件
5.3.1 前测型Do…Loop循环语句
格式:
Do [While | Until <条件表达式>] <语句块> [Exit Do] <语句块>
Loop
18
5.3.1 前测型Do…Loop循环语句
前测型Do…Loop循环的流程图
Do While…Loop流程图
Do Until…Loop流程图
条件表达式 值为真?
格式:
Do <语句块> [Exit Do] <语句块>
Loop [While | Until <条件表达式>]
23
5.3.1 后测型Do…Loop循环语句
说明:
后测型Do…Loop循环语句与前测型Do…Loop循环语句的主 要区别在于:
后测型要先执行一次循环体,再判断条件;而前测型要 先判断条件,然后根据判断结果决定是否执行循环体。因此 对于后测型,不管条件是否满足,循环体至少有一次执行机 会。
16
5.3 Do…Loop循环语句
导入:
Do…Loop循环也属于条件型循环,即根据条件的 成立与否来决定是否执行循环。Do…Loop循环的应 用具有很强的灵活性,主要体现在:它既能指定循环 开始条件,又能指定循环结束条件;既能构成前测型 Do…Loop循环语句,又能构成后测型Do…Loop循 环语句。
25
5.3.1 后测型Do…Loop循环语句 【例5-10】将400~600间能够被3整除的数 输出(上机练习)
【例5-11】(略)
26
5.4 循环嵌套
介绍:
一个循环结构中又包含一个或多个循环结构被称为 循环嵌套,或称多重循环。 多重循环对嵌套的层数没有限制。有几层嵌套,就 称为几重循环,如二重循环、三重循环、四重循环 等。一般地,把嵌套在一个循环体内部的另一个循 环结构称为内循环;这样,嵌套了其他内循环部分 的循环结构就称为外循环。 为了使多重循环结构具有较好的可读性,通常用缩 进方式书写相应的源代码。
Python语言程序设计第五章循环结构程序设计
14
第5章
循环结构程序设计
5.2 for语句 结构
1. for语句一般形式: for 目标变量 in 序列对象: 循环体语句 说明:
for语句的首行定义了目标变量和遍历的序 列对象,后面是需要重复执行的语句块。语 句块中的语句要向右缩进,且缩进量要一致。
15
第5章
循环结构程序设计
注意:
(1)for语句是通过遍历任意序列的元素来建立 循环的。 (2)for 语句也支持一个可选的else块,一般格 式如下: for 目标变量 in序列对象: 语句块 else: 语句
5
第5章
循环结构程序设计
在while语句中使用else子句
while exp: 循环体 else: 语句
Python可以在循环语句中使用else子句,即构 成了while.......else循环结构。
6
第5章
循环结构程序设计
例 :求
100
n 1
n
开始 sum,n=0,1 n<=100
1)问题分析:
29
第5章
循环结构程序设计
5.4 循环控制语句
有时候我们需要在循环体中提前跳 出循环,或者在某种条件满足时,不执行 循环体中的某些语句而立即从头开始新的 一轮循环,这时就要用到循环控制语句 break、continue和pass语句。
30
第5章
循环结构程序设计
(1) break语句
一般格式 break 功能
371printdddijk40728python语言程序设计第5章循环结构程序设计第5章循环结构程序设计循环结构程序设计51while语句当型循环52for语句结构53循环的嵌套54循环控制语句55循环结构程序举例2第5章循环结构程序设计循环结构的基本类型exptaf
第5章 循环结构程序设计
输入学生2的三门课成绩,并计算平均值后输出
scanf(“%f,%f,%f”,&s1,&s2,&s3);
aver=(s1+s2+s3)/3;
printf(“aver=%7.2f”,aver); 要对50个学生进行相同操作
重复50次
大多数的应用程序都会包含循环结构
循环结构和顺序结构、选择结构是结构 化程序设计的三种基本结构,它们是各 种复杂程序的基本构造单元
(1) 先求解表达式1 (2) 求解表达式2,若其值为真,执行循环体, 然后执行下面第(3)步。若为假,则结束循环, 转到第(5)步 (3) 求解表达式3 (4) 转回上面步骤(2)继续执行 (5) 循环结束,执行for语句下面的一个语句
5.4用for 语句实现循环
for(i=1;i<=100;i++) sum=sum+i; 等价于 用for语句更简单、方便 i=1; while(i<=100) { sum=sum+i; i++; }
要向计算机输入全班50个学生的成绩
分别统计全班50个学生的平均成绩 求30个整数之和 教师检查30个学生的成绩是否及格
5.1为什么需要循环控制
例如:全班有50个学生,统计各学生 三门课的平均成绩。
输入学生1的三门课成绩,并计算平均值后输出 scanf(“%f,%f,%f”,&s1,&s2,&s3); aver=(s1+s2+s3)/3; printf(“aver=%7.2f”,aver);
n 1
100
5.3用do---while语句实现循环
解题思路:
sum=0 i=1 sum=sum+i i=i+1
第5章 循环结构程序设计PPT课件
}
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环i=1w; hile (i<=100)
2、while语句的注意事项
{ sum=sum+i;
注意:
i++; }
(1) 循环体如果包含一个以上的语句,应该用花括弧括
起来,以复合语句形式出现
(2) 在循环体中应有使循环趋向于结束的语句。如果无
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环
1、while语句的一般形式
while语句用来实现“当型”循环结构 一般形式: while (表达式)
循环体语句
当表达式为非0值时,执行while 语句中的循环体语句 其特点是:
先判断表达式,后执行语句
C语言程序设计
第5章 循环结构程序设计
} 运行结果:
}
1↙ sum=55 再运行一次:
}说明:当while后面的表达式的第一次的
值为“真”时,两种循环得到的结果相
11↙ sum=0
同。否则,二者结果不相同
C语言程序设计
第5章 循环结构程序设计
§ 5.4 用for语句实现循环
1、for语句的一般形式
C语言中的for语句使用最为灵活,不仅可以用于 循环次数已经确定的情况,而且可以用于循环次数 不确定而只给出循环结束条件的情况,它完全可以 代替while语句
语句,转到第(5)步
(3) 求解表达式3
(4) 转第(2)步骤继续执行
(5) 循环结束,执行for语句下面的一个语句
C语言程序设计
第5章 循环结
执行表达式1
循环初始条件
C语言程序设计:第5章-循环结构-课件教案
C语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的while语句、dowhile语句、for语句的用法,掌握中断语句中break和continue语句的用法。
教学要求1.熟练掌握while语句、dowhile语句、for语句2.熟练掌握break语句、continue语句重点和难点1.while语句、dowhile语句、for语句的使用2.break语句、continue语句的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程AM一、课程引入计算1+2+3+...+n有几种方法,需要多少步骤?、循环结构语句什么时候用到循环结构:处理重复的问题的时候。
循环结构的三大语句:while语句、dowhile语句、for语句。
1.while语句while(循环条件表达式)循环体语句;执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行。
1.输出1---n之间的数intmain(void){inti=1;intn=0;printf("请输入n的值:");scanf("%d",&n);//1015while(i<=n)15printf("%d\n",i);i++;}return0;}2.计算m+...+n 的值intmain(void){inti=1;intn=0;intm=0;intsum=0;printf("请依次输入m 和n 的值:");scanf("%d%d",&m,&n);//m+...n10while(m<=n){sum=sum+m ;m++;}printf("sum=%d\n",sum);return0;}2.do...while 语句do循环体语句;}while(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
第5章-C语言程序设计(第2版)教材习题答案
【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。
2011年10月第二版。
ISBN:978-7-302-26972-4。
售价:35元。
【答案版本】本习题答案为2012年2月修订版本。
一、选择题1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。
A. while循环执行10次B. 循环是无限循环C. 循环体语句执行一次D. 循环体语句一次也不执行2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。
A. 运行程序段后输出1B. 程序段执行无限次C. 运行程序段后输出0D. 程序段中的控制表达式是非法的3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。
A. int a=1,b=2; while(b--);B. int a=1,b=2; do a++; while(a==b);C. int a=1,b=2; while(a=3);D. int a=1,b=2; do b-- while(b==0);4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。
do{ printf(“%d\n”,i--); } while(i!=0);A. 0B. 1C. 5D. 无限5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。
A. 0B. 5C. 10D. 无限6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。
A. break语句用于循环体内,它将结束该循环B. break语句用于开关语句,它结束该开关语句C. break语句用于if语句的内嵌语句内,它结束该if语句D. break语句在一个循环体内可使用多次7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。
C语言程序设计循环结构程序设计
假
体现式
真
语句
假如体现式旳值一开始就为0,则语 句一次也不会被执行。
上一页
下一页
while语句举例
问题: 求学生旳平均成绩,以输入负数成绩为结束
算法分析:
1. 定义变量score存储学生成绩,定义s=0存储累加旳成绩,
定义n=0统计录入旳成绩数目。
2. 输入第一种学生旳score
3. 若score>=0,执行第4步,不然执行第7步
上一页
下一页
例: 求 1+2 +…+99
分析:用变量i从1到99循环, 把i旳值累加到变量s中,最 终输出s旳值。
程序如下:
#include<stdio.h> main( ) { int i,s=0;
for(i=1;i<=99;i++) s=s+i;
printf(“s=%d”,s); }
上一页
下一页
在某些情况下,for语句中旳体现式1、2、3都能够 省略,而改用其他旳方式来实现这些功能。我们还用 上面旳例子阐明for语句省略体现式旳情形。
上一页
下一页
1.省略体现式1: #include<stdio.h> main( ) { int i=1,s=0;
for(;i<=99;i++) s=s+i;
因为do-while语句至 少要被执行一次,特
别要注意n和s旳取值 问题!
s=s+score;
}while(score>=0);
if(n>1) printf (“ \n %f” ,(s-score)/(n-1));
else printf(“no student score!”);
循环结构程序设计
第5章 循环结构程序设计
5.1 循环语句 5.1.2 while语句 while语句用来实现“当型”循环结构。 while语句的一般形式如下: while(表达式) 语句 /*循环体*/ 功能:当表达式的值为真时,执行 while语句中的循环体。
表达式 真
假
语句
第5章 循环结构程序设计
5.1 循环语句 5.1.2 while语句 while语句用来实现“当型”循环结构。 while语句的一般形式如下: while(表达式) 语句 /*循环体*/ 功能:当表达式的值为真时,执行 while语句中的循环体。
例5.6 判断一个数m是否是素数。
开始 输入m
i=2
i<=m-1 假 真 m%i==0 真 假 i=i+1 真 假
#include <stdio.h> main() { int m,i; scanf("%d",&m); for(i=2;i<=m-1;i++) if(m%i==0) break; if(i<=m-1) printf("%d不是素数",m); else printf("%d是素数",m); }
第5章 循环结构程序设计
5.2 多重循环 在循环体语句中又包含有另一个完整的循环结构的 形式,称为循环的嵌套(又称双重循环)。如果内循环 体中又有嵌套的循环语句,则构成多重循环。 嵌套在循环体内的循环体称为内循环,外面的循环称为 外循环。 while、do…while、for三种循环都可以互相嵌套。
a=1
a<=9 真 b=1
假 b<=9 真 输出a×b=c b=b+1 a=a+1
第5章 循环结构程序设计
例5.8 例5.9 例5.10 例5.11 例5.12
– 三种循环的比较:
• 三种循环可用来处理同一问题,一般它们可以互相代替。 • do-while循环类似于while循环。do-while循环至少要执 行一次循环体,而while和for循环在进入循环体之前,首先 要判断循环条件,如果条件不成立,则循环体一次也不执 行就结束循环流程。 • while和do-while循环,在while后面指定循环条件。而 for循环可以在表达式3中包含促使循环结束的操作,甚至可 以将循环体中的操作全部放到表达式3中。 • 用while和do-while循环时,循环变量初始化的操作应在 while和do-while之前完成。而for语句可以在表达式1中实 现循环变量的初始化。 首页 上一页
5.2 实现循环结构的语句
• while语句
while语句用于构成“当型”循环结构。 形式: while (表达式 表达式) 表达式 {循环体语句 循环体语句 } 其流程如右图所示: 例5.1 例5.2
–
关于while循环结构的注意事项:
• while循环结构的特点是“先判断,后执行”。 • 若循环体中包含多个语句,则应以复合语句的形式出现。 • 循环体内要有促使循环结束的条件。否则会形成“死循 环”。 • 为使循环能正确开始运行,要做好循环前的准备工作。 首页 上一页
5.3 循环嵌套的概念及实现
循环的嵌套是指:在一个循环体内又包含了另一个完整的循 环结构。三种循环不仅可以自身嵌套,而且还可以互相嵌套。 例5.6 例5.7
– 使用循环的嵌套结构的注意事项
• 外层循环应“完全包含”内层循环,不能发生交叉。 • 嵌套的循环控制变量一般不应同名,以免造成混乱。 • 嵌套的循环要注意正确使用“缩进式”书写格式来明 确嵌套循环的层次关系,以增加程序的可读性。
C语言程序设计教程(第4版)_第5章_循环结构
5.1 for语句
程序流程图: 程序:example5_2.c 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数, 如果a≤b,计算 i ; 如果a>b,则计算 i 。 请设计算法并编写程序验证。
i b ia ia i b
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。 ******* ******* ******* ******* ******* ******* ******* ******* 分析: ①图案有规律,共有m行,每行有n个*号。 ②可采用循环嵌套的方式: 第1层(外层)控制行数,用i来表示,输出m行“*” ; 第2层(内层)控制列数,用j来表示,输出n列“*” 。
100
5.1 for语句
for语句所具有的特性。 1.<初始表达式>可以省略,但须保留分号(;),同时在for之 前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句> 2.<条件表达式>一般不可省略,否则为无限循环。 例如: for(i=1;; i++) sum =sum+i; 相当于条件总为真,程序会一直不停地执行直到“数据溢出”。
5.2 while语句
例7:编写程序,统计从键盘输入的字 符个数(回车换行符也是一个字符) ,当遇到结束标志时程序结束。 分析:关键是循环计数。
开始 count=0
(ch=getchar())!=EOF
F
设置一个累加器count(初值为0),
每次从键盘输入一个字符,只要该字 符的值不等于结束标志,累加器的值 就增1:count=count+1; 算法流程图如图所示。 程序: example5_7.c
C言语课件-第5章 循环结构程序设计
C言语课件-第5章 循环结构程序设计
循环结构的概念
1 基本概念
循环结构是一种程序设计结构,用于重复执 行特定的代码块。
2 分类
循环结构可以分为while循环、do while循环和 for循环。
3 循环流程控制结构
循环结构由控制条件、循环体和循环控制语 句组成。
3 下一学习步骤建议
提供学习者下一步继续深入学习的建议和资源。
4 循环的几种实现方式
循环可以通过不同的控制条件和循环体实现 不同的功能。
while循环
1 语法格式
while(条件表达式) { // 循环语句块
}
2 例子讲解
使用while循环计算1到100的和。
do while循环
1 语法格式
do { // 循环语句块
} while(条件表达式);
2 例子讲解
1 游戏规则
玩家猜测计算机生成的随 机数字,根据提示进行猜 测,直到猜对或者达到最 大次数。
2 代码实现分析
介绍猜数字游戏的代码实 现思路和算法。
3 代码实现细节讲解
详细演示如何使用循环结 构实现猜数字游戏。
小结
1 学习重点回顾
回顾循环结构的概、语法和应用场景。
2 学习难点梳理
梳理学习过程中遇到的难点和需要进一步掌握的知识点。
1 break语句
用于跳出循环体,终止循环的执行。
2 continue语句
用于跳过本次循环的剩余代码,继续下一次 循环。
循环小结
1 循环的优缺点
循环结构可以使代码更简洁、高效,但滥用可能导致逻辑错误和性能问题。
2 循环应用的场景举例
循环结构常用于处理数组、列表、文件等需要重复操作的情况。
《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计
Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;
第五章-循环结构程序设计编程题(参考答案)
第五章循环结构程序设计1.用for循环语句编程输出1~20之间的所有整数,两数之间以空格分隔。
#include<stdio.h>void main(){int i;for(i=1;i<=20;i++)printf("%d ",i);printf("\n");}2.用for循环语句编程输出20~1之间的所有整数,两数之间以空格分隔。
#include<stdio.h>void main(){int i;for(i=20;i>=1;i--)printf("%d ",i);printf("\n");}3.用for循环语句编程输出A~Z之间的所有字符,两字母之间以空格分隔,要求一行输出8个字符。
#include<stdio.h>void main(){char c;for(c='A';c<='A'+25;c++){putchar(c);}}4.输出100~200之间所有能被3和7整除的数(每行输出4个数)。
#include<stdio.h>void main(){int i,j=0;for(i=100;i<=200;i++){if(i%21==0){ j++;printf("%12d",i);if(j%4==0) printf("\n");}}}5.输出1至1000之间所有满足用3除余2、用5除余3、用7除余2的数(要求每行只输出5个数)。
#include<stdio.h>void main(){for(i=1;i<=1000;i++){if((i%3==2)&&(i%5==3)&&(i%7==2)){ j++;printf("%12d",i);if(j%5==0) printf("\n");}}}6.先读入一个正整数n,然后计算并显示前n个偶数的和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:求式子的和,直到表达式的最后一项的值小于0.0001。 Dim i As Integer Dim s As Double i=1 s=0 While 1 / (i * (i + 1)) >= 0.0001 s = s + 1 / (i * (i + 1)) i=i+1 End While s = s + 1 / (i * (i + 1)) ’退出循环时,小于0.0001的项没有 加上去。因此,再加一次。 MsgBox("结果为:" + Str(s), , "求和")
例子
1、从键盘输入一个字符串,分别统计字母“M” 和“m”在其中出现的次数。 2、计算并输出下面级数前n项(n=40)中偶数项的 和。 s = 1*2+2*3+3*4+4*5+……+n*(n+1)+… 3、计算并输出所有6位正整数中能被6整除且其 十位数不是4的数之和,并求它们中的最大数。 4、编写程序,计算并输出下面数列前n项的和 (设n=15,结果取4位小数)。 数列为: 2/1,3/2,5/3,8/5,13/8,21/13,……
例:判断一个数n是否为素数。 分析:根据素数的定义可知:一个数除了1和它本身之外,不能被其它数整除的数就是素数。可 以推断:如果只要发现了从2到n-1之间的一个整数能被n整除,则n就不是素数;否则,n就是素数。 可以先假定一个标志变量Flag,其初值为True,表示假定n是素数。然后把从2到n-1之间的所有 整数试一遍,只要发现某一个数能被n整除,就把标志变量Flag的值赋值为False,表示n不再是素数。循环 结束后,根据Flag的值来判断n是否素数,若Flag的值为True,则n是素数;否则n不是素数。 Dim n, i As Integer Dim flag As Boolean n = InputBox("请输入一个数值n:", "判断素数") flag = True i=2 While i <= n - 1 If n Mod i = 0 Then flag = False Exit while End If i=i+1 End While If flag Then MsgBox(Str(n) + "是素数!", , "判断素数") Else MsgBox(Str(n) + "不是素数!", , "判断素数") End If
注意: 1.防止出现死循环 2.在While...End While循环结构中,由于是先判断循环的 条件,然后再决定是否执行循环体。若在第一次进入循环 结构之前,条件不成立,那么循环体一次也不执行。
Do…Loop语句
可分为四种 : 1. Do While…Loop循环结构 语句形式如下: Do While <条件表达式> 语句块A [Exit do] 语句块B Loop 这种结构也是先判断条件,然后决定是否执行 循环体.
例:求1+2+3+…+100的和。
方法一:用do while…loop语句实现 Dim i, s As Integer i=1 s=0 Do While i <= 100 s=s+i i=i+1 Loop 方法二:用do…loop while语句实现 Dim i, s As Integer i=1 s=0 Do s=s+i i=i+1 Loop While i <= 100
例:求自然对数e的近似值,要求其误差小于0.000001(即求和公式的最 后一项的值小于0.000001),近似公式为:
分析:本例涉及两个重要的运算:一个是累加求和,另一个是求阶乘。 Dim i As Integer Dim fac, s As Double s=1 fac = 1 i=0 Do i=i+1 fac = fac * i ’求第i项分母的值,即i! s = s + 1 / fac Loop While 1 / fac >= 0.000001 MsgBox("e的值为:" + Format(s, "#.######"), , "求e的值")
4. Do… Loop Until 循环语句
语句形式如下: Do 语句块A [Exit Do] 语句块B Until <条件表达式> 此语句与Do…While Loop语句的功能的区别仅 仅在于:若条件表达式的值为False,就执行下次循 环体;否则,退出循环。使用的条件与Do…W=0 Do While i < 5 s=s+i i=i+1 Loop
程序段2: Dim i, s As Integer i = 10 s=0 Do s=s+i i=i+1 Loop While i < 5 当第一个程序段执行结束时,s的值为0;则第二个程序段执行结束时,s 的值为10。
If flag Then MsgBox(Str(n) + "是素数!", , "判断素数") Else MsgBox(Str(n) + "不是素数!", , "判断素数") End If
2. Do…Loop While 循环结构
语句形式如下: Do 语句块A [Exit Do] 语句块B Loop While <条件> 根据语句形式的书写可以看出,此结构是先执行循 环体,后进行条件的判断,以决定是否进行下一次循环。 也就是说,这种循环的循环体至少执行一次。
执行的流程如图所示。 说明如下:
语句块
条件 表达式
Y
N
例:用辗转相除法求两个数m,n的最大公约数和最小公倍数。
分析:辗转相除法求两个数m,n的最大公约数的思想如下: (1)求m除以n的余数r,即r=m mod n; (2) 若r≠0,转(3);若r=0,则此时的n就是最大公约数,转(4); (3) 把n的值给m,把r的值给n,即m←n,n←r,转(1); (4) 循环结构的下一个语句。 求最小公倍数的方法:两个数的乘积除以它们的最大公约数。
例:判断一个数n是否为素数。
Dim n, i As Integer Dim flag As Boolean n = InputBox("请输入一个数值n:", "判断素数") flag = True i=2 Do While i <= Sqrt(n) If n Mod i = 0 Then flag = False Exit Do End If i=i+1 Loop
例:求100到999之间的所有“水仙花数”。“水仙花数”的含 义是一个数的每个数位的立方和等于该数。例153=13+53+33。 分析:对于某一个数说,先把这个数拆开成单个的数字,然后 再判断它们的立方和是否等于本身。 程序如下: Dim bw, gw, sw, i As Integer Dim str1 As String str1 = "" For i = 100 To 999 bw = i \ 100 sw = (i Mod 100) \ 10 gw = i Mod 10 If bw ^ 3 + sw ^ 3 + gw ^ 3 = i Then str1 = str1 + Str(i) + vbCrLf End If Next MsgBox("结果为:" + vbCrLf + str1, , "求水仙花数")
3. Do Until … Loop 循环语句
语句形式如下: Do Until <条件表达式> 语句块A [Exit do] 语句块B Loop 此语句与Do While…Loop语句的功能的区别仅 仅在于:若条件表达式的值为False,就执行循环体; 否则,退出循环。也就是说,用do while与do until的 条件刚好相反。
Dim m, n, r, x, y, z As Integer m = TextBox1.Text n = TextBox2.Text x=m:y=n ’保存最初两个数的值给x和y,以备求最小公倍数时使用 r = m Mod n While r <> 0 m=n n=r r = m Mod n End While z=x*y/n ’求最小公倍数 MsgBox("最大公约数为:" + Str(n) + vbCrLf + "最小公倍数为:" + Str(z), , "求 最大公约和最小公倍")
While...End While循环
此循环也称“当型循环”,表示当条件成立时,重复执 行某个动作。语法如下: While <条件表达式> 语句块 [Exit While] 语句块 End While 其中:(1)条件表达式表示循环要满足的条件。若表达 式的值为True,则执行语句块。 (2)语句块:即循环体。
循环变量=初值
循环变量是否 超过终值?
Y
N
语句块1 是否执行到 Exit for语句?
N 语句块2
循环变量=循环变量+步长
Y
例:计算1+2+3+…+100。(不能用等差数列求和的计算公 式) Dim i, s As Integer s=0 ’在计算累加和时,存放和的变量的初值为0 For i = 1 To 100 s=s+i Next MsgBox("1+2+3+…+100的和为:" + Str(s), , "求和")