循环结构算法举例

合集下载

c语言循环结构经典算法

c语言循环结构经典算法

c语言循环结构经典算法C语言循环结构是程序设计中常用的一种结构,通过循环可以重复执行一段代码,实现重复性的任务。

下面列举了10个经典的算法案例,每个算法都有其特定的应用场景和解决问题的方法。

1. 阶乘计算:计算一个数的阶乘,即该数与小于它的所有正整数的乘积。

通过循环结构可以逐步累乘,最终得到阶乘结果。

2. 素数判断:判断一个数是否为素数,即只能被1和自身整除的数。

通过循环结构可以逐一判断该数是否能被小于它的每个数整除,若能则不是素数。

3. 斐波那契数列:斐波那契数列是指从第3项开始,每一项都等于前两项之和。

通过循环结构可以逐一计算每一项的值,从而得到完整的斐波那契数列。

4. 最大公约数:求两个数的最大公约数,即能同时整除两个数的最大正整数。

通过循环结构可以从较小的数开始逐一判断能否同时整除两个数,找到最大的能整除的数即为最大公约数。

5. 最小公倍数:求两个数的最小公倍数,即能同时被两个数整除的最小正整数。

通过循环结构可以从较大的数开始逐一判断能否被两个数同时整除,找到最小的能被整除的数即为最小公倍数。

6. 简单排序:对一组数进行排序,使其按照从小到大或从大到小的顺序排列。

通过循环结构可以比较相邻的两个数的大小,若顺序不对则交换位置,直到整个序列有序。

7. 数字翻转:将一个正整数从高位到低位逆序排列。

通过循环结构可以依次取出每一位的数字,然后将其乘以相应的权重得到逆序后的结果。

8. 队列模拟:模拟队列的入队和出队操作,实现数据的先进先出。

通过循环结构可以不断接收用户的输入,并根据不同的指令执行相应的操作。

9. 栈模拟:模拟栈的入栈和出栈操作,实现数据的后进先出。

通过循环结构可以不断接收用户的输入,并根据不同的指令执行相应的操作。

10. 二分查找:在一个有序数列中查找指定的元素,通过循环结构可以不断缩小查找范围,直到找到目标元素或确定不存在。

以上是10个经典的C语言循环结构算法,每个算法都有其独特的解决问题的方法。

流程图(循环结构)

流程图(循环结构)

I←I - 1
N
?能 够 输 出
2:
开始 输入S I←S I←I - 1
当I 被 S整

N
Y
输出I
I >1
结束
例3 设计一个计算10个数的平均数的算法。
算法2
S1 S←0;
S7 A ← S/10 ;
S2 I←1;
S3 输入G;
S8 输出A ;
S4 S←S + G;
S5 如果I不大于5,重新执行 S3,否则算法结束.
T←1
I←2
T←T×I
I←I + 1
N
I>5
Y
输出T 结束
最后的结果 开始
i←0,Sum ← 0
i<6
N
Y
i←i+1
Sum ← Sum + i
输出Sum 结束
开始
i ← 0,Sum ← 0
i←i+1 Sum ← Sum + i N
i≥6 Y
输出Sum 结束
I←10
写 出 输
输入10
I←I - 1

当I 被 10整


N

Y

输出I


结束
?
?
是通少变
一过呢式
个 什 么 算 法
,
上 面 两 个 例 子 你 能
?
你 自 己 再 编 一 个 题
若 是
则 输 出 的
归目结
纳 出
试 试
果 是
这看多
: S 10,
开始 输入S I←S-1
当I 被 S整 除
Y
输出I 结束

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

