第05章 循环结构程序设计

合集下载

循环结构程序设计PPT课件

循环结构程序设计PPT课件
是循环重复执行的部 分
.
5.1.1 while语句
6
功能:计算表达式的值,为非0(逻辑真)时,
重复执行内嵌语句,每执行一次,就判断一次表
达式的值,直到表达式的值为0 时结束循环,转
去执行while后面的语句。
流程图 循环控制条件
N-S结构图
N
表达式非 0?
Y
语句
当表达式为真 语句
循环体
.
5.1.1 while语句(举例)
.}
5.1.2 do-while语句(说明:)
14
while和do-while都能实现循环控制,while结构程序通常 都可以转换成do-while结构。
区别: – do- while 语句先执行循环体再判断条件,循环体至 少执行一次; – while 语句先判断条件再执行循环体,循环体有可能 一次也不执行。
#include <stdio.h>
思路:
void main( )
{
求累加和:确定c变ha量r lcehn;,初值为0
确定循环条件:in输t入le字n=符0;不为0,即getchar()!=‘0’ printf("请输入字符:\n");
自学: P58例4-1; P61例4-2。
while((ch=getchar())!=‘0’) { putchar(ch);
到满足精度的要求,即最后一项的绝对值小于10-5时 循环停止。循环次数事先未知。
–以二维形式打印乘法九九表,属于双重循环问题。
.
循环结构类型

N
P成立
程 图
Y?
A
N-S

当P成立时
程 图
A

清华大学VB经典教案第五节——循环结构程序设计

清华大学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循环结构程序设计

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,将其放在循环 体中,则程序段写成:

[工学]第05章 循环结构程序设计 (2)

[工学]第05章 循环结构程序设计 (2)
T
22
i=i+c
2019/2/17
例:#include<stdio.h> 例:#include<stdio.h> main( ) main( ) { int i=0; { int i=0; for(;i<10;i++) for(i=0;i<10;i++) putchar(‘a’+i); putchar(‘a’+i); } } 运行结果:abcdefghij
2019/2/17
21
(7)表达式2一般是关系表达式(如 for语句说明4 i<=100)或逻辑 表达式(如a<b&&x<y),但也可以是数值表达式 或字符表达式,只要其值为非零,就执行循环体。分 析下面两个例子: ①for ( i=0;(c=getchar( ))!=‘\n’;i+ =c); i=0 此 for语句的执行过程见图 ,它的作 用是不断输入字符,将它们的ASCII 取一个字 码相加,直到输入一个“换行”符为 符=>c 止。 F ② for( ;(c=getchar( ))!=‘ \ n’;) C≠换行符 printf(“%c”,c);
15
思考:该程序是什么功能?
2019/2/17
5.3 for语句
for循环语句是C语言中功能最强的循环语句,它有
多个变化形式,并且可以很方便的代替其它的循环语
16
句。 for语句的一般形式
for(表达式1;表达式2;表达式3)循环体语句
2019/2/17
17
for执行流程
①先计算初值表达式1,它主要 用于循环开始前设置变量初值; ②接着计算循环控制逻辑表达式 2,它控制循环条件,决定循环 次数; ③如果表达式2为真,则执行循 环体语句,否则结束for循环; ④求解表达式3,它主要是对循 环控制变量进行修改。 ⑤转步骤②执行。

循环数据结构设计

循环数据结构设计

循环 问题
while循环
循环条件: 余数r不为0 循环体:ba, rb 计算 a和b 的余数r ; 算法:
读入a、b a%b r r<>0 b a r b a%b r 输出b
#include <stdio.h> void main() {int a,b,r; scanf("%d%d",&a,&b); r=a%b; while(r) {a=b; b=r; r=a%b; } printf("%d\n",b); }
#include <stdio.h> void main() {int n,k,s=0; scanf("%d",&n); for( ;n!=0; ) { k=n%10; s=s+k; n=n/10; } printf(“%d\n",s);
几种循环的比较
#include "stdio.h" void main() {int s=0,i; for(i=1;i<=100;i++) s=s+i; printf("%d",s); }
分析程序运行结果
循环的嵌套
输出100 ~200间的所有素数。 “素数”:只能被1和自身整除的数。 如何判断一个数(n)是否是素数? 用2 ~n/2之间的数i除n, 都除不尽:n是素数; 有一个可以除尽:不是素数。 是一个循环过程,用什么循环? 循环条件:i<=n/2且n%i!=0 循环体: i++
0s,0n i=1,15 读入成绩g s+gs g>=60 n++ 输入s/15,n/15

机械工业出版社c语言各章节编程题参考答案(书中有)

机械工业出版社c语言各章节编程题参考答案(书中有)
else if((a==b)||(b==c)||(a==c)) printf(“This is a isoceles triangle\n”);
else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf(“This is a
if(b>c){temp=b;b=c;c=temp;}
if(c>d){temp=c;c=d;d=temp;}/*d已经为最大的数*/
if(a>b){temp=a;a=b;b=temp;}
if(b>c){temp=b;b=c;c=temp;}/*c已经为次大的数*/
if(a>b){temp=a;a=b;b=temp;}/*a已经为最小的数*/
printf(“ *** ”);
printf(“ ***** ”);
printf(“ *** ”);
printf(“ * ”);
}
3参考答案
#include <stdio.h>
main()
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: day=31; break;
case 4:
case 6:
case 9:
}
结束
5 解答:
S0:i=0;
S1:判断gi是否大于80,若大于转S3;
S2:i=i+1;
S3:打印i,gi
S4:若i<10,返回S1否则继续执行。
6 解答:求两个整数的最大公约数、最小公倍数

大一C语言教材《C语言程序设计》第5章 循环程序设计

大一C语言教材《C语言程序设计》第5章 循环程序设计


复合赋值运算符
种类:+= -= *= /= %= 《= 》= &= 含义: 变量 op= 表达式 变量 = 变量

^= |= op 表达式
x%=3 x*=y+8 a+=3
x=x%3 x=x*(y+8) a=a+3
运算符和表达式

说明:

结合方向:自右向左 左侧必须是变量,不能是常量或表达式
例 int i; 例 3=x-2*y; i=2.56; //结果 i=2; a+b=3;

赋值转换规则:使赋值号右边表达式值自动 转换成其左边变量的类型
赋值表达式的值与变量值相等,且可嵌套g a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //表达式值为5,a,b,c值为5 // b=5;a=5 //表达式值11,c=6,a=11 //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2
例 -i++ i=3;
-(i++) printf(“%d”,-i++);
//-3
无论是作为前缀还是作为后缀运算符,对于变量本身来 说自增1或自减1都具有相同的效果,但作为表达式来说却有 着不同的值。

j=3; k=++j; j=3; k=j++; j=3; printf(“%d”,++j); j=3; printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b;

c语言第5章循环结构程序设计课件

c语言第5章循环结构程序设计课件
6
第五章 循环结构程序设计
典型例题(例5-8) :求两个整数的最大公约数、最小公倍数
12 8 4 mn r
84
0
mn r
最大公约数 4 最小公倍数 12*8/4=24
求最大公约数的N-S流程图
辗转相除法
7
第五章 循环结构程序设计
void main( )
{ int n, m, nm, r, t; printf( " Enter m, n= ? " ) ; scanf( " % d% d" , & m, & n) ; nm= n* m; if ( m< n)
例如: for(i=1;i<=n;) { t=t*i; i++; } (4)可以省略表达式1和表达式3,只有表达式2 , 即只给循环条件。
i=1; for(;i<=n;)
{t=t*i; i++;}
14
第五章 循环结构程序设计
(5) 3个表达式都可省略。 例如: for(;;) 语句 相当于 while(1)语句。
3
第五章 循环结构程序设计
例: 编程序求: s=1+2+3+……+100
main()
{ int s=0,i=1;
while (i<=100) { s=s+i;
思考:如何求n!
i++; }
printf("S=%d",s); }
4
第五章 循环结构程序设计 二、 do...while语句
Do-while语句的一般形式为:
(1) while( ) {… while( ) {…}

C语言程序设计循环结构程序设计

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!”);

C语言 循环结构程序设计模拟题

C语言  循环结构程序设计模拟题

C语言循环结构程序设计模拟题-CAL-FENGHAI.-(YICAI)-Company One1第五章循环结构程序设计一、选择题1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。

(0级)A)0 B)1 C)成立 D)22.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。

