第6章 循环控制

合集下载

第六章 循环控制

第六章 循环控制

第六章循环控制教案目的及要求:1)熟练掌握三种循环语句的运用;2)掌握break和continue语句的运用。

教案重难点:1)循环语句; 2)循环的嵌套; 3)break和continue语句。

主要教案环节的组织:结合习题、上机掌握循环语句的用法教案内容:§6.1 概述循环结构是程序中一种很重要的结构。

其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。

给定的条件称为循环条件,反复执行的程序段称为循环体。

C语言提供了多种循环语句,可以组成各种不同形式的循环结构。

b5E2RGbCAP§6.2 goto语句以及用goto 语句构成循环程序中的语句通常总是按顺序方向,或按语句功能所定义的方向执行的。

如果需要改变程序的正常流向,可以使用转移语句。

在C语言中提供了4种转移语句:goto,break, continue和return。

其中的return语句只能出现在被调函数中,用于返回主调函数,我们将在函数一章中具体学习。

p1EanqFDPwgoto语句也称为无条件转移语句,其一般格式如下: goto 语句标号;其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号(:>。

语句标号起标识语句的作用,与goto 语句配合使用。

如:label: i++;loop: while(x<7>; DXDiTa9E3dC语言不限制程序中使用标号的次数,但各标号不得重名。

goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。

goto语句通常与条件语句配合使用。

可用来实现条件转移,构成循环,跳出循环体等功能。

但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。

RTCrpUDGiT例:#include"stdio.h" /*统计从键盘输入一行字符的个数 */5PCzVD7HxAvoid main(>{int n=0; printf("input a string\n">;loop: if(getchar(>!='\n'>{ n++;goto loop; }printf("%d",n>;}本例用if语句和goto语句构成循环结构。

第六章循环控制

第六章循环控制


continue语句的一般形式为: continue; 其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
IC-MSP V2.0
continue语句和break语句的区别
continue语句和break语句的区别 是:continue语句只结束本次循 环,而不是终止整个循环的执行。 而 break语句则是结束整个循环 过程,不再判断执行循环的条件 是否成立。如果有以下两个循环 结构:

(7) 表达式一般是关系表达式(如 I<=100)或逻辑表达式(如a<b && x<y),但也可以是数 值表达式或字符表达式,只要其值为非零,就执行循环体。例如:
for(i=0;(c=getchar()!='\n';i+=c); for(;(c=getchar())!='\n';) printf("%c",c);
C程序设计
第六章 循环控制IC-MSP V2源自06.1 3种循环控制语句
while语句 do-while 语句 for 语句
IC-MSP V2.0
While语句
while语句用来实现“当型”循 环结构。其一般形式如下: while(表达式)语旬 当表达式为非0值时,执行while 语句中的内嵌语句。其流程图见 图6.1。其特点是:先判断表达 式,后执行语句。
IC-MSP V2.0
1 若i为整型变量,则以下循环执行次数是 for(i=2;i==0;) printf("%d",i--); A) 无限次 B) 0次 C) 1次 D) 2次 3 下面程序的运行结果是 #include <stdio.h> main() {int y=10; do{y--;}while(--y); printf("%d\n",y--); } A) -1 B) 1 C) 8 D) 0 5 下面程序的运行结果是 #include <stdio.h> main() {int a=1,b=10; do {b-=a;a++;}while(b--<0); printf("a=%d,b=%d\n",a,b); } A) a=3,b=11 B) a=2,b=8 C) a=1,b=-1 D) a=4,b=9

工学第6章循环控制课件

工学第6章循环控制课件
❖ if +goto 语句(不符合结构化程序设计原则, 故一般不用)
❖ while 语句 ❖ do-while 语句 ❖ for 语句
Page 2
C语言 程序设计
第6章 循环控制
第6章 循环控制
举例 求1—100之间所有整数的和
开始


0→sum

1→i


i<=100

