《循环结构程序设计》PPT课件
合集下载
C语言第5章循环结构PPT课件

格式:while (条件1)
3. 用for 语句实现循环 4. 循环的嵌套
5. break语句和continue语句 6. 几种循环的比较 7. 程 序 举 例
第2页/共63页
一、循环概述
3
第3页/共63页
在很多实际问题中会遇到有规律性的重复运算,因 此在程序中就需要将某些语句重复执行。 • 一组被重复执行的语句称为循环体; • 每重复一次,都必须作出是继续还是停止循环的决 定,这个决定所依据的条件称为循环条件;
do {
......
for(;;) { ......
}while();
}
47
第47页/共63页
例7. 打印乘法“九九表”
1 2 3 4 56 7 89 11 22 4 33 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81
循环的概念 用while语句和do-while语句实现循环
用for 语句实现循环 循环的嵌套
break语句和continue语句 几种循环的比较 程序举例
第44页/共63页
循环的嵌环中还可以嵌套循环,这就是多重循环。
循环1
循环2
28
第28页/共63页
29
第29页/共63页
(2):从高位到低位求每一位。
30
第30页/共63页
(3):从低位到高位求每一位。
31
第31页/共63页
循环结构程序设计
1. 循环的概念 2. 用while语句和do-while语句实现循环
3. 用for 语句实现循环 4. 循环的嵌套
5. break语句和continue语句 6. 几种循环的比较 7. 程 序 举 例
第2页/共63页
一、循环概述
3
第3页/共63页
在很多实际问题中会遇到有规律性的重复运算,因 此在程序中就需要将某些语句重复执行。 • 一组被重复执行的语句称为循环体; • 每重复一次,都必须作出是继续还是停止循环的决 定,这个决定所依据的条件称为循环条件;
do {
......
for(;;) { ......
}while();
}
47
第47页/共63页
例7. 打印乘法“九九表”
1 2 3 4 56 7 89 11 22 4 33 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81
循环的概念 用while语句和do-while语句实现循环
用for 语句实现循环 循环的嵌套
break语句和continue语句 几种循环的比较 程序举例
第44页/共63页
循环的嵌环中还可以嵌套循环,这就是多重循环。
循环1
循环2
28
第28页/共63页
29
第29页/共63页
(2):从高位到低位求每一位。
30
第30页/共63页
(3):从低位到高位求每一位。
31
第31页/共63页
循环结构程序设计
1. 循环的概念 2. 用while语句和do-while语句实现循环
流程图(循环结构)PPT课件

循环变量循环变量的后继10成立成立不成立当型循环直到型循环先执行循环体然后再检查条件是否成立如果不成立就重复执行循环体直到条件成立退出循环
流程图---循环结构
1
问题:北京获得了2008年第29届奥林匹克运动 会主办权.你知道在申办奥运会的最后阶级,国际 奥委会是如何通过投票决定主办权归属的吗?
用怎样的算法结构表述上面的操作过程? S1: 投票; S2:统计票数,如果有一个城市得票超过总票 数的一半,那么该城市就获得主办权,转S3, 否则淘汰得票数最少的城市,转S1; S3: 宣布主办城市.
开始
S1 S 1 ; 2
S 2 i 1;
S3 S 1 ; 2+S
S 4 i i 1; S 5 如 果 i大 于 5, 则 输 出 S,
算 法 结 束 , 否 则 转 S3
S←1/2
i←1
S←1/(2+S)
i ← i +1 i>5 N Y 输出S
结束
12
设计一个计算10个数的平均数的算法.
解:S1 S←0
把0赋值给变量S;
S2 I←1
把1赋值给变量I;
S3 输入G
输入一个数;
S4 S←S+G
把S+G赋值给变量S;
S5 I←I+1
把I+1赋值给变量I;
S6 如果I不大于10,转S3 转到S3循环;
S7 A←S /10
把S/10存放到A中;
S8 输出A 13
设计一个求1+2+4+7+…+46的算法,并画出相应 的程序框图.
6
当
型
循环体
循
环 结
满足条件? Y
流程图---循环结构
1
问题:北京获得了2008年第29届奥林匹克运动 会主办权.你知道在申办奥运会的最后阶级,国际 奥委会是如何通过投票决定主办权归属的吗?
用怎样的算法结构表述上面的操作过程? S1: 投票; S2:统计票数,如果有一个城市得票超过总票 数的一半,那么该城市就获得主办权,转S3, 否则淘汰得票数最少的城市,转S1; S3: 宣布主办城市.
开始
S1 S 1 ; 2
S 2 i 1;
S3 S 1 ; 2+S
S 4 i i 1; S 5 如 果 i大 于 5, 则 输 出 S,
算 法 结 束 , 否 则 转 S3
S←1/2
i←1
S←1/(2+S)
i ← i +1 i>5 N Y 输出S
结束
12
设计一个计算10个数的平均数的算法.
解:S1 S←0
把0赋值给变量S;
S2 I←1
把1赋值给变量I;
S3 输入G
输入一个数;
S4 S←S+G
把S+G赋值给变量S;
S5 I←I+1
把I+1赋值给变量I;
S6 如果I不大于10,转S3 转到S3循环;
S7 A←S /10
把S/10存放到A中;
S8 输出A 13
设计一个求1+2+4+7+…+46的算法,并画出相应 的程序框图.
6
当
型
循环体
循
环 结
满足条件? Y
C语言程序设计:第5章 循环结构