(0级)A)0 B)1 C); D),3.for语句中的表达式可以部分或全部省略,但两个不可省略。

但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。

(0级)A)0 B)1 C); D),4.程序段如下int k=-20;while(k=0) k=k+1;则以下说法中正确的是。

(1级)A)while循环执行20次 B)循环是无限循环C)循环体语句一次也不执行 D)循环体语句执行一次5.程序段如下int k=1;while(!k==0) {k=k+1;printf("%d\n",k);}说法正确的是。

(1级)A)while循环执行2次 B)循环是无限循环C)循环体语句一次也不执行 D)循环体语句执行一次6.以下for循环是。

(1级)for(a=0,b=0;(b!=123)&&(a<=4);a++)A)无限循环 B)循环次数不定 C)执行4次 D)执行5次7.在下列程序中,while循环的循环次数是。

(1级)main( ){ int i=0;while(i<10){if(i<1) continue;if(i= =5) break;i++;}......}A)1 B)10 C)6 D)死循环、不能确定次数8.程序段如下int k=0; while(k++<=2) printf("%d\n",k);则执行结果是。

c语言课件-第五章-循环结构程序设计

c语言课件-第五章-循环结构程序设计

5.5 for语句(当型循环)
例:读程序,判断程序的功能 #include<stdio.h> void main( ) {char c; for(;(c=getchar( ))!=‘\n’;) putchar(c); } 输入ok!<回车>,输出_______
读入一个字符,当它不是回车符就输出.
5.5 for语句(当型循环)
分析:用辗转相除法求最大公约数。
5.3 while语句(当型循环)
5.3 while语句(当型循环)
例:利用while语句计算1+1/2+1/4+1/6…+1/50.
解:观察数列1,1/2,1/4,1/6…,1/50。
分子全部为1,分母除第一项外,全部是偶数。 同样考虑用循环实现。
其中累加器用sum表示(初值设置为第一项1,以 后不累加第一项),循环控制用变量i(i:2-50)控 制,数列通项:1/i。
5.2 goto语句及用goto构成循环
一、goto语句 goto语句的一般形式:goto 语句标号
语句标号:用于定义程序中的某个位置 用标识符表示,不能只用数字
如:goto start(对) goto 20(错)
goto语句的功能是无条件地转到标号所指的语句。
因为滥用goto语句会破坏结构化,所以应该限制 使用goto语句。
i=1 for(; i<=3; )
{ s=s+k; i++; }
i=1 while (i<=3)
{ s=s+k; i++; }
5.5 for语句(当型循环)
(6)表达式2一般是关系表达式或逻辑表达式,但 也可以是数值表达式或字符表达式,只要其值不等于 0就执行循环体。

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