sum+i→sum
i+1→i
printf("\n");
}
}
Page 20
C语言 程序设计
第6章 循环控制
6.6 循环结构程序设计举例
举例:累加、连乘算法
❖累加算法之累加通式:
累加和变量=累加和变量+累加项
❖连乘算法之连乘通式:
连乘积变量=连乘积变量*连乘项
算法举例:
❖求和、求平均
❖求π的近似值
❖求n!
❖求1!+2!+ … +n!
C语言 程序设计
举例
第6章 循环控制
从键盘上输入若干个整数,求总和及平均值,输入-1结束
#include <stdio.h>
void main( )
{ int x, i=0; float sum=0, aver;
scanf("%d",&x);
while ( x!=-1 )
{sum+=x;
或 for (; x!=-1;)
格式:do 语句 while (表达式) ;
语句 循环体
循环体 直到条件成立时
典型的 直到型 循环
表达式 假(0) 真(非0)

06_第06章 循环控制

06_第06章  循环控制
表达式 非0 语句 0
说明: 说明: 循环语句时, (1)执行 )执行while循环语句时,如果表达式的值第一次 循环语句时 计算就等于0,则循环体一次也不执行。 计算就等于 ,则循环体一次也不执行。 循环结束执行: (2)发生下列情况之一时,while循环结束执行: )发生下列情况之一时, 循环结束执行 • 表达式的值为 ; 表达式的值为0; • 循环体内遇到 循环体内遇到break语句; 语句; 语句 • 循环体内遇到 循环体内遇到goto 语句,且与该 语句,且与该goto语句配合使 语句配合使 用的标号所指定的语句在本循环体外; 用的标号所指定的语句在本循环体外; • 循环体内遇到 循环体内遇到return语句,此时退出 语句,此时退出while循环后, 循环后, 语句 循环后 执行的流程从包含该while语句的函数返回到调用 执行的流程从包含该 语句的函数返回到调用 函数。 函数。
100
例6.2 求 n main( ) n=1 { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf(“%d”,sum); }

i=1,sum=0 零 i<=100? 非零 sum=sum+i i=i+1
说明: 说明: 1)循环体中如果包含一个以上的语句,应该用 )循环体中如果包含一个以上的语句, 花括号括起来; 花括号括起来; 2)在循环体中应有使循环趋于结束的语句,避 )在循环体中应有使循环趋于结束的语句, 免进入死循环;在本例中, 免进入死循环;在本例中,设置循环条件为 i<100,然后语句中有出 ,这样就不会出 ,然后语句中有出i++, 现死循环。 现死循环

第六章 循环控制

第六章 循环控制
6.8.1 break 语句
语法: 语法 break ; 功能:终止包含该语句的最内 功能 层循环。 · 不能用于循环语句和switch语 句之外的任何其他语句。 main( ) { int n; for(n=1;n<=10;n++) { if(n%3= =0) break ; printf(“%6d”,n); } }
while( ) { do { ··· } while( ); } while循环体嵌套 循环体嵌套 循环体 do_while循环 循环 do { for( ; ; ) { ··· } }while( ); do_while循环体嵌套for循环 循环体嵌套 循环 循环体嵌套
19
break和continue语句 6.8 break和continue语句
(4)for 语句的循环体还可为另一个循环语句 例如:
for(i=1;i<=2;i++) for(j=1;j<=2;j++) { printf(“%3d”,i+j); printf(“\n”); } output: 2 3 3 4
for(i=1;i<=2;i++) { for(j=1;j<=2;j++) printf(“%3d”,i+j); printf(“\n”); } output: 2 3 3 4
while(表达式)语句 (表达式) 执行过程: 执行过程: 0 表达式 非0 语句
∑n
n =1
i=1
否 i<=100? 是 sum=sum+i i=i+1
先判断循环条件, 先判断循环条件,后执行循环 体语句
4
main()

第六章 循环控制

第六章 循环控制