C语言循环结构程序设计1
语句
3 while语句
例1:输出1~200中所有能被4整除的整数。
i=1 i<=200
i % 4==0 T 输出 i i++ F
#include <stdio.h> void main() { int i=1; while(i<=200) { if( i%4==0) printf(“%d,”,i); i++;
2 循环结构算法设计
例1:输出1~200中所有能被4整除的整数。
i=1 i<=200
i % 4==0 T 输出 i i++ F
2 循环结构算法设计
直到型循环结构设计 (1)赋初值 (2)执行循环操作的语句序列 (3)判断循环条件是否为真,是则转(2) 否则转(4) (4)结束循环
2 循环结构算法设计
执行语句 语句 执行表达式3
循环体
for语句等价于下列语句: 语句等价于下列语句: 语句等价于下列语句 表达式1; 表达式 ; while (表达式 ) 表达式2) { 语句; 语句; 表达式3; 表达式 ; }
执行for循环之后的语句
5 for语句
for语句使用最多的情况:
for(循环变量赋初值;循环条件;循环变量增量) 语句; 例如:for( i=1;i<100;i++ ) for( sum+=i; 注意:for语句后边括号中的三个表达式可以省略, 可是括号中的两个分号不能省略
5 for语句
3.省略表达式3 for(i=0;i<10; ) i的值不变,也是 sum+=i; 死循环
5 for语句
例2:求4的10次方 …… int a=1,b=4,i; for(i=0;i<10;i++ ) a=a*b; ……

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

算法语句(循环语句)

算法语句(循环语句)

P
N
Y
直到型循环
先执行 后判断
A
P
Y
N
先执行循环体,然后再检查条 件是否成立,如果不成立就重 复执行循环体,直到条件成立 退出循环。
问题1:设计计算1×3×5×……×99的 一种算法。(用当型循环结构)
当型循环
S1 T←1
开始 T←1 I←3
S2 I←3
S3如果I≤99,那么转 S4;否则转S6 S4 T←T×I
P(条件)
p
A(循环体)
Y
N
End While
•先判断后执行 •当P成立执行 循环
While
当型(while型)语句
P(条件)
A(循环体)
End While
说明:当计算机遇到 While 语句时,先判断条件的真 假,如果条件符合,就执行While与End While之间的 循环体;然后再检查上述条件,如果条件仍符合,再 次执行循环体,这个过程反复进行,直到某一次条件 不符合为止 . 这时,计算机将不执行循环体,直接跳 到End While语句后,接着执行End While之后的语句.
For I From “初值” To “终值” Step “步长”
循环体
End For
问题1:设计计算1×3×5×……×99的 一种算法。(用直到型循环结构)
直到型循环
S1 T←1
开始 T←1 I← 3 T←T×I I←I+2
S2 I←3
S3 T←T×I
S4 I←I+2
S5 如 果 I>99 , 那 么 转 S6 ; 否 则转S3 S6 输出T
I←I+2 T←T×I I≤99 N Y
S5 I←I+2,转S3

过程控制(3)--循环结构

过程控制(3)--循环结构

b=number%10 s=s+b
s=0
27
其他与取位算法有关

输入一个正整数,求
计算其中a的个数:20221中有3个2
逆序输出每一位数 逆序数 正序输出每一位数 输出100-400之间的水仙花数

是否为水仙花数:
一个小于等于三位数的整数,每一位的立方和就是数本身 四位数的整数,它的每个位上的数字的4次幂之和等于它 本身
二、循环语句比较(while、for 、do…while)
计数型循环可以用任何一种语句实现,for 语句最适合,结构清晰 标志型循环中如果标志量的获取和改变比 较复杂,不适合for语句 第一次可以不要判读循环条件的可以使用 do…while语句,第一次就有可能不执行的 不能用do…while语句,可以用while语句。

a+aa+……+a..aaa循环分析
循环控制要素 通项 初值
循环i从1到n 步长1
item=item*10+a sum=sum+item
item=0 sum=0
23
课堂练习

求1+1/2+1/3+……+ 1/n
24
常见编程错误
for(i=0,i<n,i++)sum+=i; for(i=0;i<n;i++);sum+=i; 初值设定
6

(2)算法设计
【算法】 1.输入n 2.和变量赋初值s=0 3.符号位赋初值 flag=1, 分母赋初值denominator=1 4.循环i从1到n,步长1 4.1计算累加项item item=flag*1.0/denominator 4.2累加到s s=s+item 4.3改变分母denominator = denominator +2 4.4改变符号位 flag=-flag 5.输出π值:4*s

第4章 循环结构(C++版)_第二节 while语句-2019-01-04

第4章  循环结构(C++版)_第二节  while语句-2019-01-04

【上机练习】
2.角谷猜想【1.5编程基础之循环控制18】 /ch0105/21/ :8088/problem_show.php?pid=1086 谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以 2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算 过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到1的过程输出来。 输入: 一个正整数N(N <= 2,000,000) 输出: 从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。 如果输入为1,直接输出"End"。 样例输入: 5 样例输出: 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 End
第二节 while语句
第2种方法也许更加常用(你再 最后,我们来更仔细地研究一下 也不用记住%d、%lf等恼人的占位符 输入输出。研究对象就是经典的“A+B” 问题:输入若干对整数,输出每对之和。 了): 假设每个整数不超过109,一共不超过 #include<iostream> 106个数对。 using namespace std; 第1种方法是: #include <cstdio> int main() { int a,b; while(scanf("%d%d",&a,&b)==2) printf("%d\n",a+b); return 0; } int main() { int a,b; while(cin >> a >> b ) cout << a+b <<endl; return 0; }

循环群的例子

循环群的例子

循环群的例子循环群是代数学中的一个重要概念,它在各个领域都有广泛的应用,如密码学、密码破解、编码理论等。

循环群是一种特殊的群结构,具有很多有趣的性质和特征。

下面我将列举一些循环群的例子,以帮助大家更好地理解和掌握这一概念。

1. 整数加法群(Z,+):这是最简单的循环群,它由所有整数构成,运算为加法。

对于任意整数n,我们可以用加法运算得到n的倍数,即n,2n,3n,……,形成一个循环群。

2. 整数乘法群(Z*,x):这是整数的乘法运算构成的循环群。

对于任意非零整数n,我们可以用乘法运算得到n的幂,即n,n^2,n^3,……,形成一个循环群。

3. 有限域的乘法群(F*,x):有限域是一种特殊的代数结构,它由有限个元素构成,并定义了加法和乘法运算。

其中乘法运算构成一个循环群,这个循环群通常被用于密码学中的椭圆曲线加密算法。

4. 复数单位根群(U(n)):复数单位根是指满足z^n=1的复数z,其中n是一个正整数。

所有满足这个条件的复数构成一个循环群,被称为复数单位根群。

这个循环群在信号处理和图像处理等领域有广泛的应用。

5. 矩阵乘法群(GL(n, R)):GL(n, R)是n阶可逆矩阵构成的群,其中矩阵乘法是运算。

对于任意可逆矩阵A,我们可以用矩阵乘法得到A的幂,即A,A^2,A^3,……,形成一个循环群。

6. 带余除法群(Z/nZ,+):带余除法群是由整数模n的剩余类构成的群,其中运算为模n的加法。

对于任意整数m,我们可以用加法运算得到m的倍数模n的剩余类,即[m],[2m],[3m],……,形成一个循环群。

7. 旋转群(SO(2)):旋转群是二维空间中所有旋转操作构成的群。

其中运算为矩阵乘法。

对于任意角度θ,我们可以用旋转矩阵得到所有绕原点旋转θ的操作,形成一个循环群。

8. 圆周群(S^1):圆周群是单位圆上所有点构成的群,其中运算为复数乘法。

对于任意角度θ,我们可以用复数乘法得到所有绕原点旋转θ的点,形成一个循环群。

算法流程图(循环结构)

算法流程图(循环结构)
算法流程图(循环结 构)
目录
• 循环结构的概述 • 循环流程图的绘制 • 常见的循环结构算法 • 循环结构的应用场景 • 循环结构的注意事项 • 案例分析
01
循环结构的概述
循环结构的定义
循环结构是算法流程图中的一种基本结构,用于 01 重复执行一段代码,直到满足某个条件为止。
循环结构由三个基本部分组成:初始化、循环体 02 和终止条件。
详细描述
在for循环中,首先定义一个计数器变量和循环次数,然后在每次循 环中执行指定的操作,直到计数器达到设定的循环次数为止。
示例
以下是一个简单的for循环算法,用于计算1到10的累加和
for循环算法
```
sum = sum + i
for i = 1 to 10 do
for循环算法
end for ```
VS
详细描述
for循环通常用于已知循环次数的情况, 它包含三个基本部分:初始化、条件和后 续操作。在流程图中,for循环通常以矩 形表示,并在其中标明循环变量、初始值 、条件表达式和增量。例如,计算1到10 的累加和可以使用以下for循环实现
for循环的案例分析
```
for (int i = 1; i <= 10; i) {
控制条件的绘制
01 绘制一个菱形,标注为“条件”,表示循环的控
制条件。
02
在条件菱形内标注判断的具体内容,如“i<10” 。
循环次数的表示
使用一个数字标注在控制条件旁边,表示循环的 次数。
如果循环次数是动态变化的,可以使用变量代替 数字,如“n”。
03
常见的循环结构算法
for循环算法
总结词
for循环是一种预先设定循环次数的循环结构,通常用于已知循环次 数的情况。

1.1.3 算法的基本逻辑结构----循环结构

1.1.3  算法的基本逻辑结构----循环结构

分析:
n
1
2 3
an
1 1 2 3 5 A B A=B
an+1 an+2
1 2 3 5 8 B C B=C 2 3 5 8 13 C 2= 1+1 3= 1+2 5= 2+3 8= 3+5 13=5+8 C=A+B 计数变量:3≤k≤n
4
5
概念应用
开始 初始值 条件 是 否
输入n A=1,B=1,k=3
1.1.3
算法的基本逻辑结 构----循环结构
创设情境
核裂变原理 问题1:
如果轰击64次铀核,如何求释放出的总能量? 次数 铀核 1 2 3 4 … 1 21 22 23 …
64
263
概念探究—温故
如何求1+2+4+……+263 的值?
思考:用我们已经学过的顺序结构和条件分支结构能 画出求解的流程图吗? 开始 顺序结构:
S=2 S=4
S=4,i=3 S=2,i=2
S=2,i=2 S=4,i=3
S=4,i=2 S=2,i=1
说明:“S=S+5” 的意思是将 S+5 后的值赋给 S
思考: “S=S+i ” 是什么意思? “i=i+1”呢?
概念探究—实践
例1 如何画出1+2+3+……+100的框图? 思考一:有没有改进措施? 思考二:框图正确吗?如何改?
S1=1; S2=S1+2; S3=S2+22; S4=S3+23; …… S64=S63+263
1次加法 1次加法 1次加法,2次乘法 1次加法,3次乘法 1次加法,63次乘法 S1=1 S2=S1+2 S3=S2+4 …… S64=S63+263 输出S64 结束

三种基本的算法结构

三种基本的算法结构

三种基本的算法结构一、顺序结构算法顺序结构算法是一种最简单、最基本的算法结构。

顺序结构算法按照代码书写的先后顺序执行,每一行代码都按照顺序一次执行,没有跳转或循环的过程。

这种算法结构适用于一些简单的任务,例如输入输出、顺序执行的任务等。

顺序结构算法的特点是代码的执行是按照从上到下的顺序进行,不涉及到条件判断或循环控制。

它的执行过程是线性的,简单明了,容易理解。

但这种算法结构的缺点是没有灵活性,无法处理复杂的逻辑和条件。

例如,下面是一个顺序结构算法的示例代码:```1. 输入一个整数n2. 计算n的平方3. 输出结果```这个算法的执行过程是按照顺序逐行执行的,没有任何判断或循环的过程。

它的功能是输入一个整数n,然后计算n的平方,并将结果输出。

二、选择结构算法选择结构算法是一种根据条件判断来选择不同执行路径的算法结构。

选择结构算法根据条件的真假来决定执行哪个分支的代码,分支之间是互斥的,只会执行其中一个分支。

选择结构算法的特点是根据条件进行判断,并执行相应的代码分支。

它可以根据不同的条件选择不同的执行路径,具有较强的灵活性。

但这种算法结构的缺点是分支较多时,代码逻辑会变得复杂,不易理解和维护。

例如,下面是一个选择结构算法的示例代码:```1. 输入一个整数n2. 如果n大于0,则输出"n是正数"3. 如果n等于0,则输出"n是零"4. 如果n小于0,则输出"n是负数"```这个算法的执行过程是根据输入的整数n的大小,选择不同的输出分支。

如果n大于0,则输出"n是正数";如果n等于0,则输出"n是零";如果n小于0,则输出"n是负数"。

三、循环结构算法循环结构算法是一种重复执行某一段代码的算法结构。

循环结构算法可以根据条件判断的真假来决定是否继续执行循环体内的代码,直到条件不满足时结束循环。

4循环结构

4循环结构
(4)for语句也可与while,do-while语句相互嵌, 构成多重循环。
攸县职业中专 谭五爱
第4部分 循环结构
4.5 循环的嵌套
一个循环体内的语句又包含另一个完整的循环结构, 称为循环嵌套。如果内嵌的循环体中还包含完整的循 环,这就构成了多层循环。
三种循环语句(while,for,do-while)可以相互 嵌套。例如,以下几种均为合法的循环嵌套。
攸县职业中专 谭五爱
第4部分 循环结构
4.4.2 for循环的变量(循环变量)
在循环中通过改变循环变量的值,实现对循环条件的 改变来控制循环。可以使用一个或两个及以上的变量共同 实现对循环的控制。 例,下面例子使用变量x和y共同来控制循环,这两个 变量都是在for语句的内部被初始化。 int x,y; for(x=0,y=0;x+y<10;++x) { y=getchar(); y=y-’0’;/*将数字字符转化为整数值*/ printf(“%d”,y); } 欲键盘输入456789<回车>,输出结果是:
攸县职业中专 谭五爱
第4部分 循环结构
for语句最主要的特点是: 特别适合已知循环次数的循环语句,根据for循环的循环 变量的变化情况。循环次数的计算可以用公式进行计算:
n=(int)((终值-初值+步长)/步长)
例如:循环语句for(n=1;n<=100;n++)(设n为整 型变量)控制循环体反复执行的次数为 n=(int)((100-1+1)/1)=100 又如:循环语句for(n=100;n>0;n=n-2)(设n为 整形变量)控制循环体反复执行的次数为 n=(int)((1-100-2)/(-2))=50

循环结构程序设计典型例题

循环结构程序设计典型例题
8
例2 要求输出100~200之间的不能被 3整除的数。 编程思路:
对100到200之间的每一个整数进行检查
如果不能被3整除,输出,否则不输出
无论是否输出此数,都要接着检查下一个 数(直到200为止)。
9
n=100 n≤200 Y n能被3整除 N 输出n n=n+1
for(n=100;n<=200;n++) { if (n%3==0) continue; printf("%d ",n); } N Y
6
#include <stdio.h> #define SUM 100000 void main() { float amount,aver,total; int i; for (i=1,total=0;i<=1000;i++) { printf("please enter amount:"); scanf("%f",&amount); total= total+amount; if (total>=SUM) break; } 实际捐款人数 aver=total / i ; printf(“num=%d\naver=%10.2f\n“ ,i,aver); }
printf("%12d\n",f3);
f1=f2;
f2=f3; 代码可改进
} }

32
#include <stdio.h>
2
编程思路:
变量amount,用来存放捐款数 变量total,用来存放累加后的总捐款数
变量aver,用来存放人均捐款数
定义符号常量SUM代表100000

六年级全一册信息技术课件-第27课“循环反复”减繁琐——循环结构算法的描述鄂教版

六年级全一册信息技术课件-第27课“循环反复”减繁琐——循环结构算法的描述鄂教版
0 0
0
想一想 若利用计算机来解决这道数学题,我们将如何设计 解题步骤?
0 0 0 0
1
生活中的循环结构算法
2 计算机解决结构算法
算法的循环结构是指在算法中,要求重复执 行同一操作的算法结构,即从算法某处开始,按 照一定条件重复执行某一处理过程。被重复执行 的处理过程称为循环体。
完善下面过程。 (1)问题分析,建立数学模型 (2)确定算法 (3)编写程序 (4)运行并调试程序
0
0 0
0
2.设计一个计算1+3+5+…+99的值的算法。若用计算机 解决此问题,大致过程是怎样的?请用自然语言或思 维导图描述出来。
0 0 0 0
0 0 0
0
谢谢
0
0 0
0
循环结构的算法除了可用自然语言描述外,还 可用思维导图的情势来描述。
0 0 0 0
二、计算机解决问题的一般过程
计算1+2+3+…+100的值的问题用计算机解决, 大致需经过以下过程:
1.问题分析,建立数学模型
2.确定算法用自然语言描述
3.编写程序
0
0 0
4.运行并调试程序
0
练一练 1.用计算机实现高斯算法,大致过程如下,请
“循环反复”减繁琐 ——循环结构算法的描述
0 0 0 0
世界著名的数学家高斯小时候非常淘气。 一次,老师出去开会,他和同学们不仅没有 好好学习,反而闹腾起来,老师回来后非常 生气,惩罚所有人计算1+2+3+4+5+6+…+100 的得数。小高斯看了看题目,想了一下,很 快得出答案是5050。他的同学们非常惊讶, 有的同学甚至以为他在瞎说。最后,小高斯 得出的结果被老师认定是正确的。小高斯是 怎0 么算出来的呢?

算法流程图循环结构(最全版)PTT文档

算法流程图循环结构(最全版)PTT文档
Sum ← Sum + i 【 ·浙江理数】某程序框图如左图所示,若输出的S=57,则判断框内位( ) 【 ·浙江理数】某程序框图如左图所示,若输出的S=57,则判断框内位( ) 回 S3,否则输出T。 S1 T←1; 循环体:反复执行的处理步骤称为循环体. S2 S←2; k>5? C. 循环体:反复执行的处理步骤称为循环体.
开始
A=1,B=1
A≤5? 否 输出B
A=A+1
B=B+1 是
结束缚
感谢观看
输出Sum 结束
开始
i ← 0,Sum ← 0
i←i+1
Sum ← Sum + i

i≥5?
是 输出Sum
结束
循环结构:在一些算法中,也经常会出现从某处开始,按照一定条 件,反复执行某一处理步骤的情况,这种结构称为循环结构.
循环体:反复执行的处理步骤称为循环体. 计数变量:在循环结构中,通常都有一个起到循环计数 作用的变量,这个变量的取值一般都含在执行或终止循 环体的条件中. 当型循环:在每次执行循环体前对控制循环条件进行判 断,当条件满足时执行循环体,不满足则停止. 直到型循环:在执行了一次循环体之后,对控制循环体 进行判断,当条件不满足时执行循环体,满足则停止.
开始
Sum←0,i←1
Sum←Sum+1
i←i+1 否 i>100
是 输出Sum 结束
1.【 ·浙江理数】某 程序框图如左图所示, 若输出的S=57,则判 断框内位( ) A. k>4? B.k>5? C. k>6? D.k>7?
2.【 ·辽宁文数】 如果执行下图(左)的 程序框图,输入 n6,m4那么输出的
算法流程图循环结 构
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环结构算法举例
1、编程输出1至100之间所有能被17整除的自然数(要求使用continue
语句)
算法分析:
如果自然数i被17整除,予以输出,否则不输出
源程序1:
#include <stdio.h>
void main()
{ int i ;
for(i=1; i<=100; i++)
if (i%17==0) p rintf("%4d", i);
printf("\n");
}
源程序2:(with Continue)
#include <stdio.h>
void main()
{ int i ;
for(i=1; i<=100; i++){
if (i%17!=0) continue;
printf("%4d", i);
}
printf("\n");
}
2、求100之内能被17整除的最大自然数(要求使用break语句)
算法分析1:
如果自然数i(i=1, 2,…,100)被17整除且大于其他能被17整除的自然数,保存下来,循环结束时予以输出
源程序1:
#include <stdio.h>
void main()
{
int i, max=0 ;
for(i=1; i<=100; i++)
if (i%17==0 && i>max) max=i;
printf("%d\n",max);
}
算法分析2:
为了提高程序的效率,减少循环的次数,让自然数i从最大值100开始。

如果自然数i被17整除,输出i后提前结束循环
源程序2:(with break)
#include <stdio.h>
void main()
{
int i,max=0 ;
for(i=100; i>=1; i--)
if (i%17==0 ){
printf("%d\n",i);
break;
}
}
3、编程打印出下列图案:
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * *
* * *
*
算法分析:
(1)该图案共9行,每行由空格’’、星号’*’、换行’\n’组成
(2)第1至第5行的空格呈递减趋势(4,3,2,1,0),即每行的数量等于5-i;而’*’呈增加趋势(1,3,5,7,9),即每行的数量等于2i-1;
(3)第6至第9行的空格呈增加趋势(1,2,3,4),即每行的数量等于i-5;而’*’呈减少趋势(7,5,3,1),即每行的数量等于2(9-i)+1;
(4)每行末尾都是1个换行符
源程序:
#include <stdio.h>
void main()
{
int i,j ;
for(i=1; i<=5; i++) { //先输出1~5行
for(j=1;j<=5-i; j++) putchar(' '); //先输出5-i个空格
for(j=1;j<=2*i-1; j++) putchar('*'); //再输出2i-1个*
putchar('\n'); //行尾换行
}
//此时i的值为6
for(; i<=9; i++) { //再输出6~9行,
for(j=1;j<=i-5; j++) putchar(' '); //先输出i-5个空格
for(j=1;j<=2*(9-i)+1; j++) putchar('*'); //再输出2(9-i)+1个*
putchar('\n'); //行尾换行
}
}
思考:
(1)本程序中使用函数putchar()实现字符输出,如果使用printf(),括号内的参数使用单引号还是双引号?
(2)第二个for循环的表达式1是空的,为什么?
(3)如果把第二个for循环改成如下形式,循环体应该怎样更改?
for( i=4; i>=1; i--){
/* 请在此处填写循环体语句
*/
}
4、分析下列程序的输出结果:
#include <stdio.h>
void main()
{ int i=-1, j=3, c ;
do{
c= (++i<0) && !(--j==0);
i++;
}while(c); //当C非0时循环
printf("%d, %d\n", i,j);
}
结果:
1,3
分析:
循环次数i j c
0 -1 3 未知
1 1 3 0
首先执行++i,令i由-1增为0,表达式++i的值亦为0
关系运算++i<0的值为0,故运算&&的结果为0,c的值为0
!(--j==0)是&&的第二操作数,在已经明确&&结果为0时不再计算,因此j的值没有减1,由于do-while语句的循环条件是c,即c!=0,而当第一次循环结束时c为0,故结束循环
5、输入两个正整数m和n,求最大公约数和最小公倍数。

算法分析:
(1)当输入值m<=0或n<=0,重新输入m和n。

(2)令p取m,n中较大者,q取m,n中较小者.
(3) p作被除数,q作除数,再令r代表两者的余数(r=p%q),当p不能被q整除时(r!=0),调整p和q: p=q; q=r;
循环中如果r为0,则当前的除数q就是m和n的最大公约数
例1:
例2:
(4)已知原整数m,n和它们的最大公约数p,其最小公倍数为m*n/p。

源程序
#include <stdio.h>
void main()
{ int m,n,p,q,r;
printf("Input two plus numbers:"); //提示输入整数m,n
do{ scanf("%d%d", &m,&n);
}while (m<=0 || n<=0); // 如果m或n不是正整数,需要重新输入
p= m> n? m: n; //p取较大值
q= m<n? m: n; //q取较小值
r= p%q;
while( r!=0){
p=q; q=r; r=p%q;
}
printf("最大公约数是%d, 最小公倍数是%d\n",q, m*n/q); }。

相关文档
最新文档