《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;

第五单元--循环结构程序设计

第五单元--循环结构程序设计

任务4:九九乘法表——循环嵌套的运用
特别提示
工作任务
思路指导
相关知识
任务实施
工作任务
小学生的九九乘法口诀 “满九九乘法表”,是一个九行九列的表格,行和列均从1变化到9,如5-1表所示。
1
2
3
4
5
6
7
8
9
1
1*1=1
2*1=2
3*1=3
4*1=4
5*1=5
6*1=6
7*1=7
8*1=8
9*1=9
任务实施
#include <stdio.h> void main( ){int n,i=1,scr,sum=0,ave; printf(“请输入评委的人数:”); scanf(“%d”,&n); while(i<=n) //循环输入打分并求和 {printf(“请为参赛队打分:0-100之间”);scanf(“%d”,&scr);sum+=scr; i++; }ave=sum/n;printf(“参赛队总成绩是评委打分平均分:%d”,ave);}
特别提示
while语句和do-while语句的区别: (1)在循环条件和循环体相同的情况下while后面的表达式第一次的值为“真”时,两种循环得到的结果相同。 (2)当while后面的表达式第一次的值为“假”时,while语句一次也不执行,而do-while 语句可以顺利执行一次。
图5-1 while语句流程
相关知识
3.while语句的进一步说明(1)循环体如果包含一个以上的语句,应该用大括号括起来,以复合语句的形式出现。(2)在循环中应有使循环趋向于结束的语句,即设置修改条件的语句。例如:本例中的次数变量i++;(3)while语句的特点是先判断表达式的值,然后决定是否执行循环体中的语句,如果表达式的值一开始为假(即值为0),则退出循环,并转入循环体的后续语句执行。如果表达式的值始终为真(即值为1),则是永久循环“死循环”。