对下半部每一行:$数+空格数=列数(n) 行数 $数 空格数(单边) ㄩ$ $ $ $ $ 1 n-1*2 1 ㄩㄩ$ $ $ 2 n-2*2 2 ㄩㄩㄩ$ 3 n-3*2 3 i n-i*2 i
分析:分上下两部分考虑
上一页
5 下一页 返回上一级
#include <stdio.h> void main( ) { int n_blank, n_dollar, i, j, n, m; scanf(“%d”, &n);/*输入图案行数数目(奇数)*/ m=(n+1)/2; /*图案上半部的行数数目*/
循环嵌套
一个循环体内包含另一个完整的循环结构, 称为循环的嵌套。while循环、do-while循环和
for循环可以互相嵌套。
while() do do for(;;) { for(;;) {┋ while() {┋ {┋ do ┋ {┋ {┋ do while() for(;;) for(;;) {… } while() {… } {} while(); {} {┋ } while(); {… } ┋ } } ┋ } } } } while(); while();
上一页
下一页 返回上一级
for (i = 1; i < m; i++) /*下半部行控制,总共m-1行*/ { n_blank = i; /* i行的空格数目*/ n_dollar = n – 2 * i; /*i行的$数目*/ for (j = 0; j < n_blank; j++) putchar(‘ㄩ‘); /*输出i行空格*/ for (j = 0; j < n_dollar; j++) putchar(‘$’); /*输出i行$*/ putchar(‘\n’); /*换行*/ }

第六章循环控制

第六章循环控制

第六章循环控制通过本章实验作业应达目标1.熟悉while、for、do_while、break、continue语句的作用与使用规范。

2.学习并掌握利用while语句、for语句、do_while语句实现循环结构。

3.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。

4.进行算法设计训练,能综合所学控制结构语句解决一般问题。

本章必须上交作业程序6_1.c、6_2.c、6_5.c、6_6.c、6_8.c上传至211.64.135.121/casp。

本章开始,上机实验项目量加大,希望同学们多多自行上机。

本章实验项目有余力都可以做一下并上交。

循环程序设计计算机解决问题都是按指定的顺序执行一系列的动作。

按照特定的顺序执行相应的动作来求解问题的过程称为算法。

程序中的语句是算法的体现,而算法要解决的是“做什么”和“怎么做”的问题。

计算机程序中指定语句的执行顺序称为“程序控制”。

结构化的程序控制包含三种基本结构:顺序结构,选择结构和循环结构。

1. 循环设计循环是在循环条件为真时反复执行的一组计算机指令,是计算机解题的一个重要结构。

循环控制有两种基本方法:计数法和标志法。

1)计数器控制的循环事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。

每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。

教材例6.2、6.3、6.7都是典型的计数器控制的固定次数次数循环。

2)标志控制的循环事先不知道准确的循环次数,由某一目标值标记循环的结束。

如,教材例6.6中以|t|的值达到标记下限值1e-6作为循环的结束。

循环设计时要注意合理设计循环条件,使得循环不会成为死循环。

2. 算法程序设计的首要工作是算法设计,离开了算法也就没有了程序。

算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。

循环主要用来解决程序设计中两类基本的算法:穷举和迭代。

第6章 循环控制

第6章 循环控制

例6.2 用while语句实现循环,求 n
n =1
100
#include <stdio.h> void main() { int n, sum; sum=0; n=1; while ( n<=100 ) { sum = sum+n; n++; } printf("%d\n",sum); }
§6.4 用do-while语句实现循环
表达式 表达式 1 1 假 假 表达式 2 2 表达式 真真 …… …… 真真 表达式 表达式 4 4 continue break 假假 …… …… 表达式 3 3 表达式 for循环的 for循环的 下一条语句 下一条语句
例6.5 把100~200之间的不能被3整除的数输出
#include <stdio.h> void main() { int n; //存放数 for ( n=100; n<=200; n++ ) { if (n%3==0) continue; if(n%3!=0) printf ("%d ",n); printf("%d ",n); } }
例如: for(n=1; n<=100; ) { sum=sum+n; n++; }
4. 可同时省略表达式1和表达式3,只有表达式2,此 时相当于while语句。 例如:n=1; 等价于:n=1; for(; n<=100;) while(n<=100) { sum=sum+n; { sum=sum+n; n++; n++; } }
§6.9 程序举例
例6.6 用π/4≈1-1/3+1/5库函数1/7+… fabs(t), 公式求π的近似值,直到某一项 头文件math.h 的绝对值小于10-6为止。 设: s为当前项的分子, n为当前项的分母, t为当前项, pi为π。

第6章 循环控制

第6章 循环控制

