06第六课 循环结构程序设计(全课)
循环结构程序设计PPT课件
![循环结构程序设计PPT课件](https://img.taocdn.com/s3/m/7da07557227916888486d7c2.png)
.
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
循环结构程序设计教案ppt课件
![循环结构程序设计教案ppt课件](https://img.taocdn.com/s3/m/ba2303a3760bf78a6529647d27284b73f242360e.png)
}
解法2 do_while 语句
#inlcude <stdio.h>
main()
{ int s = 0, i = 1;
do{ s = s + i; i++; }
解法3 for 语句 #inlcude <stdio.h>
while ( i <= 100 );
printf( "1+2+3+…+100=%d\n“ , s ); }
for ( i = 1;i <= n;i++ ) s+= i;
2 若表达式e2省略,即不判断循环条件,循环无法终止—死循环(应避免), 该结构一定要有break之类的跳出循环控制语句
for( i=1; ;i++) s+= i;
i = 1; while (1) { s+= i; i++;}
3 表达式e3可以省略,放入后面的循环体语句s中
Ex 计算
s111 1 2 3 100
i <=100
真
假
s += 1.0 / i; i++;
#include <stdio.h> main() {
int i = 1; float s = 0;
while( i <= 100 ) { s += 1.0 / i; i++; }
printf( "s=%f\n", s ); }
{ a = a + 1; b = b + 1;
}
例如:a = 0;b = 0; for ( i = 1;i <= 10;i++ ) { a = a + 1; b = b + 1; }
6 循环结构程序设计
![6 循环结构程序设计](https://img.taocdn.com/s3/m/35a696c12cc58bd63186bdd1.png)
执行 循环 后面的语句
例如:1~100的累加 for(i=1;i<=100;i++)
sum=sum+i;
它相当于以下语句: i=1; 表达式1; while(表达式2) 表达式3;
第六章 6.3 for 语句
while (i<=100)
{ sum=sum+i; i++; }
3、 说明
三个表达式都可以是逗号表达式。
【例1】输入一系列整数,判断其正负号,当 输入0时,结束循环。
#include "stdio.h" void main() { int x; scanf(" %d ",&x);
输入数据,为第 一次判断做准备
判断是否结束 判断正负号
while(x!=0) { if(x>0) printf(" + "); else printf(" - "); scanf(" %d ",&x); }
第六章 循环结构程序设计
6.1 goto语句构成的循环
1、语句形式:
例如: goto label; …… 2. 在程序执行过程中,如果 label: …... goto 语句标号;
遇到goto语句,则程序执行 流程无条件地转向语句标号 后的语句继续执行。
语句标号用标识符 表示,它的定名规 则与变量名相同。
思考
求n!=1 × 2 × 3 × …n
累乘器赋初值
整数连乘结果一定 是整数,而本例中 结果数值相当大, 用long型都无法存 放,因此将存放累 乘结果的变量s定义 为double型。
第六章 6.3 for 语句
循环结构程序设计课件
![循环结构程序设计课件](https://img.taocdn.com/s3/m/b5a782bde009581b6ad9eb3d.png)
二
、
循环变量赋初值
FOR/NEXT
T 循环变量值
超过终值 ?
F
循
执行循环体
环
的
循环变量+步长值
执
行
顺 序
执行NEXT语句 的下一语句
1、循环终止条件: 循环变量的值超过终值。
FOR I=1 TO 5 STEP 2 PRINT I
NEXT I PRINT I END
I=1
T I>5? F
PRINT I
I=I+1
FOR I=1 TO 5 STEP 1 PRINT I
NEXT I
执行NEXT语句 的下一语句
一、FOR/NEXT 循环的结构
• FOR I=1 TO 5 STEP 1
•
PRINT I
• NEXT I
1、FOR(循环说明语句或循环起始语句)语句控制
循环次数:I为循环变量,初值为1,终值为5,
2、 3()8256=( )3 6528
作业
一、第74页:1、2(其中2题中的第5、6小题不做)
二、求S= 21 +22 +23+ 24+ 25+ ……+230
三、假设有一对兔子,从出生后三个月开始,每个 月都生一对小兔子。小兔子从出生后第三个月开 始生下一代小兔子。假设兔子只生不死,问10月 内每个月各有几对兔子?
3、小猴子第一天摘下若干个桃子,当即吃 掉一半,还不过瘾,又多吃了一个。第二 天早上又将剩下的桃子吃掉一半,双多吃 了一个。以后每天都吃前一天剩下的一半 加一个。到第10天早上猴子再想吃时,见 只剩下一个桃子了。问猴子第一天摘下多 少个桃子?
第6章 循环结构程序设计 ppt课件
![第6章 循环结构程序设计 ppt课件](https://img.taocdn.com/s3/m/57367a70f12d2af90342e642.png)
main() { int s=0,n=1;
loop1: if (n>100) goto loop2; s=s+n; n++; goto loop1; loop2: printf("S=%d",s); }
ppt课件
6
例2:统计从键盘输入一行字符的个数。
#include"stdio.h"
void main()
if (n>100) break; }
printf("s=%d\n",s);
} ppt课件
18
4. for语句中的三个表达式都可以是逗号表达式,即每个表 达式都可由多个表达式组成。
main() { int n,s; for(n=1,s=0;n<=100;n++) s=s+n; printf("s=%d\n",s); }
C语言不限制程序中使用标号的次数,但各标号不得重名。
goto语句的语义是改变程序流向,转去执行语句标号所标识
的语句。
ppt课件
4
用goto语句与if语句实现循环
形式1: loop1:
语句; if (表达式) goto loop1;
形式2: loop1:
if (表达式) goto loop2; 语句; goto loop1;
void main() { int s=0,n=1; while (n<=100) { s=s+n; n++; } printf("S=%d",s); }
void main() { int s=0,n=1; do { s=s+n; n++; } while (n<=100); printf(“s=%d",s); }
第06讲循环结构程序设计PPT课件
![第06讲循环结构程序设计PPT课件](https://img.taocdn.com/s3/m/6f15d9d116fc700aba68fc06.png)
s=s+t
循环初值: i=1, 循环终值: i->10
循环体:
t=t*i
PRINT “T=10!=“;t ,“s=“;
END 问:求:t=n!,如何改s ?
返回
2021问/2/11:求:s=1!+2!+雷3宏设!计+,4版!权+所5有!+……+10!
例4.使用EXIT FOR语句,强行退出循环。
功能:当条件为真,执行循环体,到WEND后再判断条件;否则条件为假,执 行WEND后面的语句。
说明: (1)<条件>可是关系型表达式或逻辑型表达式,甚至可是一个常数,QB将一切
非零的数都视作“真”。
(2) WHILE和WEND必须成对使用。
(3)程序运行时遇到死循环,可以用Ctrl+Break键,使之强制终止程序。
功能:先判断循环〈条件〉,当条件为真(WHILE) 或为假(UNTIL)时,执行〈循环体〉;否则,退 出循环。程序运行到LOOP时,返回到DO语句处, 继续判断条件.
实例: <实例6> <实例7>
2021/2/11
雷宏设计,版权所有
返回
例6.观察下列程序的运行结果。
程序为: CLS x=10 DO WHILE x>=0 PRINT x, x=x-3 LOOP END
BASIC提供的循环语句,可分为已知 循环次数的步长的时候得以终止。
2021/2/11
雷宏设计,版权所有
返回
循环结构流程图
(T) (F)
2021/2/11
雷宏设计,版权所有
返回
固定次数的循环语句(FOR…NEXT)
C语言-循环结构程序设计课件
![C语言-循环结构程序设计课件](https://img.taocdn.com/s3/m/b8a408caf71fb7360b4c2e3f5727a5e9856a27f3.png)
{
int i=1,sum=0;
while (i<=100)
{少
不能 复合语句
sum= sum+ i;
i++; }
不能丢,否则循环 永不结束
printf("sum=%d“,sum);
return 0;
}
6
5 . 1 用 while 语 句 实 现 循 环
• 要求输出 100 ~ 200 之间的能被 3 整除的数。
n+ + ; } return 0;
}
7
思考和总结:循环必须包含的几个要素?
int main()
表达式1:初始化
{
int i=1,sum=0;
表达式2:判断循环是 否继续的条件
while (i< =100) {
✓循环变量初始化
sum= sum+ i; i++; } printf("sum=%d“, sum);
l一个表达式内可以包含多 个,用逗号隔开。
(1) for(sum=0, i=1; i<=100; i++) sum=sum+i;
(2) int i,j; for(i=0,j=100 ; i<=j; i++,j-- ) k=i+j;
l表 达 式 可 省 略 ( 1 至 3 ) , 但“; ”不能省略。
编程思路:
① 对100到200之间的每一个整 数进行检查
② 如果能被3整除,输出,否 则不输出
③ 直到200为止
# include< stdlib. h> int main( )
{
int n=100; while( n< = 2 0 0 ) {
C语言循环结构程序设计 ppt课件
![C语言循环结构程序设计 ppt课件](https://img.taocdn.com/s3/m/ab36c6d3f78a6529657d53a3.png)
void main() {
int i,sum=0;
设置循环 条件
for(i=1;i<=100;i++)
{
sum+=i;
}
printf("Sum = %d\n",sum);
}
程序的运行结果:
Sum = 5050
2021/3/26
C语言循环结构程序设计 ppt课件
9
C语言循环结构程序设计
说明:
(1) for语句的一般形式中的“表达式1”可以省略,此 时应在for语句之前给循环变量赋初值。注意省略表 达式1时,其后的分号不能省略。如 for(;i<=100;i++) sum=sum+i; 执行时,跳过“求解表达式1”这一步,其他不变。
while (表达式) 语句 当表达式为非0值时,执行while语 句中的内嵌语句。其特点是:先判断 表达式,后执行语句。
2021/3/26
C语言循环结构程序设计 ppt课件
23
例:用while循环求1~100的和。
#include <stdio.h> void main() {
设置循环条 件
int i=1,sum=0;
}
程序的执行结果:
Sum = 5050
2021/3/26
C语言循环结构程序设计 ppt课件
28
C语言循环结构程序设计
4.5.1 for语句和while语句
for循环语句比较灵活,可以将循环控制变量初始、循环变量修改和循环 控制表达式集中在一个for语句中,比较适合循环次数可预测的情况。 while循环适合不通过递增或递减循环控制变量的循环。
说明:
C语言第06章 循环结构程序设计PPT课件
![C语言第06章 循环结构程序设计PPT课件](https://img.taocdn.com/s3/m/b15cc4045022aaea988f0fc1.png)
main() { int i,sum; sum=0; for (i=1;i<=100;i++) sum=sum+i;
printf("\nsum=%d",sum); }
main() {int i,sum=0;
i=1; while(i<=100) {sum=sum+i;
定义i=1,s=1,m,n=1
n>=10
m=1.0/i*s ; sum=sum+m;
i=i+2; s=-s;n++;
输出sum
本程序的N-S框图
求s=1-1/3+1/5-…前10项之和.
##iinncclluuddee““ssttddiioo..hh""
求s=1-1/3+1/5-…前 q项之和
mmaaiinn(())
6-1.c
1+2+3+4+5+6的和
main() { int i=1,sum=0; while(i<=6) {
sum=sum+i;
i=i+1; /*i++;*/
} printf("%d",sum); }
注意:1.内嵌语句可以是复合语句。 2.在循环体中要使循环变量变化的语句。
求1+2+3+… +n的和
n=score/100;
switch(n)
case7:
case6: printf("\tA\n"); break;
Python程序设计 第4章 循环结构程序设计(第6次课)
![Python程序设计 第4章 循环结构程序设计(第6次课)](https://img.taocdn.com/s3/m/5ccef7c0b9f3f90f76c61be6.png)
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
第六章 循环结构程序设计
![第六章 循环结构程序设计](https://img.taocdn.com/s3/m/b0bc95ec0975f46527d3e12f.png)
6-1.比较while语句、do–while语句和for语句的异同。
答:(1)while语句、do-while语句用于条件循环,for语句用于计数循环。
(2)while语句、for语句是先判断循环条件,后执行循环体,如果循环条件一开始就不成立,则循环体一次也不被执行;而do-while语句是是先执行循环体,后判断循环条件,所以循环体至少被执行一次。
(3)知道循环的次数可选用for语句实现循环,不知道循环的次数可选用while语句或do-while语句实现循环.(4)一般而言,三种循环语句可等价实现.6-2 仔细阅读下面的程序,指出程序的运行结果.#include<stdio.h>void main(){ int i;for(i=0;++i;i<5){ if(i==3){printf("%d\n",++i);break;}printf("%d\n",++i);}}答:24思考:语句“for(“i=0;++i;i<5”)在编译时为何会给出语法警告错误?当将其改为“for(i=0;i<5;++i)”时,运行结果又将如何?6-3 仔细阅读下面的语的程序,指出程序的运行结果。
#include"stdio.h"void main(){ int i, a=0;for(i=1;i<=5;i++){do{i++;a++;} while(i<3);}i++;printf("a=%d,i=%d",a,i);}答:a=3,i=7思考:在for循环中嵌套着do-while循环,那么do-while循环中对i的修改会对for循环产生影响吗?6-4编写程序,用1000个单词”computer”填充屏幕,每行60个 .解:#include<stdio.h>void main(){ int i;for(i=1;i<=1000;i++){ printf("computer.");if(i%60==0)printf("\n");}}思考:在for循环中,”if(i%60==0)printf(“\n”);”语句的作用是什么?没有此语句将会是什么状况?6-5输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。
《循环结构程序设计》课件
![《循环结构程序设计》课件](https://img.taocdn.com/s3/m/3b7cf48e59f5f61fb7360b4c2e3f5727a5e9248e.png)
for循环结构的执行流程
总结词
详细描述for循环结构的执行流程,包括初始化、条件判断、循环体执行和更新四个步 骤。
详细描述
for循环结构的执行流程包括四个步骤。首先,进行初始化操作,设置循环变量的初始 值。然后,进行条件判断,检查是否满足循环继续的条件。如果条件满足,执行循环体 内的语句。最后,进行更新操作,修改循环变量的值,然后再次进行条件判断,重复执
while循环结构的注意事项
总结词
关键点全覆盖
详细描述
使用while循环结构时需要注意以下几点,首先,条件表达式必须保证在某个时刻变为假,否则循环 将无限进行下去;其次,在循环体内应包含使条件表达式最终变为假的操作;最后,应避免在循环体 内使用使条件表达式永远为真的操作。
04
do-while循ห้องสมุดไป่ตู้结构
do-while循环结构的语法
总结词:简洁明了
详细描述:do-while循环结构的语法包括"do"关键字、"while"关键字、循环体和条件表达式。语法 格式为"do {循环体} while (条件表达式);"
do-while循环结构的执行流程
总结词:逻辑清晰
详细描述:do-while循环结构的执行流程是先执行一次循环 体,然后判断条件表达式,如果条件表达式为真,则再次执 行循环体,否则退出循环。循环体会一直执行直到条件表达 式不再满足为止。
循环结构的应用实例
用for循环计算1到100的累加和
总结词:简单明了
详细描述:通过使用for循环,我们可以轻松地计算从1到 100的所有整数的累加和。在每次循环中,我们将当前数 字添加到总和中,直到我们达到100。
第六讲 循环结构程序设计
![第六讲 循环结构程序设计](https://img.taocdn.com/s3/m/f3dfcb7001f69e31433294dc.png)
图6 -1
循环语句, 的值, 【例6.1】利用 】利用while循环语句,计算 循环语句 计算1+1/2+…+1/50的值, 的值 并打印计算结果。 并打印计算结果。 本题可看作数列{a 的求和, 本题可看作数列 k = 1/k | k=1,2,…,50 }的求和,累加求和的 , , , 的求和 通项为: 通项为:sum+1/k—>sum,所以,可以用如下伪语言算法描述。 ,所以,可以用如下伪语言算法描述。
输出sum 输出
说明
1. while语句中循环体最少执行零次、最多执行无穷次,即 语句中循环体最少执行零次、 语句中循环体最少执行零次 最多执行无穷次, 死循环” “死循环”。 2. 如果循环体是一个空语句,表示不执行任何操作。 如果循环体是一个空语句,表示不执行任何操作。 3. 循环体中应有使循环趋于结束的语句。例如,在[例6.1] 循环体中应有使循环趋于结束的语句。例如, 例 循环结束条件是i<=50, 循环体中语句 ; 将最终导致 循环体中语句i++; 中 , 循环结束条件是 i<=50的发生。 如果无此语句 , i值始终不变, 则该循环将永 的发生。 值始终不变, 的发生 如果无此语句, 值始终不变 远执行下去,这种情况称为死循环。例如, 远执行下去,这种情况称为死循环。例如, while(1) sum + = i; ; 就是一个死循环。 就是一个死循环。
6.1 当型循环 当型循环while语句 语句
当型循环又叫while循环,其一般句型为: 循环,其一般句型为: 当型循环又叫 循环 while( 表达式 ) { 循环体语句; 循环体语句; } 其中: 循环体语句, 可以是一条语句, 其中 : 循环体语句 , 可以是一条语句 , 但通常 为复合语句。 为复合语句。 while循环执行时,先处理表达式,表达式的值 循环执行时,先处理表达式, 循环执行时 循环体语句被执行, 为“真”时,循环体语句被执行,然后再去判表达 式的值,如果表达式的值仍为“ 式的值,如果表达式的值仍为“真”时,则再次执 行循环体语句;如果表达式值为“ 行循环体语句;如果表达式值为“假”,则退出循 如图5-1所示 所示。 环,如图 所示。 假 表达 式 真 循环体语句
循环结构程序设计PPT课件
![循环结构程序设计PPT课件](https://img.taocdn.com/s3/m/bcee4411ad51f01dc381f154.png)
2020/12/29
3
6.1 问题的提出
利用前面所学的知识,同学们已经可以编程解决 以下问题
计算班级3名学生的总成绩及平均成绩 计算sum=1+2+3+4+5 如果在第1题里是一个班级30名同学的成绩呢? 如果在第2题里是计算sum=1+2+3+…+n-1+n (n=1000)呢?
2020/12/29
}
2020/12/29
19
6.4 for语句
一般形式 for([表达式1];[表达式2];[表达式3]) 语句 此处无;
for
执行流程
表达式1
表达式2
假(0)
真(非0)
语句
执行表达式1 当表达式2为真时
do 语句
while(表达式);
do
此处有;
真(非0)
语句
语句
当表达式为真时
while
表达式
假(0)
特点:先执行循环体内语句,后判断表达式
2020/12/29
15
100
例:用do~while循环求 n n 1
#include <stdio.h> int main() { int n,sum=0;
{ int i,sum=0;
{ int i,sum=0;
scanf("%d",&i);
scanf("%d",&i);
do
while(i<=10)
{ sum+=i;
{ sum+=i;
i++;
i++;
}while(i<=10);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
program he; var n,i,sum:integer; begin write(‘n='); readln(n); sum:=0; i:=1; repeat sum:=sum+i; i:=i+1; until i>n; writeln ('sum=',sum); readln end.
注意
当循环和直到循环的区别
1、在repeat语句的结构中,布尔表达式求 值在计算操作之后,而while语句中,布尔 表达式求值在计算操作之前,也就是说 repeat至少执行一次循环体。
2、while语句的成分语句只能是一个语句。 因此,当重复动作包含多个语句时,要用 begin和end ,使它变成一个复合语句。 而repeat语句的保留字repeat和until已经 起语句括号作用,可以包含多个语句而无 须begin和end。
作业
1、编写一个译码程序,把一个英语句子译成数字 代码。译码规则是以数字1代替字母A,数字2代 替字母B,……,26代替字母Z,如遇空格则打印 一个星号‘*’,英文句子以‘.‘结束。 2、五个好朋友聚在一起,第一个带了很多糖块送 给大家,他使每人的糖块在原来基础上翻了一倍。 接着第二个人也同样向每人发糖块,他也使每人 的糖块翻了一倍。然后第三、第四、第五个人都 一照此办理。奇怪的是经过这样互赠糖块之后, 发现每个人的糖块都一样是32块,请问各个朋友 原先各有多少块糖?
练习
输入一整数A,判断它是否质数。(提示:若 从2到A的平方根的范围内,没有一个数能整除 A,则A是质数。) 求水仙花数。所谓水仙花数,是指一个三位数 abc,如果满足a^3+b^3+c^3=abc,则 abc是水仙花数。 计算1—1000之间能同时被3和5整除的整数的 和。
练习
分析:设母鸡I只,公鸡J只,则小鸡为90-I-J只, 则15*I+ 10* J+(90-I-J)*5=500,显然一个方 程求两个未知数是不能直接求解。必须组合出所有 可能的I,j值,看是否满足条件。这里I的值可以 是0到33,J的值可以0到50。
源程序
programr ex4_6; var i,j,k:integer; begin for i:=0 to 33 do for j:=0 to 50 do begin k:=90-i-j; if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5); end; end.
作业
1、输入一整数A,判断它是否质数。(提示: 若从2到A的平方根的范围内,没有一个数能整 除A,则A是质数。) 2、已知四位数3025有一个特殊性质: 它的前 两位数字30和后两位数字25的和是 55, 而55 的平方刚好等于该数(55*55=3025). 试编一 程序打印所有具有这种性质的四位数. 3、如果一个数从左边读和从右边读都是同一个 数, 就称为回文数. 例如: 686就是一个回文数. 编程找出所有既是回文数又是素数的三位数.
while语句的执行过程为:
①判断布尔表达式的值,如果其值为真,执行 步骤2,否则执行步骤4; ②执行循环体语句(do后面的语句); ③返回步骤1; ④结束循环,执行while的下一个语句。
这里while和do为保留字,while语句的特点是先判 断,后执行。 当布尔表达式成立时,重复执行do后 面的语句(循环体)。 while语句用于“当满足某一条件时进行循环” 的情况,为了能使while重复能终止,循环前应给 循环控制变量赋上适当的值,循环体中一定要有影 响布尔表达式的操作,否则该循就是一个死循环。
求0-100这间所有奇数的积。 编程计算11+22+33+……+99的值。 宰相的麦子:相传古印度宰相达依尔,是国际象 棋的发明者。有一次,国王因为他的贡献要奖励 他,问他想要什么。达依尔说:“只要在国际象 棋棋盘上(共64格)摆上这么些麦子就行了:第 一格一粒,第二格两粒,……,后面一格的麦子 总是前一格麦子数的两倍,摆满整个棋盘,我就 感恩不尽了。”国王一想,这还不容易,刚想答 应,如果你这时在国王旁边站着,你会不会劝国 王别答应,为什么?
说明
①循环控制变量必须是顺序类型。例如,可以是 整型、字符型等,但不能为实型。 ②循环控制变量的值递增或递减的规律是:选用 to则为递增;选用downto则递减。
③循环体可以是一个基本语句,也可以是一个复 合语句。 ④循环控制变量的初值和终值一经确定,循环次数 就确定了。但是在循环体内对循环变量的值进行修 改,常常会使得循环提前结束或进入死环。建议不 要在循环体中随意修改控制变量的值。
程序改进
program ex4_5; var t,s:real; i,j,n:integer; begin S:=0;t:=1; for n:=1 to 10 do begin t:=t*n; S:=S+t; end; writeln('s=',s:0:0); end.
例
一个炊事员上街采购,用500元钱买了90只鸡, 其中母鸡一只15元,公鸡一只10元,小鸡一只5 元,正好把钱买完。问母鸡、公鸡、小鸡各买多 少只?
a:=10;b:=50; for k:=a to b do begin k:=k+1;{这一句是错误的!!!!!} writeln (k); end;
当循环初值或循环终值中包含变量时,允许在循 环体内改变这些变量的值,并不改变原定的循环 次数。 例: a:=1;b:=10; for i:=a to b do begin a:=5;b:=4; end; 在上面例子中,A,B的值在循环的内部发生了变 化,但并不影响循环的次数,依然是10次。
步长型循环(For语句)
第一种形式的for 语句是递增循环。首先将初值赋给控制变量,接 着判断控制变量的值是否小于或等于终值,若是,则执行循环体, 在执行了循环体之后,自动将控制变量的值改为它的后继值,并重 新判断是否小于或等于终值。当控制变量的值大于终值时,退出for 循环,执行for语句之后的语句。 第二种形式的for 语句是递减循环。首先将初值赋给控制变量,接 着判断控制变量的值是否大于或等于终值,若是,则执行循环体, 在执行了循环体之后,自动将控制变量的值该为它的前趋值,并重 新判断是否大于或等于终值。当控制变量的值小于终值时,退出for 循环,执行for语句之后的语句。
程序
Var m,n,x:integer; Begin Write(‘Please input 2 numbers:’) Readln(m,n); If m>n then x:=n else x:=m; While (n mod x<>0) or (m mod x<>0) do begin x:=x-1; End; Writeln(x); End.
输出1-100之间的所有偶数。
var i:integer; begin for i:=1 to 100 do if i mod 2=0 then write(i:5); end.
思考:还有什么办法完成?
求N!=1*2*3*…*N ,这里N 不大于10。
var
n,i : integer;{i为循环变量} S : longint;{s作为累乘器} begin write(‘Enter n=’);readln(n);{输入n} s:=1; for i:=2 to n do{从2到n累乘到s中} s:=s*i; writeln(n,'!=',s);{输出n!的值} end.
repeat-until语句(直到循环)
repeat 语句用于"重复执行循环体,一直 到指定的条件为真时为止"。语法格式为: repeat 语句1; …… 语句n; until 布尔表达式; 其中Repeat、until是Pascal保留字, repeat与until之间的所有语句称为循环体。
求sum=1+2+3+......+n 的和
当循环和直到循环的区别
3、repeat语句中,当布尔表达式为true时 结束循环,而while语句中,是当表达式为 false时才结束循环。当描述由计算操作后 的情况确定重复是否继续进行的计算时, 通常用repeat语句描述。
简单练习
求1-100之间所有数的和。 求0-100之间所有奇数的积。 输入本班50个同学的某科成绩,求平均分数。
其作用是,当布尔表达式的值为 TRUE时, 才会运行语句序列(循环体),否则循环将 不会被执行,即从循环头部就退出,而转向 执行 END后的语句2。
程序框图
从框图中可以看出, 要使用循环语句时, 必须要确定循环体 及条件(布尔表达 式)两个重要因素, 亦即首要考虑的是: 我要重复执行哪些 语句,我要重复到 什么时候为止!
程序
program ex4_5; var t,s:real; i,j,n:integer; begin S:=0; for n:=1 to 10 do begin t:=1; for j:=1 to n do t:=t*j; S:=S+t; end; writeln('s=',s:0:0); end.
作业
1、“百钱买百鸡”是我国古代的著名数学题。题 目这样描述:3文钱可以买1只公鸡,2文钱可以 买一只母鸡,1文钱可以买3只小鸡。用100文钱 买100只鸡,那么各有公鸡、母鸡、小鸡多少只? 2、输入一个正整数N,把它分解成质因子相乘的 形式。 如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19 (提示:设因子为I,从2开始到N,让N重复被I 除,如果能整除,则用商取代N,I为一个因子; 如果不能整除,再将I增大,继续以上操作,直到 I等于N。)