执行过程: 先执行循环体语句,再检查 循环条件表达式的值是否为真, 如果为真则继续执行循环体语句, 否则结束循环。
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
《C语言程序设计课件》第四章-循环语句

scanf("&d",&n); while(n!=0)
{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
C4(循环结构1)PPT课件

3. 执行过程: ▪ 首先计算“表达式”的值,当“表达式”的值为 非 0 时,反复执行 while 中的复合语句;直到 “表达式”的值为零,while循环结束。
2020/12/8
程序设计基础
作者 鲍志斌
14
while(表达式) 循环wh体ile语语句句;执行流程:
循环入口 (while)
0 表达式=?
作者 鲍志斌
4
编程计算: 1+2+. . . +10
#include<stdio.h> void main() {
int i=1 ,sum; sum=0; while( i<= 10)
{ sum = sum + i; i ++ ;
} printf(“sum =%d\n”,sum); }
2020/12/8
# include <stdio.h> void main(){
int m ;m=100; while( m<=200 ) { if (m%3) printf(“%6d” , m);
m++; } }
202鲍志斌
21
练习: 把 100 ~ 200 之间的能被 3 整 除的数输出.
2020/12/8
程序设计基础
作者 鲍志斌
3
引例:编程计算1+2+. . . +10
• 可以这样实现: sum=1+2+3+4+5+6+7+8+9+10 ;
• 但是,如果,问题是: 1+2+3+ … +10000 =? 将无法用一个赋值语句实现。
2020/12/8
程序设计基础
作者 鲍志斌
14
while(表达式) 循环wh体ile语语句句;执行流程:
循环入口 (while)
0 表达式=?
作者 鲍志斌
4
编程计算: 1+2+. . . +10
#include<stdio.h> void main() {
int i=1 ,sum; sum=0; while( i<= 10)
{ sum = sum + i; i ++ ;
} printf(“sum =%d\n”,sum); }
2020/12/8
# include <stdio.h> void main(){
int m ;m=100; while( m<=200 ) { if (m%3) printf(“%6d” , m);
m++; } }
202鲍志斌
21
练习: 把 100 ~ 200 之间的能被 3 整 除的数输出.
2020/12/8
程序设计基础
作者 鲍志斌
3
引例:编程计算1+2+. . . +10
• 可以这样实现: sum=1+2+3+4+5+6+7+8+9+10 ;
• 但是,如果,问题是: 1+2+3+ … +10000 =? 将无法用一个赋值语句实现。
第10课 循环结构——while循环课件(25张PPT)

