第10讲 do-while语句 for语句 循环结构的嵌套
P54例5。4 该数列变化的规律: 除第一、二项外,后面的各项值为前面两项之和; 位置号:1 2 3 4 5 6 7 数列: 1 1 2 3 5 8 13 f1+f2--->f3 f1+f2--->f3
f1+f2--->f3
实际上只要试除到,就已经可以说明x是否为素数了。 这是因为如果小于等于的数都不能除尽x,则大于的数也 不可能除尽x。试除到,可以减少循环次数,提高程序的 运行效率。 程序代码如下: #include "math.h" main( )
{
int
i, x, yes, a;
printf("Enter integer number : "); scanf ("%d",&x);
小组讨论:
1、程序5-3:求输入的某个数是否为素数。若是, 输出YES,若不是,输出NO。
素数是指那些大于1,且除了1和它本身以外不能被其 他任何数整除的数。如2、3、5、7、11、……都是素数; 4、6、8、9、……则不是素数。 为了判断某数x是否为素数,最简单的方法是用2、3、 4、…x-1,这些数逐个去除x,看能否除尽,只要能被其 中某一个数除尽,x就不是素数;否则,若不能被任何一 个数除尽,x就是素数。
for语句的常规使用方法例 P 56例5.5
“表达式1”是逗号表达式 main() /*程序1 */ 做一些初始工作,准备累加! 给循环变量赋初值 { int i, sum; 判断循环是否结束! for (i=1,sum=0; i<=100; i++) sum= sum + i ; printf("sum=%d\n", sum); 使得循环能够趋于结束。 }
试将P51例5。1改为do-while语句结构
注意点:P54 do-while语句和while语句的区别在于dowhile是先执行循环体语句,后判断循环条件, 因此do-while至少要执行一次循环体。
用do-while语句改写例5.3的程序
题目:求1+2+3+…+100的值
main() { int i, sum; i=1; sum=0; do { sum= sum+i; i++; 这里一定要 }while(i<=100); 有一个分号 printf("sum=%d\n", sum); } 注意:N_S流程图的直到型循环结构的循环
main() /*程序5 */ 循环体语句是一个空语句! { int i, sum=0; for (i=1; i<=100 ; sum=sum+i++ ); printf(“sum=%d\n”, sum); }
注意在循环体语句之前不能有分号
main() main() { sum=0; { int i, int i, sum=0; for i<=100; i++) ; for (i=1 ; (i=1 ; i<=100; i++) ; sum= ; sum= sum + isum + i ; printf("sum=%d\n", printf("sum=%d\n", sum);sum); /*前面两个程序的执行过程,结果 } } =101*/ main() { int i, sum=0; for (i=1 ; i<=100; i++); sum= sum + i ; printf("sum=%d\n", sum); 即:循环体语句是一个空语句! }
for语句的常规使用方法: “表达式1”用来给循环变量赋初值或做一些初始 工作; “表达式2”用来作为判断循环是否结束的条件; “表达式3”用来修改循环变量的值,使得循环能 够趋于结束。
例如:
for(k=0; k<10; k++) printf("*");
以上for循环在一行上输出10个“*”号。
例5.5 循环嵌套的应用--输出九九乘法表。
在编写程序时,循环嵌套的书写要采用缩进形 式,如在例5.5的程序中,内循环中的语句应该比 外循环中的语句有规律地向右缩进2~4列。 main ( ) {int i, j; for(i=1; i<=9; i++) { for(j=1; j<= i; j++) printf("%1d*%1d =%2d ", i, j , i*j); printf("\n"); } }
main( ) {float r, s ,pi=3.1416; for(r=0.5; r<=2.5; r+=0.5 ) {s=pi*r*r ; printf("r=%3.1fs=%f\n", r, s); } } 试改为:非常规for 结构
5.5 循环结构的嵌套
在一个循环语句的循环体内又完整地包含了另一 个循环语句,称为循环嵌套。循环嵌套的书写采用 缩进形式.
例5.4 编程计算多个圆的面积
本例要求计算5个不同半径的圆面积, 且半径值的变化是有规律的,从0.5mm 开始按增 mm的规律递增,可直接用半径r 作为for语句的循环控制变量,每循环一 次使r的值增0.5 ,直到r大于2.5为止。
变量r具有双 重功能,它既 是循环控制变 量,又是圆的 半径值,它的 值由0.5变化到 2.5,循环体共 执行5次,当r 增到3.0时,条 件表达式 r<=2.5的值为 0,从而退出循 环。
第十讲
while语句、do-while语句、for 语句 循环结构的嵌 套
5.1 while循环语句
由while语句构成的循环也称”当”循 环。 while循环的一般形式如下: while(表达式) 循环体语句
图5.1 while循环流程图
while语句的执行过程是: 先计算while表达式的值,当表达式的值为非零时, 便执行循环体语句,之后再计算该表达式的值,由此 构成循环,直到有一次求得表达式的值为零时才结束 循环,并继续执行循环体语句之外的后续语句。
3)从以上求π的公式来看,不能决定n的最终值应该是多少; 但可以用最后一项t(1/n)的绝对值小于10-6来作为循环的 结束条件。 程序如下:
#include "math.h" 包含 math.h文件*/
main( )
/*调用fabs函数时要求
{
int
s;
float n, t, pi; t=1.0; 值,初值为1 */ pi=0; pi中存放所求的π的值,初值为0*/ n=1.0; 每项分母*/ /*t中存放每项的 /* /*n中存放
yes=1; i=2; a=(int)sqrt ( (double) x); while( yes && i<=a) { } printf("%d ",x); if ( yes ) else } printf("YES\n"); printf("NO\n"); if(x%i== 0) yes=0;
说明:(1)while语句中的表达式可以是任意合法的C表达 式。 (2)如果循环体语句是复合语句,一定要用{ }括起来。 (3) 在循环体语句中应该包含能够使循环趋于结束的 操作,以避免出现死循环。
例5.1 编程求1+2+3+…+100的值。
这是一个求100个数的累加和问题。所加的 加数从1变化到100,因此我们可以在循环体中 设计一个整型变量i,使它的初值为1,每循环 一次使i的值增1,一直循环到i的值超过100为 止,用这个办法就解决所需的加数问题。 要解决求累加和的问题,还要再设计一个变 量sum用来存放这100个数的和值,先求0+1的和 并将其放在sum中,然后把sum中的数加上2再存 放在sum中,依次类推。 在这里,sum累加的过程要放在循环体中, 由计算机来判断所加的数是否已经超过100。
例5.3程序,求1+2+3+…+100的值
main() { int i, sum; i=1; sum=0; while(i<=100) {sum= sum + i ; i++; } printf("sum=%d\n", sum); } 程序运行后的输出结果: sum=5050
思考:P51例5.1 sum=sum+i*i sum<1000 自己试写出该程序
main() /*程序4 */ for语句的非常规使用方法2 { int i=1, sum=0; 三个表达式都被省掉了! 分隔符“ ;”不能省。 for ( ; ; ) {sum= sum + i++ ; 由于没有了表达式2, if i>100 goto pend; 用goto语句结束循环。 } pend: printf(“sum=%d\n”, sum); }
s=1.0; /*s中存放每项分 子,其值按公式在1和-1之间变化*/ while ( fabs(t)>=1e-6) { pi=pi+t;
n+=2.0;
s= -s;
*/
/*改变符号
t=s/n;
} pi=pi*4; printf("pi=%f\n",pi); }
程序执行后输出以下结果:
pi=3.141397
程序5-2:用π/4=1-1/3+1/5-1/7+1/9 -…公式 求π的近似值,直到最后一项的绝对值小于10-6为止。
本题的基本算法也是求累加和,但比例5-1稍为复杂。 与例5-1比较,不同的是: (1)用分母来控制循环次数,若用n存放分母的值, 则每累加一次n应当增2,每次累加的数不是整数,而是 一个实数,因此n应当定义成float类型。 (2)可以看成隔一项的加数是负数,若用t来表示相 加的每一项,因此,每加一项之后,t的符号应当改变, 这可用交替乘1和-1来实现。
C语言循环语句课件四章
Page 14ຫໍສະໝຸດ while语句(当型循环)
❖例 求自然数1~10之和。
▪ 分析:本题需要用累加算法,累加 过程是一个循环过程,可以用 while语句实现。
▪ 流程图
开始
sum=0 i=1
i<=10 false
true sum=sum+i
i=i+1
输出sum
结束
Page 15
while语句(当型循环)
▪ 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例 如6=1+2+3
8. 求水仙花数:是指一个n(>=3)位数字的数,它等于每个数 字的n次幂之和。
9. 输入两个正整数m和n,求其最大公约数和最小公倍数。
Page 29
3.求1~599中能被3整除,且至少 有一位数字为5的所有整数。
❖ 判断a、b、c中是否有5:将1~599中三位整数i分 解成个位、十位、百位,分别存放在变量a、b、 c中。然后判断这三个变量是否含5。将三位整数i (设i=513)分解成个位、十位、百位的方法是: c=i/100; //百位 b=i%100/10; //十位 a=i%100%10; //个位
❖ 流程图
❖ 注意:在循环体中,一般应该 包含改变条件表达式的语句。
语句
true 表达式
false
Page 19
do…while语句(直到型循环)
❖例 用do…while语句求自然数 1~10之和。
▪ 分析:本题需要用累加算法,累加 过程是一个循环过程,可以用 do…while语句实现。
▪ 流程图
❖ 表达式1和3可以是简单表达式,也可以是逗号表 达式
▪ for(i=0,j=100;i<=j;i++,j--) k=i+j;
循环结构
• Do-Loop语句 语句 • For-Next循环语句 - 循环语句 • Exit do语句 语句 • 循环嵌套
பைடு நூலகம் 循 环 结 构
例:
计算1 100的奇数和。 计算1-100的奇数和。 的奇数和
定义一个变量Sum来存放 来存放1-100的奇数和 的奇数和. 定义一个变量 来存放 的奇数和 Sum=1+3+5+7+9+…+97+99 =4+5 +7+9+…+97+99 =9+7+9+…+97+99 =16+9+…+97+99 =25+…+97+99 =……. 循环语句1: 循环语句 : 循环语句2: 循环语句 : i=1:Sum=0: 循环语句3: 循环语句 i=1:Sum=0 Do while i>100 For until 100 step 2 Do i=1 to i<=100 Sum=Sum+i Sum=Sum+i i=i+2 Next i i=i+2 Loop Loop 多次重复相同的 操作
Do…Loop循环语句 循环语句
-----用于控制循环次数未知 用于控制循环次数未知
形式1:条件前置 形式 条件前置 Do While |Until [语句块 语句块1] 语句块 [Exit Do] [语句块 [语句块2] 语句块2] Loop <条件表达式 条件表达式> 条件表达式
形式2: 形式 :条件后置 Do 语句块 [Exit Do 语句块] 语句块 Loop { While|Until} <条件表达式 条件表达式> 条件表达式
编程术语 循环
编程术语循环全文共四篇示例,供读者参考第一篇示例:循环(Loop),是编程中非常常见的概念,用来反复执行一段指定的代码,直到满足某一条件为止。
循环结构使得程序能够更加高效地处理重复性的任务,同时也使得程序更加灵活和易于扩展。
在编程中,循环通常分为两种类型:条件循环和计数循环。
条件循环是指根据条件来确定循环的执行次数,而计数循环是指根据指定的次数来确定循环的次数。
条件循环通常采用while循环实现,其基本语法为:while(条件表达式) { 循环体}。
当条件表达式为真时,循环体会一直执行,直到条件表达式变为假。
下面是一个简单的while循环的示例:```int count = 0;while(count < 5) {cout << count << endl;count++;}```在上面的示例中,循环会反复输出count的值,直到count的值大于等于5时停止。
在上面的示例中,do-while循环会先输出0,然后再根据条件表达式判断是否继续执行下一个循环。
除了条件循环,计数循环也是非常常见的。
计数循环通常采用for 循环实现,其基本语法为:for(初始化语句; 条件表达式; 更新语句) { 循环体}。
for循环的执行过程是:先执行初始化语句,然后判断条件表达式是否为真,如果为真则执行循环体,然后执行更新语句,再次判断条件表达式是否为真,直到条件表达式为假时停止循环。
例如:在上面的示例中,for循环会输出从0到4的五个数字。
循环结构的作用不仅仅是为了反复执行一段代码,还可以为程序增加灵活性。
通过循环结构,可以让程序自动处理大量重复性的任务,从而提高程序的效率。
在处理数组、列表、字符串等数据结构时,循环结构可以使得程序更加简洁和易于理解。
循环结构还可以用来实现递归算法,解决一些复杂的问题。
循环结构也可能带来一些问题。
如果循环条件设置不当,可能导致死循环,使得程序陷入无限循环状态,造成系统崩溃。
c语言的三种结构
c语言的三种结构
作为一种程序设计语言,C语言包含了三种基础的控制结构,分别是顺序结构、选择结构和循环结构。
顺序结构是最基本的程序结构,程序会按照编写的顺序依次执行语句。
就像我们日常生活中做事情的步骤一样,编写程序也需要有顺序。
例如,我们在编程时,首先需要定义变量,然后将值赋给变量,最后再运行程序,这个过程就是一个典
型的顺序结构。
选择结构是根据条件来确定执行哪部分代码,也就是具有选择性的执行语句。
典型的选择结构语句有if语句、switch语句。
其中,if语句是最基本的选择结构,
它的作用就是来决定程序是否执行某个语句。
而switch语句可以用来实现多重选择,相比if语句可以处理的情况更多。
循环结构则是程序中常见的一种结构,它能使程序反复执行某段代码直到满足停止的条件。
在C语言中,常见的循环结构语句有for语句、while语句、do-while 语句。
for语句是最基本的循环结构,它和while语句的区别在于,for语句在循环
开始前就确定了循环的次数,而while语句则是在每次循环的时候都会检查循环条件。
而相比于while语句,do-while语句至少会执行一次,即使条件在一开始就不
满足。
总的来说,顺序结构、选择结构和循环结构是C语言中的三种关键的控制结构,通过它们组合与嵌套,可以实现各种复杂的程序功能。
dowhile语句for语句循环结构的嵌套
在编写程序时,循环嵌套的书写要采用缩进形 式,如在例5.5的程序中,内循环中的语句应该比 外循环中的语句有规律地向右缩进2~4列。 main ( ) {int i, j; for(i=1; i<=9; i++) { for(j=1; j<= i; j++) printf("%1d*%1d =%2d ", i, j , i*j); printf("\n"); } }
for语句的常规使用方法: “表达式1”用来给循环变量赋初值或做一些初始 工作; “表达式2”用来作为判断循环是否结束的条件; “表达式3”用来修改循环变量的值,使得循环能 够趋于结束。
申博 申博官网 申博 sunbet官网
for语句的常规使用方法例
“表达式1”是逗号表达式 main() /*程序1 */ 给循环变量赋初值 做一些初始工作,准备累加! { int i, sum; 判断循环是否结束! for (i=1,sum=0; i<=100; i++) sum= sum + i ; printf("sum=%d\n", sum); 使得循环能够趋于结束。 }
main() /*程序5 */ 循环体语句是一个空语句! { int i, sum=0; for (i=1; i<=100 ; sum=sum+i++ ); printf(“sum=%d\n”, sum); }
注意在循环体语句之前不能有分号
main() main() { int i, sum=0; { int i, sum=0; for ; i<=100; for (i=1 ; (i=1 i<=100; i++) ; i++) ; sum= +i; sum= sum + isum ; printf("sum=%d\n", printf("sum=%d\n", sum);sum); } /*前面两个程序的执行过程*/ } main() { int i, sum=0; for (i=1 ; i<=100; i++); sum= sum + i ; printf("sum=%d\n", sum); } 即:循环体语句是一个空语句!
程序的基本结构-循环嵌套
10
任务1:系列*图形输出问题
11
系列*问题1:
任务分析
For i = 1 To 5 外循环表示总行数 For j = 1 To 5 内循环表示每行*的个数 Picture1.Print "*"; Next j
Next i
Picture1.Print
【特别提示】 输完一行*后要换行
12
系列*问题2:
任务分析
For i = 1 To 5 For j = 1 To __i__ Picture2.Print "*"; Next j Picture2.Print
Next i
13
循环嵌套的一般规律
For i = 1 To 5 For j = 1 To i Picture2.Print "*"; Next j Picture2.Print
Next i
22
任务2拓展:百钱买百鸡问题
今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值 钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?
23
任务分析
For i = 0 To 20
外循环表示公鸡的所有可能性
For j = 0 To 33 k = 100 - i - j
内循环表示母鸡的所有可能性 利用百鸡条件计算小鸡的数目
Next i
系列*问题5:
任务分析
For i = 1 To 5 For j = _5_t_o__1_s_t_e_p_-_1_ Picture5.Print "*"; Next j Picture5.Print
Next i
17
任务1:问题拓展
如果输出的“*”形状发生了变化,如何找规律? 如果输出的是有规律的数字,又如何修改代码?
第10讲 循环结构程序设计@(4学时)
OTHERWISE y=y+x ENDCASE ENDDO ? “0 ~ 100 之间的奇 数之和为:",y SET TALK ON RETURN
下一页
10
Visual Foxpro 程序设计
思考题:从0开始求奇数的累加和.若和小于250,则 结束程序的运行,并显示累加结果和已累加的奇数的 个数.
下一页
3
一、循环结构
循环结构则能够使某些语句或程序段重 复执行若干次。 如果某些语句或程序段需要在一个固定 的位置上重复操作,使用循环是最好的选 择。
上一页
Visual Foxpro 程序设计
下一页
4
三种循环控制语句
1
“当”型或条件型:
do while …enddo
2
for ….endfor
3
“指针”型或表文件扫描: scan…endscan
Байду номын сангаас
1+2+4+7+14+28=56=28×2
求 (1) [1,700]之间最大的红玫瑰数。
(2) [1,700]之间有多少个红玫瑰数。 算法分析: 利用穷举法用一个循环结构来求一个数N的所 有因子之和, 然后根据定义判断N是否为红玫瑰数. 改变N,在指定范围内重复执行“判断一个数是 否红玫瑰数
上一页
Visual Foxpro 程序设计
3 SCAN循环语句 (1)语句格式 SCAN [〈范围〉] [FOR 〈条件〉] [WHILE 〈条件〉] 〈命令组〉 EXIT] [LOOP] ENDSCAN (2)语句功能 SCAN语句执行时,首先将表记录指针移动到指定范 围内的第一条记录上,然后判断记录指针是否超过指定 范围以及该记录是否满足WHILE子句所描述的条件。若 记录指针超过指定范围或该记录不满足WHILE子句所描 述的条件,则结束扫描循环,执行ENDSCAN后面的语句
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!”);
循环ppt
5 几种循环的比较
for循环可以在表达式3中包含使循环趋于 结束的操作,甚至可以将循环体中的操作全 部放到表达式3中。因此for语句的功能更强 ,凡用while循环能完成的,用for循环都能 实现。 (3)用while和do-while循环时,循环变量初始 化的操作应在while和do-while语句之前完成 。而for语句可以在表达式1中实现循环变量 的初始化。
3 用for 语句实现循环 说明:
在逗号表达式内按自左至右顺序求解,整个逗号表达 式的值为其中最右边的表达式的值。如: for(i=1;i<=100;i++,i++) sum=sum+i; 相当于 for(i=1;i<=100;i=i+2) sum=sum+i;
3 用for 语句实现循环 说明:
while语句 do-while语句 for语句
循环的嵌套
几种循环的比较
break和continue语句
例题
1.用while语句实现循环
while语句用来实现“当型”循环结构。
一般形式:
while (表达式) {语句;} 当表达式为真(非0)时,执行 while语句中的内嵌语句。当表达式为 假时退出while循环。
2用do-while语句实现循环
do-while语句用来实现“直到型”循环结 构。 一般形式: do { 循环体语句;} while (表达式); 执行过程:先执行一次指定的循环体语 句,然后判别表达式,当表达式的值 为非零(“真”) 时,返回重新执行循 环体语句,如此反复,直到表达式的 值等于0为止,此时循环结束。
5 几种循环的比较
(1)四种循环都可以用来处理同一问题,一般情 况下它们可以互相代替。但一般不提倡用 goto型循环。 (2)在while循环和do-while循环中,只在while 后面的括号内指定循环条件,因此为了使循 环能正常结束,应在循环体中包含使循环趋 于结束的语句(如i++,或i=i+1等)。
讲解C++的dowhile循环和循环语句的嵌套使用方法
讲解C++的dowhile循环和循环语句的嵌套使⽤⽅法⽤do-while语句构成循环do-while语句的特点是先执⾏循环体,然后判断循环条件是否成⽴。
其⼀般形式为:do语句while (表达式);它是这样执⾏的:先执⾏⼀次指定的语句(即循环体),然后判别表达式,当表达式的值为⾮零(“真”) 时,返回重新执⾏循环体语句,如此反复,直到表达式的值等于0为⽌,此时循环结束。
可以⽤下图表⽰其流程。
【例】⽤do-while语句求1+2+3+ (100)#include <iostream>using namespace std;int main( ){int i=1,sum=0;do{sum=sum+i;i++;}while (i<=100);cout<<"sum="<<sum<<endl;return 0;}可以看到:对同⼀个问题可以⽤while语句处理,也可以⽤do while语句处理。
do while语句结构可以转换成while结构。
C++⼏种循环的⽐较:1) for和while以及do while这3种循环都可以⽤来处理同⼀问题,⼀般情况下它们可以互相代替。
2) while和do-while循环,是在while后⾯指定循环条件的,在循环体中应包含使循环趋于结束的语句(如i++,或i=i+1等)。
for循环可以在表达式3中包含使循环趋于结束的操作,甚⾄可以将循环体中的操作全部放到表达式3中。
因此for语句的功能更强,凡⽤while循环能完成的,⽤for循环都能实现。
3) ⽤while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。
⽽for语句可以在表达式1中实现循环变量的初始化。
循环的嵌套⼀个循环体内⼜包含另⼀个完整的循环结构,称为循环的嵌套。
内嵌的循环中还可以嵌套循环,这就是多层循环。