八年级信息技术教案第五章:循环结构程序设计的教学方法探讨

八年级信息技术教案第五章:循环结构程序设计的教学方法探讨

八年级信息技术教案第五章:循环结构程序设计的教学方法探讨在现代信息技术领域中,掌握程序设计语言的能力日益受到重视。

作为信息技术的核心内容之一,程序设计语言的学习是八年级信息技术教学的重点之一。

而程序设计语言中的循环结构也占据了重要的地位。

本文将从教学方法的角度,探讨如何更好地教授八年级学生循环结构程序设计。

一、基础知识培训循环逻辑在程序设计语言中占据了重要的地位,而理解循环逻辑的基本知识是进行程序设计的前提。

教师在教授循环结构程序设计之前,必须让学生充分了解循环的概念、循环的种类以及各种不同循环结构的特点和优缺点。

在了解了循环结构的基本知识后,学生必须具备掌握编程语言中循环语句的使用方法。

教师应该采用多种方式讲授循环语句的使用方法,如讲解、例题演练、课上讨论、团队合作等。

这些方式有助于学生更好地理解和掌握循环语句。

二、实践操作循环结构程序设计并非只靠掌握基础知识就能够实现的,更需要通过实践操作形成对其深刻的认识。

教师可以通过课堂练习、课后作业、实验室操作等多种方式,让学生走进程序设计的实际应用场景,对循环结构有所了解。

在实践操作中,教师应该鼓励学生不断尝试,让他们通过不断地实践发现问题、解决问题,在实践中提高他们的循环结构程序设计水平。

三、问题解决在实际编写程序时,难免会出现各种各样的问题。

在这个时候,教师需要及时发现并解决学生的问题。

当学生遇到困难时,教师也应该及时帮助其解决,引导学生通过自行分析、自主思考等方式解决问题。

四、知识运用学生掌握了循环结构程序设计的基础知识和实践操作方法后,很重要的一点就是要将其应用到实际的程序设计项目中。

教师应该引导学生通过自主设计程序,将所学知识应用到实际问题中。

通过这种方式,不仅能够提高学生的实践操作能力,还能让学生在实践中更好地理解循环结构程序设计的本质,从而对其掌握更加深入。

教学循环结构程序设计需要采用多种教学方法,注重实践操作和问题解决。

通过这样的教学方式,能够提高学生的循环结构程序设计能力,让学生在信息技术领域中更好地掌握程序设计语言的实战应用。

北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计

北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计

2023/4/2
5.3 do-while语句
15
语句一般格式
do
{语句组} while (表达式);
功能:
– 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为 0 结束循环,转去执行while下面 的语句。
2023/4/2
do-while循环的算法
for(n=100;n<=200;n++) {
if (n%7!=0) continue;
printf("%6d",n); j++; if (j%10==0)
printf("\n"); } printf(" \n j=%d\n",j); }
29
2023/4/2
5.5.2 循环中break的应用
30
功能:
}
无循环体
} 循环体
2023/4/2
5.5 循环结构中的跳转语句
25
有如下三种语句实现跳转: – continue语句 – break语句 – goto语句
功能:在循环语句的循环体中使用,可 以进行循环的流程控制
2023/4/2
5.5.1 continue语句及应用
26
功能:
– 中断循环体的本次执行(即跳过循环体中尚未 执行的语句),立即开始执行下一次循环。
– 利用break语句能够强迫终止本层循环, 转到后续语句执行。
while语句
表达式? N
Y
… break;

do-while语句
… break;

表达式? N
Y

第05章 C程序设计

第05章 C程序设计

