当前位置:文档之家› C语言(循环结构)

C语言(循环结构)


3.必须限制使用goto,因为滥用goto语句将使程 序流程无规律,可读性差。
4.goto语句的使用实例:
100
例:用if语句和goto语句构成循环,求 ∑n n=1
main() { int i,sum=0; i=1; loop: if (i<=100) { sum=sum+i; i++; goto loop;} printf(“%d”,sum); }
课堂练习
1.以下程序的运行结果是 main() { int i; for(i=3;i<10;i++) { if(i*i/20>1) break; printf("%d ",i); } printf("\n"); } A) 3 4 5 6 7 B) 3 4 C) 3 4 5 D) 3 4 5 6 。
转移控制语句
1、break语句 break语句的一般形式为: break; break语句不能用于循环语句和switch语句 之外的任何其他语句中。 break语句的功能是跳转到本循环语句或 switch语句的下一条语句处。 2、continue语句 一般形式为: continue; 其作用为结束本次循环,即跳过循环体中下 面尚未执行的语句,接着进行下一次是否执 行循环的判定。
i≤100
F
i=1
sum=sum+i i=i+1
直到i>100
4.例:while和do-while循环的比较
(1) main() { int sum=0,i; scanf(“%d”,&i); while (i<=10) ; {sum=sum+i; i++; } printf (“sum=%d”,sum); }
运行结果为: pi=3.141594
2、求fibonacci数列的20个数 这个数列有如下特点:第1,2两个数为1,1。
从第3个数开始,该数是其前两个数之和。即:
F1=1 (n=1)
F2=1
Fn=Fn-1+Fn-2
(n=2)
(n≥3)
程序如下 main( ) { long int f1,f2; int i; f1=1;f2=1; for(i=1;i<=10;i++) { printf("%12ld%12ld",f1,f2); if(i%2==0)printf("\n"); f1=f1+f2; f2=f2+f1; } }
答案: main() { int i, sum=0,t=12; for (i=1;i<=10;i++) { sum=sum+t; t=t+10;} printf("%d",sum); }
4、求分数序列:2/1,3/2,5/3,8/5,13/8, 21/13,…,的前20项之和。
分析: 1)可以用一个变量s保存结果通过s=s+(每一项值) 2)用一个变量来保存分子,一个变量来保存分母, 则可求出每一项的值 3)从第2项起,每个分数的分子是前项的分子与分 母之和,分母是前项的分子。
答案: #define N 20 main() { int n,t; float a=2,b=1,s=0; for (n=1;n<=N;n++) { s=s+a/b; t=a; a+=b;b=t; } printf(“the total is %9.2f\n”,s); }
(3)用 while和 do-while循环时,循环变量初始化的操
作应在 while和do-while语句之前完成。而 for语句可以 在表达式 1中实现循环变量的初始化。
(4) while循型、 do-while循环和 for循环,可以用 break语句跳出循环,用 continue语句结束本次循环。而 对用 goto语句和 if语句构成的循环,不能用break语句和 continue语句进行控制。
(l )用goto语句和if语句构成循环; (2)用while语句; (3)用如do-while语句; (4)用 for语句。
goto语句以及用goto语句构成循环
1. goto语句的一般形式:
goto 语句标号
语句标号用标识符表示,它的命名规则与变量名 相同,即由字母、数字和下划线组成,其第一个字符 必须为字母或下划线。 2.goto语句的一般用途: (1)与if语句一起构成循环结构; (2)从循环体中跳转到循环体外;
下面几种情况均为合法的形式
(1) while ( ) {… while( ) {…} } (2) do {… do {…} while ( ); } while( ); (3) for(; ;) { for(; ;) {…} } (4) while( ) {… do {…} while( ); …. }
1、for语句的一般形式
for(表达式1;表达式2;表达式3)语句
2、for语句的执行流程
求表达式1
表达式2


语句
求表达式3
for语句的 下一语句
3、关于for语句的说明 (1) for语句的一般形式中的“表达式1”可以省略, 注意省略表达式 1时,其后的分号不能省略。 如 for(;i<=100;i++) sum=sum+i; 执行时,跳过“求解表达式1”这一步,其他不变。
答案:D 解释:注意 ”/” 的结 果总是整数,小数舍 掉;break结束循环。
2.统计从键盘上输入的字符个数,遇到回车时 输出这个数字,结束程序。
分析:对于循环次数不确定只给出循环结束条件的问 题,一般用while语句解决;而在循环次数已经确定的 情况下,一般用for语句。
答案:
#include
② for( ;(c=getchar( ))!=„\n‟;) printf(“%c”,c);
多重循环
一个循环体内又可包含另一个完整的循环结构,称 为循环的嵌套,内嵌的循环中还可以嵌套循环,这 就是多层循环
for循环、while循环、do-while循环既可以自己嵌套 自己,又可以互相嵌套。
运行结果如下: 5050
while语句
1.while语句的一般形式
while (表达式) 语句
当表达式为非0时,执行while语句中的内嵌语句。
2.while语句的执行流程
表达式
非0
0
语句
100
3.例:求∑n
n=1
main () { int i,sum=0; i=1; while (i<=100) { sum=sum+i; i++; } printf (“%d”,sum); }
3、判断m是否素数 #include <math.h> 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 is a prime number\n",m); else printf("%d is not a prime number\n",m); }
4.注意: (1)循环体如果包含一个以上的语句,应该用花括弧 括起来, 以复合语句形式出现。如果不加花括弧,则
while语句的范围只到 while后面第一个分号处。
(2)在循环体中应有使循环趋向于结束的语句。如果 无此语句,则i的值始终不改变,循环永不结束。
do-while语句
1.do-while语句的一般形式为:
第五章 循环结构程序设计
5.1 循环结构的应用场合
5.2 goto语句
5.3 while语句 5.4 do-while语句 5.5 for语句 5.6 多重循环 5.7 几种循环语句的比较 5.8 转移控制语句
5.9 循环结构的实例
循环结构的应用场合
在许多问题中需要用到循环控制。例如,要输入全 校学生成绩;求若干个数之和;迭代求根等。几乎所有 实用的程序都包含循环。循环结构是结构化程序设计的 基本结构之一,它和顺序结构、选择结构共同作为各种 复杂程序的基本构造单元。因此熟练掌握选择结构和循 环结构的概念及使用是程序设计的最基本的要求。
(7)表达式2一般是关系表达式(如 i<=100)或逻辑 表达式(如a<b&&x<y),但也可以是数值表达式 或字符表达式,只要其值为非零,就执行循环体。分 析下面两个例子:
i=0 取一个字 符=>c
C≠换行符
T F
①for ( i=0;(c=getchar( ))!=„\n‟;i+ =c); 此 for语句的执行过程见图 ,它的 作用是不断输入字符,将 它们的 ASCII码相加,直到输入一个“换行” 符为止。
do
循环体语句 while (表达式); 2. do-while语句的执行流程
循环体语句
循环体语句
当表达式值为真
T
表达式
F
(b)
(a)
3.用do-while语句求∑n 程序如下:
100 n=1
i=1
sum=sum+i i=i+1 T
main() (a) { int i,sum=0; i=0; do { sum=sum+i; i++; } while (i<=100) ; (b) printf (“%d”,sum); }
(2)如果表达式2省略,即不判断循环条件,循环 无终止地进行下去。也就是认为表达式2始终为真。 例如: for(i=1; ;i++)sum=sum+i; 它相当于: i=1; while(1) {sum=sum+i; i+ +;}
相关主题