第10课 循环结构——while循环
浙教版信息技术 八年级
新知导入
这个星期天就是母亲节了,如果想用python跟妈 妈说一百遍“妈妈,我爱您!”如果用前面学过的循环 语句来操作,十分麻烦。若用python中的循环语句 while来操作,一句话就可以搞定。今天我们就一块来 学习while循环。
新知讲解
while <条件>: <循环体>
[else: 语句块]
新知讲解
while循环的执行流 程, 如图所示。
新知讲解
当条件判断为True时, 循环体被重复执行, 当条 件判断为False时退出循环, else子句的语句块才会被 执行。
若条件表达式的值一直为True, 则while循环将一直执行。
因此,在循环体中一定要包含改变测试条件的语句,使循环能够 结束,以避免死循环。
新知讲解
例如“登录程序”, 先判断输入账号是否为“admin” , 再判断输人密码是否为“Python@16”。
若账号或密码输入不正确, 则反复要求输人, 直到输入的账号 和密码都正确,退出循环并输出“登录成功!”。
user=“ “ psd=“ “ While True:
if user!="admin": user!=input("请输入账号:") continue
for循环语句是通过遍历某一序列对象来构 建循环, 循环结束的条件是对象遍历完成。
但是,很多应用难以确定遍历结 构,这就需要根据条件控制循环。
在Python中, 提供了while 语句, 实现条件循环。
新知讲解
一、while循环语句
while循环, 又称为条件循环。
while循环语句的一般格式如下:
浙教版信息技术 八年级
新知导入
这个星期天就是母亲节了,如果想用python跟妈 妈说一百遍“妈妈,我爱您!”如果用前面学过的循环 语句来操作,十分麻烦。若用python中的循环语句 while来操作,一句话就可以搞定。今天我们就一块来 学习while循环。
新知讲解
while <条件>: <循环体>
[else: 语句块]
新知讲解
while循环的执行流 程, 如图所示。
新知讲解
当条件判断为True时, 循环体被重复执行, 当条 件判断为False时退出循环, else子句的语句块才会被 执行。
若条件表达式的值一直为True, 则while循环将一直执行。
因此,在循环体中一定要包含改变测试条件的语句,使循环能够 结束,以避免死循环。
新知讲解
例如“登录程序”, 先判断输入账号是否为“admin” , 再判断输人密码是否为“Python@16”。
若账号或密码输入不正确, 则反复要求输人, 直到输入的账号 和密码都正确,退出循环并输出“登录成功!”。
user=“ “ psd=“ “ While True:
if user!="admin": user!=input("请输入账号:") continue
for循环语句是通过遍历某一序列对象来构 建循环, 循环结束的条件是对象遍历完成。
但是,很多应用难以确定遍历结 构,这就需要根据条件控制循环。
在Python中, 提供了while 语句, 实现条件循环。
新知讲解
一、while循环语句
while循环, 又称为条件循环。
while循环语句的一般格式如下:
人教A版 高中数学 必修3 第一章 1.1.2 循环结构的程序框图课件(共16张PPT)

巩固提高
1、设计一算法,求 积:1×2×3×…×100, 画出流程图
思考:该流程图与前面 的例1中求和的流程图有 何不同?
开始 i=0,S=1
i=i+1 S=S*i 否 i>=100?
是 输出S 结束
巩固提高
2、设计一算法输出1~1000以内能被3整除的整数
开始
算法:
i=0
S1:确定i的初始值为0;
开始 i=0,S=0
否 i<100? 是 i=i+1 S=S+ i
输出S 结束
思考:将步骤A和步骤B交换位 置,结果会怎样?能达到预期结果 吗?为什么?要达到预期结果,还 需要做怎样的修改?
步骤A
步骤B 答:达不到预期结果;
当i = 100时,退出循环,i 的值未能加入到S中;修 改的方法是将判断条件改 为i<101
1.1.2 程序框图与算法的基本逻辑
——————循环结构
复习回顾
1、程序框图(流程图)的概念: 2、算法的三种逻辑结构: 3、顺序结构的概念及其程序框图: 4、条件结构的概念及其程序框图:
复习回顾
i) 顺序结构
ii) 条件结构
Yp N A
A
B
B
循环结构
循环结构:在一些算法中,也经常会出现从某处开始,
小结:
4.画循环结构流程图前: ①确定循环变量和初始条件; ②确定算法中反复执行的部分,即循环体; ③确定循环的转向位置; ④确定循环的终止条件.
循环结构的三要素:
循环变量,循环体、循环的终止条件。
其中顺序结构是最简单的结构,也是最基 本的结构,循环结构必然包含条件结构,所以 这三种基本逻辑结构是相互支撑的,无论怎样 复杂的逻辑结构,都可以通过这三种结构来表 达。
c5第五章 循环结构程序设计