例 用while循环求
循环初值
循环变量增值
/*ch5_2.c*/ #include <stdio.h> main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); }
循环条件
循环终值
循环体
例 显示1~10的平方
3 21 144 987 6765 46368 317811 2178309 14930352 102334155
例 判断m是否素数 读入m k=m i=2
当ik
真 m被i整除

用break 结束循环 i=i+1 真 ik+1 假
输出:m”不是素数” 输出:m”是素数”
例 译密码
例如 Hello,world! 译成密码:Lipps,asvph!
循环的嵌套
三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套循环的执行流程 (1) while() 嵌套循环的跳转 (3) while() (4) for( ; ;) (2) do { …… 禁止: { …… { …… { …… while() 从外层跳入内层 do do do { …… 跳入同层的另一循环 { …… { …… { …… } }while(); }while( ); }while( 向上跳转 );
程序举例
t=1,pi=0,n=1.0,s=1 当|t|1e-6 pi=pi+t n=n+2 s=-s t=s/n pi=pi*4 输出pi 分子:1,-1,1,-1… 分母:1,3,5,7,...
例 求Fibonacci数列:1,1,2,3,5,8,……的前40个数

C语言课件:5_第六章 循环控制

C语言课件:5_第六章   循环控制
如:上例while语句中用花括号括起来的复合语句。
3. 循环控制变量:在循环条件中控制测试条件为 真或为假的变量。
如:上例while语句中使用的变量 i 。
注意:
⑴循环条件中的表达式一般是逻辑表达式或关系 表达式,也可以是算术表达式(非0为真,0为 假)。一般表达式中应含有循环控制变量。
while (3)
如果循环体可能一次也不执行时,用while语句。
(循环体至少执行一次) /*只有当用户键入q或Q,才结 束循环*/ char c; do { c=getchar();
printf(“%c”,c); }while(c!=‘q’&&c!=‘Q’);
(循环体可能一次不执行) /*只有不是q或Q的字符才被打 印*/ char c; c=getchar(); while (c!=‘q’&&c!=‘Q’); { printf(“%c”,c);
goto 语句为无条件转向语句,其作用为: 使程序的执行无条件地转移到指定处。
一般形式: goto 语句标号;
执行过程:执行语句时,程序转移到以标号 (定名规则与变量相同)为前缀的语句处继续 执行。
如:向前跳 goto label; …… …… label:语句;
向后跳 label:语句; …… …… goto label;
切记:不要从循环体外跳到循环体内!
二、用goto语句和 if 语句构成循环
例:计算10!并输出结果。
void main() { int i=1, sum=1; loop: if (i<=10)
{ sum=sum*i; i++; goto loop;
} printf(“10!=%d\n”,sum); }

第6章 循环控制

第6章  循环控制
例1、for(sum=0;i<=100;i++) sum = sum + i; 例2、for(sum=0,i=1;i<=100;i++) sum = sum + i; 例3、for(i=0,j=100;i<=j;i++,j--) k = i + j; 例4、for(i=0;(c=getchar()) != '\n';i += c);
§6.4 do-while语句
一般形式:
do 语句 while (表达式)

特点: “直到型”循环结构。先执行一次“语 句”,判“表达式”,当“表达式”非0, 再执行“语句”,直到“表达式”为0, 循环结束。
[例6.3] 用do-while语句求
main() { int i,sum=0; i = 1; do { sum = sum + i; i++; } while(i<=100); printf("%d",sum); }
[例6.9] 求100~200间的全部素数。
算法:与上例类似。 程序:
#include "math.h" main() {int m,k,i,n=0; /* n用于累计素数的个数 */ for(m=101; m<=200; m=m+2) {if(n%10 == 0) printf("\n"); k = sqrt(m); for(i=2; i<=k; i++) if (m%i == 0) break; if (i >= k+1) { printf("%d ",m); n=n+1;} } }

第6章循环控制.ppt

第6章循环控制.ppt

} while(i<=100); 循环终值
printf("%d\n",sum);
}
用do…while语句实现循环 (6.4)
第6章 循环控制
do…while语句
说明: while后面的表达式必须用括号括起。 循环体如果包含一个以上的语句,应该用花括弧括 起来,以复合语句形式出现。
至少执行一次循环体。流程图 循环体可以为空。 do~while可转化成while结构。(见图6.5 P116)
执行流程:
for语句等价于如下的while循环形式: 表达式1; while (表达式2)
{ 语句 表达式3;
}
用for语句实现循环 (6.5)
第6章 循环控制
for语句
for语句最简单的应用形式: for (循环变量赋初值; 循环条件; 循环变量增值)语句
100
例:用for循环求 n 。
正确设置循环控制条件。 is+u+m;=sum+i;
在循环体中应有使循环趋向} 于i+结+;束的语句。
printf("%d\n",sum);
}
用while语句实现循环 (6.3)
第6章 循环控制
应用举例
例1:输入//例一2行.求字两符个,正输整出数滤的去最其大中公空约格数字.符后的字符
计数法 条件判断法
循环结构概述 (6.1)
C语言可实现循环的语句:
goto 语句 (一般不用) while 语句 do…while 语句 for 语句
第6章 循环控制
用while语句实现循环 (6.3)
第6章 循环控制

第六章 循环控制讲义

第六章 循环控制讲义

注意:这个while 后面有分号
printf(“1*2*…*%d=%ld\n”, n–1, prod); return; }
do… while 循环控制语句:例
#include <stdio.h> void main( ) { long int prod=1; int n=1; do { prod=prod*n; n++; } while(n<=10);
while(n<=10) { prod=prod*n; n++; }
注意:将内嵌的 循环体语句用大 括号括起来形成 一个复合语句。
printf(“1*2*…*%d=%ld\n”, n–1, prod); return; }
课堂练习:while 语句
◆ 1. 下面程序执行的结果是( )。
void main( ) 答案: (B) { int n = 1; while(n = 1) n --; printf(“n=%d\n”, n); }
do… while 循环控制语句:例
例:编程计算1×2×3×…×n ,n=10
现在使用专门的循环控制语句do….while来 实现。
既然是专门的循环控制语句,就不需要使用if 或者goto语句,因为它们内部已经包含了这 样的控制过程。
do… while 循环控制语句:例
#include <stdio.h> void main( ) { long int prod=1; int n=1; do { prod=prod*n; n++; } while(n<=10);
语句
表达式
F
do…while 语句
由do…while语句的执行过程可见,在do… while循环控制语句中也隐含了用if判断条件, 用goto直接跳转的循环流程。 do…While语句的注意事项: ①当循环体语句多于一个时,必须用大括号把 它们括起来构成复合语句。 ②while(表达式) 后面有分号。 ③不论第一次求解表达式的值是什么,循环体 语句至少被执行一次。

