c语言课件_7-2_tt-循环控制
合集下载
《c语言循环结构》课件
while循环的用法与案例分析
1
while循环的语法和用法
while循环先检查条件,再执行循环体中
while循环的案例分析
2
的代码,当条件为假时结束循环。
一个经典的例子是猜数字游戏,直到猜
到答案才退出循环。
3
while循环的常见错误
循环条件不恰当、循环次数过多或过少 等是常见的while循环错误。
c语言中有三种循环结构:for循环、while循环和do-while循环。
for循环的用法与案例分析
for循环的语法和用法
for循环由初始化语句、循环条件 和更新语句构成,可以控制循环 次数。
for循环的案例分析
for循环的优化
一个简单的例子是遍历一个日历, 打印出一年中每一天的日期。
为了提高程序的性能,我们可以 使用循环展开或减少循环嵌套。
do-while循环的用法与案例分析
do-while循环的语法和用法
do-while循环和while循环很像,但至少会执行一次循环体中的代码。
do-while循环的案例分析
一个应用do-while循环的场景是菜单项选择,确保用户至少输入一次。
do-while循环的注意事项
需要注意的是,do-while循环的条件必须放在循环体的末尾。
2 常见问题
如果您有疑问或需要更多的帮助,请联系我们的技术支持。
《c语言循环结构》PPT 课件
本课程将深入讲解c语言的循环结构,帮助您编写更有效率的程序。
循环结构的定义与作用
什么是循环结构?
循环结构是一种程序控制结构,它能够重复执行一段代码。
循环结构的作用是什么?
循环结构可以帮助程序员编写更简洁、更高效的代码。通过循环,程序不需要重复写相同的 代码。
C语言(谭浩强版)第6章循环控制ppt课件
C语言程序设计
第六章 循环控制
掌握循环的概念和分类 掌握while循环 掌握do while循环 掌握for循环 掌握循环的嵌套 掌握break和continue的用法 能够设计复杂的程序
最新版整理ppt
1
20.04.2021 20.04.2021
C语言程序设计
概述
C语言可实现循环的语句: ❖用goto 和 if 构成循环 ❖while 语句 ❖do ~ while 语句 ❖for 语句
#include <stdio.h> void main() { int i,sum=0;
scanf("%d",&i); while(i<=10) { sum+=i;
i++; } printf("%d",sum); }
最新版整理ppt
13
20.04.2021 20.04.2021
for语句
一般形式:
运行结果:abcdefghij 例:例#:in#cilnucdleu<dset<dsitod.iho>.h> mamina(in) ( )
{ {intiin=t0i=; 0;
20.04.2021 20.04.2021
forf(o;ir<(;1i<0;1p0u;t)char(‘a’+i),i++)
; putchar(‘a’+(i++));
❖无限循环: for(;;)
❖for语句可以转换成while结构
100
例 用for循环求 n n 1
#include <stdio.h>
main() { int i,sum=0;
第六章 循环控制
掌握循环的概念和分类 掌握while循环 掌握do while循环 掌握for循环 掌握循环的嵌套 掌握break和continue的用法 能够设计复杂的程序
最新版整理ppt
1
20.04.2021 20.04.2021
C语言程序设计
概述
C语言可实现循环的语句: ❖用goto 和 if 构成循环 ❖while 语句 ❖do ~ while 语句 ❖for 语句
#include <stdio.h> void main() { int i,sum=0;
scanf("%d",&i); while(i<=10) { sum+=i;
i++; } printf("%d",sum); }
最新版整理ppt
13
20.04.2021 20.04.2021
for语句
一般形式:
运行结果:abcdefghij 例:例#:in#cilnucdleu<dset<dsitod.iho>.h> mamina(in) ( )
{ {intiin=t0i=; 0;
20.04.2021 20.04.2021
forf(o;ir<(;1i<0;1p0u;t)char(‘a’+i),i++)
; putchar(‘a’+(i++));
❖无限循环: for(;;)
❖for语句可以转换成while结构
100
例 用for循环求 n n 1
#include <stdio.h>
main() { int i,sum=0;
C语言设计课件:第6章 循环控制
6.5 for语句
for 语句较前两种循环语句更简洁、更灵活, 特别是处理循环次数确定的问题。
for语句的语法格式为: for(表达式1;表达式2;表达式3)
循环体语句
其中,表达式1为赋初值表达式 表达式2为条件表达式 表达式3为循环变量增值表达式
例:求n! (n=10) int main( ) { int n,k,s=1;
scanf(“%d”,&n); i=1; s=0; do { s+=i; /*累加*/
i+=2; } while(i<=n); /*必须使用分号*/ printf(“s=%d”,s); }
课堂实践
1、从键盘上输入若干整数,求其中正偶 数之和。以-1作为输入结束标志。
#include "stdio.h" int main() {
scanf("%d", &n);while (n>0)
do
{ s+=n%10;
{ s+=n%10; n/=10;
n/=10;
}
}
while(n>0); printf("\n sum=%d", s);
printf("\n sum=%redt",ursn); 0;
return 0; }
}
课堂实践3
输入一个整数,求该数是几位数,按顺 序输出它的每一位数字(以空格分隔); 按逆序输出它的每一位数字(以空格分隔 )。
例:求s=1+3+5+…n (n为奇数且n>=1)
6.4 do…while语句
do_while语句的特点是“先执行循环体,后 判断循环条件”,当条件成立时继续执行循环 体,条件不成立时结束循环。
C语言:循环控制程序PPT35页
6.4 循环的嵌套
与if语句相同, 当循环体中又包含了另一个完整 的循环语句时–––循环嵌套。
C语言的循环结构, 均可以相互嵌套:
例如 : do { while(…) { for( …) { } } }while(…)
C语言:循环控制程序
6、纪律是自由的第一条件。——黑格 尔 7、纪律是集体的面貌,集体的声音, 集体的 动作, 集体的 表情, 集体的 信念。 ——马 卡连柯
8、我们现在必须完全保持党的纪律, 否则一 切都会 陷入污 泥中。 ——马 克思 9、学校没有纪律便如磨坊没有水。— —夸美 纽斯
10、一个人应该:活泼而守纪律,天 真而不 幼稚, 勇敢而 鲁莽, 倔强而 有原则 ,热情 而不冲 动,乐 观而不 盲目。 ——马 克思
例如 : sum=0; i=1;
for ( ; i<=100 ; ) { sum=sum+i; i++; }
循环结构例程
例程6-4 :
输出[ 1,99]不 能被2或3整除 的数,按5个数 一行的格式排 列。
void main( ) { int I, j=0;
for( I=1; I<100; I++ ) { if ( I%2 || I%3 )
for ( i=1; i<=100; i++) sum+=i;
for语句与while、do-while互换用, 但for直观、简单、方便。
i=1; while(i<=100) { sum+=i; i++}
i=1; do { sum+=i; i++; } while( i<=100 )
C语言中 循环结构ppt课件
精选ppt课件2021
12
【例5.4】设n=30,编写程序,计算并输出S(n)的值。 S(n)=(1*2)/(3*4)-(3*4)/(5*6)+(5*6)/(7*8)+…+(-1)(n-
1)*[(2n-1)*2n]/[(2n+1)*(2n+2)] +…
#include<stdio.h>
#include<math.h>
{
sum=sum*i; /*累乘求积*/
i++;
/*修改基本数据项i*/
}
printf("%d!=%.0f\n",n,sum);
return 0;
}
精选ppt课件2021
7
• 循环三要素之间的关系。
循环变量赋初值、判断控制表达式和修改循环变 量是所谓的“循环三要素”。
一般来说,进入循环之前,应该给循环变量赋初 值,确保循环能够正常开始;在控制表达式中判断循 环变量是否达到循环的终止值;在循环体中对循环变 量进行修改,以使循环正常的趋向终止。在编写程序 时要注意他们的位置关系。
for(循环变量赋初值;循环条件;循环变量增值)
关于for语句的几点说明:
(1)循环体语句可以是简单语句也可以是使用一对花 括号括起来的复合语句。如果是一个语句,也可以和 for写在一行上,这样使程序看起来更加简洁;如果 循环体包含多条语句,最好是另起一行,采用一对花 括号括起来的复合语句形式,增加程序的可读性。
return 0;
}
精选ppt课件2021
9
5.2 for语句
for语句的一般形式如下:
for(表达式1;表达式2;表达式3) 循环体语句
C语言第五章循环结构程序控制PPT教学课件
PF
T
A
i++; 说明:}
其中prinwtfh(i“lesu是m=关%键d字, a;ver(表=%达f式\n”)通,su常m是,su关m系/20表.0达) ;式 或逻} 辑表达式;<语句>作为 while 循环语句的循环体, 可以是一条语句,也可以是复合语句。
2020/12/10
上一页
下一页 1
注意: 1.只有 <表达式> 的值是非0时,才执行< 语句 > 给出的循环体。
2020/12/10
上一页
下一页 8
例: 1要.点fo说r 明语例例例例:句::::fi=o中r1if=o(;的r1i=(;1表i;=;i1<达i<;==式;1i10+010+可0;;)i)以+s{u+省ms)us略m=u=m(susum分=m+s号u+i mi;不;+i能i+;+省;)} 。 2.如果例省f:o略rfo(表r; i(达<;=式;1)0{20s,u; m)将{=形ss成uumm无+=限i s;u循}m环+i。; i++ ; } 3.表达例式:3fo也r(s可um以=省0; 略i<=。100 ;i++)sum = sum+i ; 45..可3 个以表同达时pffcfooorh式省rrira((nisr同(略=tuf;0cm(时表,;“(j==\cn0省达1=,T0ig=略0式he1et;;,c1iic<h和<h=此a=a1表rjr0(时;0达)iis;)+相i++!:式=%,+当j)3‘sc-\。于ur\-nm’)”;wk=),h=sciulie)m+(;+j1i;); …
C语言PPT课件第04章 循环控制
程序如下:
main()
从两个例子看,一个循
{ int k,sum;
环必需有三个值来控制
sum=0;
k=2;
初始值,循环从2开始
while (k<=100) 终止值,循环在100结束
{ sum=sum+k;
k=k+2;} 控制变量必需增值
printf(“%d”,sum);}
共 20页 第 22 页
例:计算 2-4+6-8+10-…..-100
main()
{ int t;
float j,sum;
j=1; sum=0;t=1;
t—中间项符号
while (j<=100)
{ sum=sum+t*1/j;
j=j+1;t=t*(-1); 中间项符号改变
}
printf(“\n j=%f, sum=%f”,j,sum)
}
共 20页 第 29 页
§4-1 while语句-实例
共 20页 第 23 页
例:计算 2-4+6-8+10+…..-100
程序如下:
main()
从两个例子看,一个循
{ int k,sum,t;
环必需有三个值来控制
sum=0; t=-1;
k=100;
初始值,循环从2开始
while (k>=2) 终止值,循环在100结束
{ sum=sum+k*t;
k=k-2;t=t*(-1); } 控制变量必需增值
老师:让我们换一个角度来看待这些问题, 以上问题的实质是:将scanf函数重复执行N遍。
学生:对!好象是 这么回事...... 老师:我们可以引出一个概念“循环”,简单而言:循
C语言程序设计PPT课件 第6章
§6.4 do-while语句 语句
一般形式: 一般形式: do 语句 while (表达式 表达式) 表达式 直到型”循环结构。 特点:“直到型”循环结构。
先执行一次“语句” 后判“表达式” 先执行一次“语句”,后判“表达式”,当“表 达式” 达式 ” 非 0, 再执行 “ 语句 ” , 直到 “ 表达式 ” , 再执行“ 语句” 直到“ 表达式” 为0,循环结束。 ,循环结束。
100
i
。
i=1,sum=0 假 i<=100 真 sum=sum+i i=i+1
i = 1
main() { int i,sum=0; i = 1; loop: if (i <= 100) /*标号表示程序指令的地址 当i≤100时,执行加法 */ 标号表示程序指令的地址,当 标号表示程序指令的地址 时 { sum = sum + i; i++; goto loop; /*无条件转向标号 无条件转向标号loop处的指令 */ 无条件转向标号 处的指令 } printf("%d",sum); }
goto语句有两种用途,一是与if语句一起构成 goto语句有两种用途,一是与if 语句有两种用途 if语句一起构成
循环结构,另一是从循环体中跳转到循环体外。 循环结构,另一是从循环体中跳转到循环体外。
[例6.1] 用if语句和 例 语句和goto语句构成循环, 语句构成循环, 语句和 语句构成循环 求∑
§6.3 while语句 语句
一般形式: 表达式) 一般形式:while (表达式 语句 表达式 作用:实现“当型”循环。 作用:实现“当型”循环。
假 当P为真 为真 A
表达式” 当“表达式”非0(真)时, 执行while语句中的内嵌“语句”。语句 ”
C语言程序设计PPT课件第6章 循环控制结构
2018/12/11 33/63
猜数游戏用到的库函数
每次运行程序时计算机所“想”的数都是一样的, 这是什么原因呢? – 函数rand()产生的只是伪随机数 随机函数srand – 为函数rand()设置随机数种子来实现对函数rand所产
生的伪随机数的 “随机化”
通过输入随机数种子,产生[0,100]之间的随机数
循环条件第一次就为假(如 输入-1)时会怎样?
16/63
【例6.1】计算并输出1+2+3+…+n的值
条 件P
真 假 假
当 型 循 环
A
2018/12/11 Testing Condition First
17/63
【例6.1】计算并输出1+2+3+…+n的值
A
假
条 件P
真
直 到 型 循 环
2018/12/11
使用了6个不同的变量 start Input n1 Input n2 Input n3 input n4 input n5 sum ← n1+n2+n3+n4+n5
n1
n2
2
3
n3
n4 n5
sum
4
5
6
20
output sum
2018/12/11
end
4/63
6.1循环控制结构与循环语句
如何对循环进行控制呢?
第6章 循环控制结构
本章学习内容
计数控制的循环 条件控制的循环 for语句,while语句,do-while语句 continue语句,break语句 嵌套循环 结构化程序设计的基本思想 程序调试与排错
猜数游戏用到的库函数
每次运行程序时计算机所“想”的数都是一样的, 这是什么原因呢? – 函数rand()产生的只是伪随机数 随机函数srand – 为函数rand()设置随机数种子来实现对函数rand所产
生的伪随机数的 “随机化”
通过输入随机数种子,产生[0,100]之间的随机数
循环条件第一次就为假(如 输入-1)时会怎样?
16/63
【例6.1】计算并输出1+2+3+…+n的值
条 件P
真 假 假
当 型 循 环
A
2018/12/11 Testing Condition First
17/63
【例6.1】计算并输出1+2+3+…+n的值
A
假
条 件P
真
直 到 型 循 环
2018/12/11
使用了6个不同的变量 start Input n1 Input n2 Input n3 input n4 input n5 sum ← n1+n2+n3+n4+n5
n1
n2
2
3
n3
n4 n5
sum
4
5
6
20
output sum
2018/12/11
end
4/63
6.1循环控制结构与循环语句
如何对循环进行控制呢?
第6章 循环控制结构
本章学习内容
计数控制的循环 条件控制的循环 for语句,while语句,do-while语句 continue语句,break语句 嵌套循环 结构化程序设计的基本思想 程序调试与排错
第6章 循环控制PPT课件
(最易理解的形式)
for(变量赋初值;循环条件;循环变量增值)语句
例:
#include <stdio.h>
void main( )
{
int i,sum=0;
/*将累加器sum初始化为0*/
for(i=1; i<=100; i++)
sum=sum+ i;
/*实现累加*/
printf(“Sum=%d\n",sum);
程序可能陷入“死循环”。
2021/4/6
4
例1:程序举例
1至100求和。
# include <stdio.h> void main( ) {int i, sum=0;
i=1; while(i<=100)
{sum=sum+i; i++; }
2021/4/6
printf(“Sum=%d”,su m);
面的表达式一开始就为假(0)时,两种循环的结果
可能是不同的。
7
例2:程序举例 1至100求和。
# include <stdio.h> void main( ) {int i, sum=0;
i=1; while(i<=100)
{sum=sum+i; i++; } printf(“%d”,sum); }
讲义与备忘
C语言程序设计
2021/4/6
测井研究中心
89733317 (O)
1
第6章 循环控制
循环结构是结构化程序三种基本结构之一, 与顺序结 构、选择结构共同作为各种复杂程序的基本单元, 是C语言学习的基本内容和重要内容之一。
for(变量赋初值;循环条件;循环变量增值)语句
例:
#include <stdio.h>
void main( )
{
int i,sum=0;
/*将累加器sum初始化为0*/
for(i=1; i<=100; i++)
sum=sum+ i;
/*实现累加*/
printf(“Sum=%d\n",sum);
程序可能陷入“死循环”。
2021/4/6
4
例1:程序举例
1至100求和。
# include <stdio.h> void main( ) {int i, sum=0;
i=1; while(i<=100)
{sum=sum+i; i++; }
2021/4/6
printf(“Sum=%d”,su m);
面的表达式一开始就为假(0)时,两种循环的结果
可能是不同的。
7
例2:程序举例 1至100求和。
# include <stdio.h> void main( ) {int i, sum=0;
i=1; while(i<=100)
{sum=sum+i; i++; } printf(“%d”,sum); }
讲义与备忘
C语言程序设计
2021/4/6
测井研究中心
89733317 (O)
1
第6章 循环控制
循环结构是结构化程序三种基本结构之一, 与顺序结 构、选择结构共同作为各种复杂程序的基本单元, 是C语言学习的基本内容和重要内容之一。
第4讲 循环控制30页PPT
输出:
5050
24.05.2020
13
100
例4-2 用while语句求 n n 1
main() {
int i,sum=0; i=1; while(i<=100)
{ sum=sum+i; i++; } printf("%d\n",sum); }
传统流程图
输出:
5050
24.05.2020
计算机与信息工程分院
例4-4 while和do-while循环比较
main() {int sum=0,i; scanf(“%d”,&i); while(i<=10)
{sum=sum+i; i++; } printf(“sum=%d”,sum); }
main() {int sum=0,i; scanf(“%d”,&i); do
分类:
循环体
1)用goto语句和if语句构成循环;
2)用while语句;
3)用do-while语句;
4)用for语句
24.05.2020
返回主菜单
2
2.循环控制语句(1)
计算机与信息工程分院
2.1 goto语句 一般形式: goto 语句标号;
由字母、数字和下划线组 成,不能使用整数
例 4-1
24.05.2020
2.循环控制语句(5)
2.5 几种循环的比较
1)四种循环都可以用来处理同一个问题,一般可 以互相代替。但一般不提倡用goto型循环。
2)while和do-while循环,循环体中应包括使循环 趋于结束的语句。for语句功能最强。
3)用while和do-while循环时,循环变量初始化的 操作应在while和do-while语句之前完成,而 for语句可以在表达式1中实现循环变量的初始 化。
循环控制ppt课件
是
提示:猜对了。 程序结束
系统产生数据
输入数据
太大了
是
x
y
printf(“太大了!\n“);
else
printf(“太小了!\n“);
if(y>x)
if(y<x)
#include <stdio.h> #include <time.h> #include <stdlib.h> void main() {int x,y; srand(time(0)); //以系统时钟作为随机种子 x=rand()%100; //产生随机数 }
j
%d
j,
{ }
for(j=1;j<=9;j++)
,j;
printf(“\n”);
printf(“\n”);
i*j
以上3种形式的循环结构可以相互嵌套。
1
一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。
2
4、循环结构的嵌套
3:输入一个任意位数的正整数,然后由低位到高位输出每一位上的数字。如输入456789,则输出9,8,7,6,5,4
引申练习:可以玩多次的猜数游戏,知道不想玩为止。
引申练习:输入一个任意位数的正整数,然后由高位到低位输出每一位上的数字。 如输入446789,则输出4,5,6,7,8,9
for( )
用来实现“当型”循环
流程图:
条件p
循环体
真
假
后续语句
1、循环结构之 ——while语句
形式: while (条件) { 循环体 }
练习:输出100以内所有整数。
#include <stdio.h> void main() {int i=1; while(i<100) { printf(“%d”,i); i=i+1; } }
提示:猜对了。 程序结束
系统产生数据
输入数据
太大了
是
x
y
printf(“太大了!\n“);
else
printf(“太小了!\n“);
if(y>x)
if(y<x)
#include <stdio.h> #include <time.h> #include <stdlib.h> void main() {int x,y; srand(time(0)); //以系统时钟作为随机种子 x=rand()%100; //产生随机数 }
j
%d
j,
{ }
for(j=1;j<=9;j++)
,j;
printf(“\n”);
printf(“\n”);
i*j
以上3种形式的循环结构可以相互嵌套。
1
一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。
2
4、循环结构的嵌套
3:输入一个任意位数的正整数,然后由低位到高位输出每一位上的数字。如输入456789,则输出9,8,7,6,5,4
引申练习:可以玩多次的猜数游戏,知道不想玩为止。
引申练习:输入一个任意位数的正整数,然后由高位到低位输出每一位上的数字。 如输入446789,则输出4,5,6,7,8,9
for( )
用来实现“当型”循环
流程图:
条件p
循环体
真
假
后续语句
1、循环结构之 ——while语句
形式: while (条件) { 循环体 }
练习:输出100以内所有整数。
#include <stdio.h> void main() {int i=1; while(i<100) { printf(“%d”,i); i=i+1; } }
《C程序设计-循环》课件
3
循环的边界检查
重点讲解在循环中进行边界检查的重要性,以及如何避免数组越界和空指针错误。
循环在算法中的应用
介绍循环在算法中的常见应用,如排序、查找、递归等。演示如何利用循环 构建高效的算法解决实际问题。
循环编程思想与程序设计的思 路
探讨循环思想对程序设计的重要性,以及如何运用循环思维解决复杂问题。 讲解程序设计的基本思路和注意事项。
循环的概念及基本语法
介绍C语言中循环的基本概念和语法,包括fo r 、w h i le和d o -w h i le等循环结构,以及在程序中的作用和常见应 用场景。
循环变量的初始化及修改
详解循环时变量初始化的重要性,以及在循环内部对变量进行修改的技巧。 强调避免在循环中引入多余的变量或错误的修改。
循环的控制语句
介绍循环中常用的控制语句,包括break和co n t in u e的使用方法和注意事项。 演示如何利用这些语句优化循环结构和提高程序效率。
嵌套循环的使用及应用
讲解如何在循环中嵌套其他循环,并给出实际应用示例,如矩阵运算、图形 绘制等。提供避免嵌套循环陷入无限循环的技巧。
循环处理数组元素
探讨如何使用循环遍历数组,并给出示例代码和常见应用场景,如数组排序、查找最大值等。讲解如何避免数 组越界时间复杂度分析
在循环中评估算法的时间复杂度,解释如何选择最优算法和避免性能问题。
2
循环的效率问题
讨论循环中的常见效率问题,如死循环、多余计算等,给出解决方案和优化建议。
《C程序设计-循环》PPT 课件
A comprehensive presentation on the topic of loops in C programming. Covering the concepts, syntax, usage, and optimization techniques, as well as practical applications and comparison with recursion.
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
穷举(枚举)问题
for (men = 0; men <= 45; men++) for (women = 0; women <= 45; women++) for (child = 0; child <= 45; child++)
if ((men+women+child==45) && (men*3+women*2+child*0.5==45)) printf("men=%d women=%d child=%d\n", men, women, child);
比较循环次数
for (men = 0; men <= 15; men++) for (women = 0; women <= 22; women++){ child = 45 – women – men; if (men * 3 + women * 2 + child * 0.5 == 45)
printf("men=%d women=%d child=%d\n", men, women, child);
#include <stdio.h> int main(void) { int fahr, lower, upper; double celsius; printf("Enter lower:"); scanf("%d", &lower); printf("Enter upper:"); scanf("%d", &upper); printf("fahr celsius\n"); /* 温度重复转换:华氏温度从lower开始,到upper结束, 每次增加1°F */ for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); } }
}
练习: 100元钱换成10元,5元,2元,1元,每种 至少一张,总共换40张,求有多少种换法?
例15:输入两个正整数,求其最 大公约数和最小公倍数。
法1:利用定义求GCD
main()
{scanf(―%d,%d‖,&m,&n); i=m>n?n:m; while (i>=1) { if (m%i= =0 && n%i= =0)
6)表达式1和3还可以是逗号表达式;
7)表达式2通常为关系表达式和逻辑表达式。如: for(i=0;(c=getchar( ))!= ’\n’;i+=c); 若输入的不是换行符’\n’就执行循环体。
例5:求6!的值,即求6的阶乘。
6!= 1*2*3*4*5*6 思路:
累乘求积
例6,输出一张华氏-摄氏温度转换表,华氏 温度的取值范围是[lower, upper],其中 lower和upper两个整数要求输入,每次增加 1°F。 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7
4 1 1 1 1 3 5 7
练习:输入一个正整数n,计算下式的前n项 之和。
1 1 1 1 1 1 4 7 10 13 16
练习:计算S的值,直至最后一项小于10-5 x 2 x3 S x ...... 3! 5!
练习:求5+55+555+5555+55555的值。 练习:求1+12+123+1234+12345的值。 练习:求1! + 2! + …. + 100!的值。
谭浩强第2版:P120
6.2、 6.3、 6.4、 6.6、 6.7、6.8、 6.9、 6.14
7.4 循环的嵌套
循环的嵌套:一个循环体内包含另一 个完整的循环结构。 包括:双重循环、多重循环 3种循环语句(while、do—while、for) 可以相互嵌套。
例1.11 输出5行字符串“*****”
***** ***** ***** ***** *****
延伸: 输出如下由字符构成的图形:
main() { int a,b,m,n,temp; scanf("%d, %d", &a, &b); m=a; n=b; if(m<n) /*交换两个数,使大数放在m 上*/ { temp=m; m=n; n= temp;} while( n != 0 ) /*利用辗除法,直到b为0为止
*/
{ temp=m%n; m=n; n=temp; } printf(―GCD is: %d\n",m); printf(―LCM is: %d\n",a*b/m);
7.6 break语句和continue语句
break语句 一般形式为:break; break除用于switch结构外,还可用于循环语 句提前结束当前循环。 continue语句
一般形式为:continue;
其作用为结束本次循环,进行下一次是否执行循环的 判定。 例8:把100~200之间不能被3整除的数输出。
for (i=m>n?n:m ; ;i--)
if (m%i= =0 && n%i= =0)
break;
i--; } GCD=i; }
break;
作业:利用定义求其最小公倍数。
法2:利用辗除法求GCD
辗除法即欧几里德算法,利用如下定理:令整数 m=n*q+r1,则GCD(m,n)=GCD(n,r1)=…=GCD(rn , 0) = rn 另有公式:GCD(m,n) × LCM(m,n) = m×n
例10:求Fibonacci数列前20位数。 例11:判别某数是否为素数。 例12:求100-200间的全部素数。
例13:从键盘读入一个正整数,统计该数一共 有几位数。
练习:将一个正整数逆序输出。
练习:输入一个正整数,从高位开始逐个
某地需要搬运砖块,已知男人一人搬3块,女人 一人搬2块,小孩两人搬一块。 问用45人正好搬45块砖,有多少种搬法?
7.3 for 语句
for语句的使用最灵活,可完全代替while语句。 一般形式为:
for(表达式1;表达式2;表达式3) { 语句 }
最简单、最易理解的形式为:
for(循环变量初值;循环条件;循环变量增值) { 语句 }
求解表达式1
假
表达式2
真 语句
求解表达式3
例:重写例4题中1~100的和。
for语句的下一语句
break:终止当前循环或switch结构。(就近原则)
continue:结束本次循环,继续下一次循环。 while ()
{ | break; |
while ()
{ | continue; |
}
}
7.7 程 序 举 例
例9:使用格里高利公式求π的近似值,要求 精确到最后一项的绝对值小于10–4。
for(表达式1;表达式2;表达式3)
{ 语句
}
表达式1; while (表达式2)
{
语句
表达式3;
}
关于for语句的使用说明:
1)可省略表达式1,但应保留分号; 2)若省略表达式2,则不判断循环条件,死循环; 3)若能保证正常结束循环,也可省略表达式3; 4)可同时省略表达式1和3,此时完全等同while语句; 5)三个表达式可同时省略,死循环;
}
7.8 goto 语句及其构成的循环
goto语句为无条件转向语句,一般形式为: goto 语句标号; 语句标号的命名规则与变量名相同。 goto语句程序的可读性差、无规律,不符合结 构化程序设计原则,因而只有在万不得已时才使用。
例16: goto和if语句求用求1+2+...+100
作 业:
***** ***** ***** ***** *****
例7: 求1! + 2! + …. + 100!
7.5 3种循环的比较
1)while循环和for循环,功能上可完全互相代替。后者更 突出循环的内容,适合控制循环次数。 2)while和do—while循环,循环变量的初始化应在while和 do—while语句之前完成,而for语句可在表达式1中完成。 3)while和for是先判断后执行,do—while是先执行后判断。 4)while、do—while、for可用break和continue控制。 5)不提倡用goto语句实现循环。