conio是Console Input/Output(控制台输 入输出)的简写,其中定义了通过控制 台进行数据输入和数据输出的函数,主 要是一些用户通过按键盘产生的对应操 作,比如getch()、putch()函数等等。
2
附件: warning C4013: „system‟ undefined; assuming extern returning int 警告信息的解决
4
5.1 while语句
1、while 语句 常称为“当型”循环语句。
表达式
!0 循环体
0
5
2 、while 语句的形式: while (表达式)
循环体;
特点:先判断表达式,后执行语句。 说明: – 循环体有可能一次也不执行 – 循环体可为任意类型语句 – 下列情况,退出while循环 • 条件表达式不成立(为零) • 循环体内遇break,return,goto – 无限循环:
7
例 (ch5_02.c)显示1~10的平方
#include <stdio.h> #include <conio.h> main() { int i=1; while(i<=10){ 运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100 8
printf("%d*%d=%d\n",i,i,i*i);
i++; } getch(); }
5.2 do--while语句
1、do--while语句 常称为“直到型”循
环语句。
循环体
!0
表达式
0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a=a+b; b=a-b; } if(n%2==0) cout<<-1*a<<'/'<<b<<endl;
循环语句的嵌套
for( ; ;)
三外嵌嵌禁w{e….种层套套止中循h(.}i)…循循循循从l又环e环 环 环 环 外(…包语)w可可的的层…h{}…i互包执跳跳含句l.相含行转入循的嵌两流:内d(.}环嵌套 个 程 只 层o{.w).h,以:能、语套;il{}层上外跳禁ew句:…(h数内层转止d…i…)ol一不循循出跳;…e…限环环本入个。,执层同w{(循h}但行循层i)环l;不一环的e(…{}…能次。另语)w…hd……相,一io句l….互 内 循e的交层环叉循和循{…e(…。环向()环)要上;{体执跳…{}w}d…wh行转…ohi………il完。le 。
{
for循环语句
格式:
for (<表达式1 >;<表达式2 >;<表达式3>) {
语句序列 }
表达式1
0 表达式2 非0 语句序列
表达式3
语句序列称为循环体。 当语句序列只有单条语句,表示复合语句的{}可以省略。 表达式1一般为赋值表达式,给控制变量赋初值;如果省略表达式1 表达式2一般为关系表达式或逻辑表达式,称为循环控制条件 表达式3一般为赋值表达式,给控制变量增量或减量 for(;;)。
•
5
•
0
• 爱因斯坦走楼梯:有一条长阶梯,若每步跨2阶,则最后剩1阶;若每步跨3阶,则最后 剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7阶,则 最后正好一阶不剩;问该楼梯最少有多少阶?
#include<iostream> using namespace std; int main() {
121 -12321
100 输出样例:No
Yes Yes No
素数因子
• 问题描述:输入一个整数,输出它的所有素数因子 • 输入要求:输入一系列的整数(0,1,-1除外),每行一个 • 输出要求:输出所有的素数因子,每个因子之间用1个空格分
开,最后一个因子后面没有空格 • 输入样例: 8
30 125 • 输出样例:2 2 2 235 555
break;
}
}
q_flag=1;
if(p_fla
g==1)
for(i=2;i<=sqrt(q);
i++)
{
if(q%i==0)
绝对素数
问题描述:如果一个正整数是素数,它的反位数也是素 数,这称这样的数为绝对素数。
输入要求:输入一些正整数n,每个占一行
输出要求:占一行,输出1到n之间名绝对素数的个数。
}
6174数字黑洞
• 问题描述:任意一个每位数字不完全相同的4位正整数, 将各位上数字重新组合成一个最大数和一个最小数相减, 重复这个过程,必定得到6174。
• 输入要求:输入一系列的4位正整数,占一行。
• 输出要求:占一行,最终得到6174的变换次数。
• 输入样例:1234
•
1000
•
6174
• 输出样例:3
#include<iostream> using namespace std; int main() {
int m,k=2; cin>>m; if(m<0) {
cout<<'-'; m=-m; } while(k<m) if(m%k==0) {
cout<<k<<' '; m=m/k; } else k++; cout<<m<<endl; return 0;
角谷猜想
• 问题描述:定义这样一个整数函数f(n),当n是偶数时,f (n)=n/2;当n是奇数时,f(n)=(3n+1)/2。这个猜想是说 :对于任意的整数n,计算f(n),f(f(n)),f(f(f(n))),… ….,若干步之后,总会得到1。对于给定的n,求出数字 序列中第一次出现1的步数。
3 5 2
Cantor表
问题描述:现代数学的著名证明之一是Georg Cantor证明了有理数是 可以枚举的。他利用下面一张表来证明这一命题: 1/1 1/2 1/3 1/4 1/5 …… 2/1 2/2 2/3 2/4…… 3/1 3/2 3/3 …… 4/1 4/2 …… 5/1 …… 我们以Z字型给上表每一项编号 。第1项是1/1 ,然后第2项是1/2,2/ 1,3/1,2/2……. 输入描述:整数N(1≤N≤10000000) 输出描述:表中的第N项 样例输入: 7 样例输出: 1/4
n=n+7; cout<<n<<endl; return 0; }
do while 循环语句
格式:
do {
语句序列 } while(表达式);
语句序列
0 表达式 非0
最大公约数和最小公倍数
问题描述:从键盘上输入两个整数,求它们的最大公约数和最小 公倍数。
输入要求:每行输入两个整数,每个整数之间用一个空格分开。 输出要求:第一行输出最大公约数,第二行输出最小公倍数 输入样例:3 6
int k; for(k=100;k<=2 00;k++) { if(k%3==0)
continue; cout<<k<< “ “; } return 0; }
• break语句
• 格式:break; • 功能:跳出switch结构或结束本层循环。 • 说明:break语句只能用于switch或循环结构中
输入要求:输入一些 正整数n(n<50),分别占一行。 输出要求:占一行,表示分数数列中的对应项。 输入样例:3
26 输出样例:5/3
-317811/196418
#include<iostream> using namespace std; int main() {
int a=2,b=1,i; int n; cin>>n; for(i=2;i<=n;i++) {
break; cout<<area<<endl; } return 0; }
阶乘之和
问题描述:求非负整数的阶乘之和 输入要求:输入一个非负整数n(n<13),占一行 输出要求:占一行,阶乘的和 输入样例:0
5 12 输出样例:1 154 522956314
#include<iostream> #include<stdlib.h> using namespace std; int main() {
第3讲循环结构程序设计
循环的定义
反复执行相同的语句序列
假 条件 真
A
A
假 条件 真
while循环
格式:
while(表达式) {
语句序列 }
0 表达式 非0 语句序列
语句序列称为循环体,当为一条语句时,表示复合语句的{}可以省略。 表达式可以为任何类型 先判断,后执行,若条件不成立,有可能一次也不执行。 语句序列中必须有改变while后面括号的表达式值的语句,否则有可能死循环。
int i,sum,p,n; while(cin>>n) { sum=0; p=1;
if(n<0) exit(0);
for(i=1;i<=n;i++) {
p=p*i; sum=sum+p; } cout<<sum+1<<endl;
分数数列
问题描述:已知分数数列 2/1,-3/2,5/3,8/5, …… 对于输入的正整数n,输出对应项的分数。
int main()
#include <iostream
{
>
int i,sum=0;
using namespace st
cin>>i;
d;
do
int main3;=i;
int i,sum=0;
i++;
cin>>i;
}while(i<=10);
while(i<=10)
cout<<sum<<endl;
• 输入要求:输入一些正整数n,每个正整数占一行。
• 输出要求:占一行,输出对应n得到1的步数。
• 输入样例:5
•
10
• 输出样例:4
•
5
while语句和do…while语句 比较
while语句是先判断后执行,只要不满足条件,循环体语 句根本不会执行
#uisnid环cnolg体…udn语weahm句ie<lsi总epo语会as句ct执er是e行sa先tm一d>执;次行后判断,不管条件是否满足,循
p=p+1
q=n-p
非0 p是素数 p_flag=1
0 p_flag=0
非0 q是素数
0
q_flag=1
q_flag=0
非0 p_flag*q_flag==0
0 输出p和q
结束
#include<iostream> #include<math.h> #include<stdlib.h> using namespace std; int main() {
#include<iostream> using namespace std; int main() {
int n,i,j; cin>>n; i=0;//斜线序号 j=n;//第n项在某行的位置 do {
循环语句的嵌套
for( ; ;)
三外嵌嵌禁w{e….种层套套止中循h(.}i)…循循循循从l又环e环 环 环 环 外(…包语)w可可的的层…h{}…i互包执跳跳含句l.相含行转入循的嵌两流:内d(.}环嵌套 个 程 只 层o{.w).h,以:能、语套;il{}层上外跳禁ew句:…(h数内层转止d…i…)ol一不循循出跳;…e…限环环本入个。,执层同w{(循h}但行循层i)环l;不一环的e(…{}…能次。另语)w…hd……相,一io句l….互 内 循e的交层环叉循和循{…e(…。环向()环)要上;{体执跳…{}w}d…wh行转…ohi………il完。le 。
{
for循环语句
格式:
for (<表达式1 >;<表达式2 >;<表达式3>) {
语句序列 }
表达式1
0 表达式2 非0 语句序列
表达式3
语句序列称为循环体。 当语句序列只有单条语句,表示复合语句的{}可以省略。 表达式1一般为赋值表达式,给控制变量赋初值;如果省略表达式1 表达式2一般为关系表达式或逻辑表达式,称为循环控制条件 表达式3一般为赋值表达式,给控制变量增量或减量 for(;;)。
•
5
•
0
• 爱因斯坦走楼梯:有一条长阶梯,若每步跨2阶,则最后剩1阶;若每步跨3阶,则最后 剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7阶,则 最后正好一阶不剩;问该楼梯最少有多少阶?
#include<iostream> using namespace std; int main() {
121 -12321
100 输出样例:No
Yes Yes No
素数因子
• 问题描述:输入一个整数,输出它的所有素数因子 • 输入要求:输入一系列的整数(0,1,-1除外),每行一个 • 输出要求:输出所有的素数因子,每个因子之间用1个空格分
开,最后一个因子后面没有空格 • 输入样例: 8
30 125 • 输出样例:2 2 2 235 555
break;
}
}
q_flag=1;
if(p_fla
g==1)
for(i=2;i<=sqrt(q);
i++)
{
if(q%i==0)
绝对素数
问题描述:如果一个正整数是素数,它的反位数也是素 数,这称这样的数为绝对素数。
输入要求:输入一些正整数n,每个占一行
输出要求:占一行,输出1到n之间名绝对素数的个数。
}
6174数字黑洞
• 问题描述:任意一个每位数字不完全相同的4位正整数, 将各位上数字重新组合成一个最大数和一个最小数相减, 重复这个过程,必定得到6174。
• 输入要求:输入一系列的4位正整数,占一行。
• 输出要求:占一行,最终得到6174的变换次数。
• 输入样例:1234
•
1000
•
6174
• 输出样例:3
#include<iostream> using namespace std; int main() {
int m,k=2; cin>>m; if(m<0) {
cout<<'-'; m=-m; } while(k<m) if(m%k==0) {
cout<<k<<' '; m=m/k; } else k++; cout<<m<<endl; return 0;
角谷猜想
• 问题描述:定义这样一个整数函数f(n),当n是偶数时,f (n)=n/2;当n是奇数时,f(n)=(3n+1)/2。这个猜想是说 :对于任意的整数n,计算f(n),f(f(n)),f(f(f(n))),… ….,若干步之后,总会得到1。对于给定的n,求出数字 序列中第一次出现1的步数。
3 5 2
Cantor表
问题描述:现代数学的著名证明之一是Georg Cantor证明了有理数是 可以枚举的。他利用下面一张表来证明这一命题: 1/1 1/2 1/3 1/4 1/5 …… 2/1 2/2 2/3 2/4…… 3/1 3/2 3/3 …… 4/1 4/2 …… 5/1 …… 我们以Z字型给上表每一项编号 。第1项是1/1 ,然后第2项是1/2,2/ 1,3/1,2/2……. 输入描述:整数N(1≤N≤10000000) 输出描述:表中的第N项 样例输入: 7 样例输出: 1/4
n=n+7; cout<<n<<endl; return 0; }
do while 循环语句
格式:
do {
语句序列 } while(表达式);
语句序列
0 表达式 非0
最大公约数和最小公倍数
问题描述:从键盘上输入两个整数,求它们的最大公约数和最小 公倍数。
输入要求:每行输入两个整数,每个整数之间用一个空格分开。 输出要求:第一行输出最大公约数,第二行输出最小公倍数 输入样例:3 6
int k; for(k=100;k<=2 00;k++) { if(k%3==0)
continue; cout<<k<< “ “; } return 0; }
• break语句
• 格式:break; • 功能:跳出switch结构或结束本层循环。 • 说明:break语句只能用于switch或循环结构中
输入要求:输入一些 正整数n(n<50),分别占一行。 输出要求:占一行,表示分数数列中的对应项。 输入样例:3
26 输出样例:5/3
-317811/196418
#include<iostream> using namespace std; int main() {
int a=2,b=1,i; int n; cin>>n; for(i=2;i<=n;i++) {
break; cout<<area<<endl; } return 0; }
阶乘之和
问题描述:求非负整数的阶乘之和 输入要求:输入一个非负整数n(n<13),占一行 输出要求:占一行,阶乘的和 输入样例:0
5 12 输出样例:1 154 522956314
#include<iostream> #include<stdlib.h> using namespace std; int main() {
第3讲循环结构程序设计
循环的定义
反复执行相同的语句序列
假 条件 真
A
A
假 条件 真
while循环
格式:
while(表达式) {
语句序列 }
0 表达式 非0 语句序列
语句序列称为循环体,当为一条语句时,表示复合语句的{}可以省略。 表达式可以为任何类型 先判断,后执行,若条件不成立,有可能一次也不执行。 语句序列中必须有改变while后面括号的表达式值的语句,否则有可能死循环。
int i,sum,p,n; while(cin>>n) { sum=0; p=1;
if(n<0) exit(0);
for(i=1;i<=n;i++) {
p=p*i; sum=sum+p; } cout<<sum+1<<endl;
分数数列
问题描述:已知分数数列 2/1,-3/2,5/3,8/5, …… 对于输入的正整数n,输出对应项的分数。
int main()
#include <iostream
{
>
int i,sum=0;
using namespace st
cin>>i;
d;
do
int main3;=i;
int i,sum=0;
i++;
cin>>i;
}while(i<=10);
while(i<=10)
cout<<sum<<endl;
• 输入要求:输入一些正整数n,每个正整数占一行。
• 输出要求:占一行,输出对应n得到1的步数。
• 输入样例:5
•
10
• 输出样例:4
•
5
while语句和do…while语句 比较
while语句是先判断后执行,只要不满足条件,循环体语 句根本不会执行
#uisnid环cnolg体…udn语weahm句ie<lsi总epo语会as句ct执er是e行sa先tm一d>执;次行后判断,不管条件是否满足,循
p=p+1
q=n-p
非0 p是素数 p_flag=1
0 p_flag=0
非0 q是素数
0
q_flag=1
q_flag=0
非0 p_flag*q_flag==0
0 输出p和q
结束
#include<iostream> #include<math.h> #include<stdlib.h> using namespace std; int main() {
#include<iostream> using namespace std; int main() {
int n,i,j; cin>>n; i=0;//斜线序号 j=n;//第n项在某行的位置 do {