(1)反复执行 x%10 12345 %10 = 5 x=x/10 (2)何时结束 --->=0? 如何 12345 x= 4
scanf( “%d”, &x) ; (1) x>0 ) while ( 12345%100/10 { printf( “%d ” , x%10) ; (2) 12345/10%10 x=x/10 ; }
{ int x, sum=0;
do { scanf(“%d”, &x); sum+ = x ; } while (x>0) printf(“sum=%d”, sum); sum-x); }
while (x>0) { 1 输入一个数 sum+ = x ; 2scanf(“%d”, &x); 求和 } •重复直到0 printf(“sum=%d”, sum);
5.循环嵌套 (1)循环语句的循环体内,又包含另一个完整的循 环结构,称为循环的嵌套。循环嵌套的概念,对所有高 级语言都是一样的。 (2)for语句和while语句允许嵌套,do-while语句也 不例外。
[Return]
5.3 直到型循环do-while语句
1.一般格式 do { 循环体语句组; } while(循环继续条件); /*本行的分号不能缺省*/ 当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。
程序运行情况如下: sum=5050
[案例5.2] 求n的阶乘n!(n!=1*2*……*n)。 /*案例代码文件名:AL5_2.C*/ /*程序功能:求n!*/ main() { int i, n; long fact=1; /*将累乘器fact初始化为1*/ printf(“Input n: ”); scanf(“%d”, &n); for(i=1; i<=n; i++) fact *= i;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)表达式2通常是循环的条件,被省略时,构成无限循环, 为了避免死循环,常在循环体里包含break语句,用于跳出循环。
(4)表达式3常用来修改循环变量的值,可省略,而将其放在for循环体内。 for(i=1,j=2;i<5;) { …… i++,j++; …… }
12
5.2 三种循环结构
3. for语句使用说明
(3)while语句和do~while语句只有一个表达式, for语句有三个表达式。for语句的三个表达式可以部分 或全部省略,但是两个分号一定不能省略。
15
5.3 循环控制语句
5.3.1 break语句
只能用于循环语句和switch语句中; 功能是强制退出循环或强制退出switch语句.
29
1. 一般形式: goto 语句标号; 2. 说明:
语句标号的定义规则遵循标识符的命名规则; goto语句一般用在条件语句中; 功能是 转去语句标号所指定的语句执行;
例: s=0; i=2; loop1: s=s+i; i+=2; if(i<100) goto loop1; printf("s=%d\n",s) ;
(5)三个表达式可以省略其中之一、之二、也可以同时省略, 但是,表达式之间的两个分号不允许省略。 三个表达式同时省略后的for语句形式为: for( ; ; ) { 语句序列; }
(6)若for循环的循环体不为空,一定不能在表达式的括号后加分号, 否则,会被认为循环体是空语句而不能反复执行真正的循环体。 for(i=1;i<=10;i++); sum+=i;
例:int i,m,n; scanf("%d%d",&m,&n); for (i=n;i<=m*n;i++) if (i%m==0 && i%n==0) break; printf("%d",i);
16
5.3 循环控制语句
5.3.1 break语句
1. 一般形式
while(表达式1) { ……
if(表达式2) break; 语句1; …… } 语句2;
19
5.3 循环控制语句
5.3.2 continue语句
1. 一般形式
while(表达式1) { ……
if(表达式2) continue; 语句1; …… } 语句2;
2. 执行流程
20
5.3 循环控制语句
例5-7 输出100~200中不能被5整除的数,每行输出16个数。 分析:如果100~200中的某个数能被5整除,则不输出, 即跳过输出语句,用continue语句实现,然后继续检测 下一个数。
13
5.2 三种循环结构
例5-5 编程求斐波那契数列:1,1,2,3,5,8,13,21 34,……的前20项。
分析:该数列从第3项开始,每一项均为前两项之和,则 用通项可表示为:
FF12
1 1
Fn Fn1 Fn2
(n 1) (n 2) (n 3)
14
5.2 三种循环结构
27
5.6 循环结构程序典型例题
例5-12 用辗转相除法求两个正整数的最大公约数和最小公倍数。 分析:算法如图
28
5.6 循环结构程序典型例题
例5-13 打印所有水仙花数。水仙花数是指各Байду номын сангаас数字的立方和等 于该数本身的三位数。例如:153=13+33+53。 分析:设水仙花数为n,则n的取值范围是100~999,利用循环 对每一个n进行判断,若n的个位、十位和百位的立方和等于n 本身,则输出n。
N-S结构图 当表达式为真
语句
5
5.2 三种循环结构
例5-1 用while语句求n!(n为正整数)。
分析:求n的阶乘,即求从1到n的所有正整数的乘积, 共进行n-1次乘法运算。乘法运算是一个重复执行的 操作,而循环的条件是参与乘法运算的数值小于等于n。
6
5.2 三种循环结构
例5-2 输入一批自然数,求它们的累加和。当输入-1时, 结束求和过程。
21
5.4 循环的嵌套
一个循环结构内可以包含另外一个或多个完 整的循环结构,称为循环的嵌套或多重循环;
三种循环可以互相嵌套.
例: 写出下列程序段的运行结果 for(i=1;i<=2;i++) { for(j=1;j<=3;j++) printf(“*”); printf(“\n”); }
22
25
5.5 goto语句构成的循环
例5-10 输入三角形的三条边(直到满足三角形三边的条件 为止),判断三边构成的三角形是否为等边三角形。
分析:三角形的三边关系定理:“三角形任何两边的和大于 第三边”。
26
5.6 循环结构程序典型例题
例5-11 从键盘输入一个字符串,以回车结束。分别统计其中 字母、数字、空格和其它字符的个数。 分析:在学习数组之前,输入一个字符串只能通过循环实现, 每次循环输入一个字符,对每次循环输入的字符都要判断是 否为字母、数字、空格或其它字符。
3
5.2 三种循环结构
for循环 while循环 do~while循环
实现循环结构 的3种语句
条件 假 真 循环体
循环体后的语句 循环结构
4
5.2 三种循环结构
5.2.1 while循环
1. 一般形式 2. 执行流程
while (表达式) {
语句序列 }
循环体.只有1条语句 时可以省写{ }
2. 执行流程
17
5.3 循环控制语句
例5-6 从键盘输入一个大于2的正整数n,判断该数是否为素数。 分析:所谓素数是一个大于1的自然数,它除了能被1和它 本身整除外不能被其它整数整除。n是素数。
18
5.3 循环控制语句 5.3.2 continue语句
只能用于循环语句中; 功能是提前结束本次循环,继续执行下一次循环.
第5章 循环结构程序设计
1
目录
1
概述
2
三种循环结构
3
循环控制语句
4
循环的嵌套
5
goto语句构成的循环
6
循环结构程序典型例题
2
5.1 概述
循环结构的基本思想是重复,它通常由两大部分构成: 循环条件和循环体。循环条件用于控制循环是否继续执 行。当给定条件成立时,循环结构重复执行某个程序段, 这个被重复执行的程序段称为循环体。
5.2.4 几种循环的比较
(1)如果循环次数在执行循环之前就已确定,一般用 for语句。 如果循环次数是由循环的执行情况确定的, 一般用while语句或者do~ while语句;
(2)for语句和while语句先判断循环控制条件,后执行循环体; do~while语句是先执行循环体,后判断循环控制条件。 因此,do~while语句至少执行一次循环体, 而for语句和while语句可能一次也不执行循环体;
5.4 循环的嵌套
例5-8 输出如下所示的九九乘法表。
23
5.4 循环的嵌套
例5-9 百钱买百鸡问题。一百个铜钱买了一百只鸡,其中, 公鸡一只5钱、母鸡一只3钱、小鸡一钱3只,问一百只鸡中公 鸡、母鸡、小鸡各多少只?
分析:设公鸡、母鸡、小鸡的数量分别为x、y、z,可以 采用穷举法求解。
24
5.5 goto语句构成的循环
9
5.2 三种循环结构
例5-4 用do~while语句求数列
的前10项和。
分析:从第二项开始,每一项的分子可由前一项分子加1得到, 每一项的分母可由前一项分母加2得到,每一项的符号由前一 项取负得到。
10
5.2 三种循环结构
5.2.3 for循环
1. 一般形式
for ( 表达式1 ; 表达式2 ; 表达式3) {
分析:自然数的输入以及求和运算都是重复执行的, 因此,需要将输入语句和累加运算放在循环体中。 循环终止的条件是输入自然数的值为-1。
7
5.2 三种循环结构 5.2.2 do~while循环
1. 一般形式 2. 执行流程
do { 语句序列
} while (表达式);
8
5.2 三种循环结构
例5-3 用do~while循环处理不定数目的自然数累加和问题。 分析:此题与例5-1类似,但题目要求用do~while语句实现。 只需将例5-1中的while语句部分换成do~while语句即可。
语句序列 }
2. 执行流程
一般情况下: 表达式1—赋值表达式; 表达式2—关系表达式或逻辑表达式; 表达式3—赋值表达式.
11
5.2 三种循环结构
3. for语句使用说明
(1)三个表达式都可以是任意合法的表达式 for(i=1,j=2;i<5;i++,j++)
(2)表达式1通常用于赋初值,可省略,而将其放在for循环之上。 int i=1,j=2; for(;i<5;i++,j++)
相关文档
最新文档