循环控制

循环控制
语句标号 无条件转向语句 goto 语句可以构造循环, goto 语句可以构 但不主张用,因为它容易破 造循环,但不主张用, 造循环,但不主张用, 坏结构化程序设计。 因为它容易破坏结构 化程序设计。 化程序设计。
while语句 6.3 while语句 while语句是专门用于实现循环控制的语 while语句是专门用于实现循环控制的语 句之一。 句之一。 其一般形式为: 其一般形式为: 表达式) while (表达式) 语句
6.6 循环的嵌套 循环体内又包含另一个完整的循环结构( 循环体内又包含另一个完整的循环结构(多重 循环) 循环)。 外重循环 for(i=1 i<=10 10; for(i=1;i<=10;i++) { for(j=1 j<=20 20; for(j=1;j<=20;j++) 内重循环 { s+=i+j; s+=i+j; 执行200次 } }
测试法求解的程序设计有两个要点: 测试法求解的程序设计有两个要点: 通过循环列出所有可能的解。 ⑴通过循环列出所有可能的解。 ⑵对所有列出的可能的解进行条件测试。 对所有列出的可能的解进行条件测试。
例:判断一个数m是否为素数。 判断一个数m是否为素数。 main() { 用测试法求解 i,m; int i,m; scanf(“% ,&m) ,&m); scanf( %d”,&m); for(i=2 i<m; if(m%i==0)break; for(i=2;i<m;i++) if(m%i==0)break; if(i==m) printf(“\ prime”,m) ,m); printf( \n %d is a prime ,m); else printf(“\ prime”,m) ,m); printf( \n %d is not a prime ,m); }

循环控制

循环控制

当循环体语句组仅由一条语句构成时, (2)当循环体语句组仅由一条语句构成时,可以不 使用复合语句形式,如上例所示。 使用复合语句形式,如上例所示。 循环变量赋初值”表达式, (3)“循环变量赋初值”表达式,既可以是给循环 变量赋初值的赋值表达式, 变量赋初值的赋值表达式,也可以是与此无关的其它表 达式(如逗号表达式)。 达式(如逗号表达式)。 例如, 例如,for(sum=0;i<=100;i++) sum += i; for(sum=0,i=1;i<=100;i++) sum += i; 循环条件”部分是一个逻辑量, (4)“循环条件”部分是一个逻辑量,除一般的关 或逻辑)表达式外,也允许是数值(或字符) 系(或逻辑)表达式外,也允许是数值(或字符)表达 式。如:
{int i=1,sum=0; while(i<=100) {sum=sum+i; i++; }
循环体
printf("sum=%d",sum); }
6.4 do-while语句
1.一般格式 . do { 循环体语句组 } 循环体语句组; while(循环继续条件 循环继续条件); /*本行的分号不能缺省 本行的分号不能缺省*/ 循环继续条件 本行的分号不能缺省 当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。 当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。 2.执行过程 . (1)执行循环体语句组。 )执行循环体语句组。 (2)计算“循环继续条件”表达式。如果“循环继续条件”表达 )计算“循环继续条件”表达式。如果“循环继续条件” 则转向( )继续执行;否则,转向( )。 式的值为非 0(真),则转向(1)继续执行;否则,转向(3)。 ( ),则转向 的下一条语句。 (3)执行 )执行do-while的下一条语句。 的下一条语句 do-while循环语句的特点是:先执行循环体语句组,然后再判断循 循环语句的特点是: 循环语句的特点是 先执行循环体语句组, 环条件。 环条件。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

18
for语句的几种灵活使用形式:
3、省略“表达式3”
“表达式3”的作用是修改循环条件, “表达 式3”省略后,应在循环体(也就是“语句”)中修 改循环条件,以保证循环能正常结束。
例: for(i=1;i<=100; ) { sum = sum + i; i++; }
19
for语句的几种灵活使用形式:
11Biblioteka 例6.4 while和do-while循环的比较
#include <stdio.h> void main ( ) { int sum=0,i; scanf("%d",&i); while (i<=10) { sum=sum+i; i++; } printf("sum=%d\n",sum); }
运行结果: 1↙ sum=55 再运行一次: 11↙ sum=11
说明:当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同。 否则,二者结果不相同。
12
§ 6.5 用for 语句实现循环
• for语句一般用于循环次数已确定的循环,也 可用于循环次数并不确定,只给出了循环结 束条件的循环。for语句可以完全取代while 语句。
26
break语句跳出循环
§6.9 程序举例
例6.7 求Fibonacci数列:1,1,2,3,5,8,....的前40个数, 即:
数列 1 1 2 3 4 1 2 3 5 8 13 …
F1 = 1 (n = 1) F2 = 1 (n = 2) Fn = Fn-1 + Fn-2 (n≥3)
开始 f1 f2 f2 f1 f1 f2 f2 f1 f1 f2 f1=f2+f1 f2=f1+f2 f1=f2+f1 f2=f1+f2
31
例6.8 输入一个数m,判其是否为“素数”。
素数:大于1的整数,除了能被自身和1整除外, 不能被其它正整数整除。
算法:
1
#include <math.h> #include <stdio.h> void main ( ) { int m,i,k; scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) if (m%i == 0) break; if (i >=k+1) printf("%d 是素数\n",m); else printf("%d 不是素数\n",m); } 32
for(i=1;i<=100;i++) { sum = sum + i; }
15
§ 6.5 用for 语句实现循环
for(表达式1;表达式2;表达式3)
{ 语句 }
上面的for语句可以这样来理解:
for(循环变量赋初值;循环条件;循环变量增值)
{ 语句 }
for(i=1;i<=100;i++) sum = sum + i;
算法:



把40个数分为每2个数一组,每组中的两个数的计算方法为:
f1 = f2 + f1
f2 = f1 + f2
29
例6.7程序:求Fibonacci数列的前40项并输出。
#include<stdio.h> void main () { int f1,f2,i; f1 = 1; f2 = 1; // 已知数列的前两个初值 for (i=1; i<=20; i++) { printf("%d %d",f1,f2); f1 = f2 + f1; f2 = f1 + f2; } }
{ area = pi*r*r;
if (area>100) break;
printf("%f",aera);
}
24
§6.8 break语句和continue语句
二、continue语句
作用:提前结束本次循环体的执行,并进行下一次 循环条件的判断。 例6.5 把100~200之间不能被3整除的数输出。
2、省略“表达式2”
“表达式2”的作用是判别循环条件是否满足,“表达式2” 省略后,将不再进行判断,认为循环循环条件始终为“真”,此 时循环会无终止地进行下去。
for(i=1; ;i++) sum = sum + i;
相当于: i = 1; while (1) { sum = sum + i;
i++; }
运行结果: 1↙ sum=55 再运行一次: 11↙ sum=0
#include <stdio.h> void main( ) { int sum=0,i; scanf("%d",&i); do { sum=sum+i; i++; } while (i<=10); printf("sum=%d\n",sum); }
do {… for( ; ; ) {…} … } while();
23
§6.8 break语句和continue语句
一、break语句
作用:跳出所在的多分支switch语句,跳出所在的 while、do-while、for循环语句(终止循环)。
例、计算圆面积,设r=1,2,…10,面积为area, 当 area>100时终止计算。 for(r=1;r<=10;r++)
sum = sum + i;
printf("sum=%d",sum);
}
14
§ 6.5 用for 语句实现循环
for语句的一般形式: for(表达式1;表达式2;表达式3) { 语句 }
执行过程:
(1)求表达式1; (2)求表达式2,若为“真”,执行“语句”, 若为假,转第(5)步。 (3)求表达式3。 (4)转第(2)步。 (5)执行for语句下面的语句。
30
例6.7程序:求Fibonacci数列的前40项并输出。
void main () { int f1,f2; int i; f1 = 1; f2 = 1; // 已知数列的前两个初值 for (i=1; i<=20; i++) { printf("%12d %12d ",f1,f2); //指定宽度输出 if (i%2 == 0) printf(“\n”); // 每行输出两对数 f1 = f2 + f1; f2 = f1 + f2; } }
4
例6.2 求 n
n 1
100
分析: sum=1+2+3+…100 i
0
1 1+2 1+2+3 1+2+3+4 … 1+2+3+…+100 101
sum =sum+i
1
2 3 4 … 100
i = i+1
5
§6.3 用while语句实现循环
例6.2 求 n
n 1 100
void main() { int i,sum=0; i = 1; while (i <= 100) { sum=sum+i; i++; } printf("%d",sum); }
9
例:求i+(i+1)+(i+2)+....+10,其中,i由键盘输入。
while循环程序 do while循环程序
void main()
{ int sum=0,i;
void main()
{ int sum=0,i;
scanf("%d",&i);
while(i <=10) { sum = sum + i; i++; } printf("%d\n",sum);
这是一种典型的死循环。
21
for语句的几种灵活使用形式:
6、for语句的其他变形
例1、for(sum=0;i<=100;i++)
sum = sum + i; 例2、for(sum=0,i=1;i<=100;i++) sum = sum + i; 例3、for(i=0,j=100;i<=j;i++,j--) k = i + j; 例4、for(i=0;(c=getchar()) != '\n';i += c);
scanf("%d",&i);
do { sum=sum+i; i++; } while(i<=10);
}
printf("%d\n",sum); }
10
§6.4 用do-while语句实现循环
while语句和do-while语句的比较:
–在一般情况下,用while语句和用do-while语句 处理同一问题时,若二者的循环体部分是一样的, 它们的结果也一样。 –但是如果while后面的表达式一开始就为假(0)时, 两种循环的结果是不同的。
例6.9 求100~200间的全部素数。
#include <stdio.h>
#include <math.h>
void main () { int m,k,i,n=0; // n用于累计素数的个数
相关文档
最新文档