第4章 循环结构设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.7 跳转语句
C语言中体提供break、continue、goto语句三 种程序转移控制语句。这类非结构化语句都可以改变 程序的结构,使程序从其所在的位置转向另一处。
4.7.1 使用break语句实现程序跳转
在前面的章节中已经介绍过使用break语句可以 跳出switch选择结构,继续执行选择结构后的一个语 句。实际上,break语句还可以用来从循环体内跳出 循环体,提前结束循环。break语句的作用是终止最 近的while、do-while和for语句,程序的执行权被传 递给紧接着被终止循环之后的语句。其一般格式为: break;
n
n 1
100
判断m是否素数。 运行结果: 17↙ #include "stdio.h" 17 is a prime number #include "math.h" main() {int i,n,flag=1; printf("Please Input a number:"); scanf("%d",&n); for (i=2;i<n;i++) {if (n%i==0) flag=0; break; } if(flag==1) printf("%d:is prime number!",n); else printf("%d:is not prime number!",n); }
4.7.2 使用continue语句实现程序跳转
continue语句被称为继续语句,它类似于break 语句,但不是退出循环,而是跳过循环体下面未执行 的语句,接着执行循环下一次迭代。其一般格式为: continue;
输出100到200之间所有的偶数。 #include<stdio.h> void main( ) { int n; n=100; while (n<=200) { if (n%2==1) { n++; continue; } printf("%d",n); n++; } }
用for循环计算51+53+55…69
复习上节课所学的内容
使用for循环计算1~100所有2的倍数的数量以及它们之 和,所有3的倍数数量以及它们之和,所有5的倍数数量以及 它们之和。
#include "stdafx.h" void main() { int i,sum2=0,sum3=0,sum5=0,sum2all=0,sum3all=0,sum5all=0; for(i=1;i<=100;i++) { if(i%2==0) { sum2++; sum2all=sum2all+i; } if(i%3==0) { sum3++; sum3all=sum3all+i; } if(i%5==0) { sum5++; sum5all=sum5all+i; } } printf("%d %d\n",sum2,sum2all); printf("%d %d\n",sum3,sum3all); printf("%d %d\n",sum5,sum5all); }
计算半径为1到10,且面积不大于100的圆的面积。 #include <stdio.h> #define PI 3.14 void main() { double r; int i; for(i=1;i<=10;i++) { r = PI * i * i; if (r>100) break; printf(“面积 是 %lf\n",r); } printf("for is end!\n"); }
入口
入口
No
条件成立?
执行循环体
Yes 执行循环体 No 条件成立? Yes
出口
出口
先判断后执行:当型
先执行后判断:直到型
4.2 使用while循环
在C语言中,使用while循环以不定的次数执行 循环体内的一组语句。如果满足循环条件,反复执行 循环体中的语句序列,如果不满足结束循环。
FALSE 或 NULL
F1
程序举例
判断m是否素数。 算法思想:让m被2到k( k=sqrt(m))除,如果m能被2~k之中 任何一个整数整除,则提前结束循环,此时i必然小于或等于k( 即);如果m不能被2~k(即)之间的任一整数整除,则在完成最 后一次循环后,i还要加1,因此i=k+1,然后才终止循环。在循 环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2~ k之间任一整数整除过,因此输出“是素数”。
4.3.1 do-while循环语法及含义
do-while循环语句用来实现“直到型”循环结构 。do-while循环语句由do、while关键字、循环体组 成。一般格式如下所示: do { <可执行语句序列> } while(<condition>);
用do-while语句实现1到100的和。
#include <stdio.h> void main() {int i=1,sum=0; do { sum=sum+i; i++; } while (i<=100); printf(″%d\n″,sum); }
4.1 循环结构简介
在第1章中已经简单介绍了循环结构,它和前面章 节中讲到的顺序结构、选择结构共同构成了各种复杂 程序的基本构造单元。循环结构的特点是:在给定条 件成立时,反复执行某程序段;在给定条件不成立时 ,循环停止。给定的条件称为循环条件,反复执行的 程序段称为循环体。 C语言中提供的四种循环语句主要实现了两种循环 结构:当型结构和直到型结构。
While和do-while语句的区别
#include <stdio.h> void main() {int i,sum=0; i=101; while (i<=100) { sum=sum+i; i++; } printf(″%d\n″,sum); }
#include <stdio.h> void main() {int i,sum=0; i=101; do { sum=sum+i; i++; } while (i<=100); printf(″%d\n″,sum); }
4.4 使用for循环
for语句是C语言所提供的功能更强、使用更广泛 的一种循环语句。以固定的次数执行循环体内的一组 语句,特别适合已知循环次数的情况。
condition-1
FALSE
ຫໍສະໝຸດ Baidu
condition-2
TRUE 可执行语句序列
condition-3
4.4.1 for循环语法及含义
for循环语句用来实现“当型”循环结构。for循 环结构在循环开始的时候就已经知道循环的次数。循 环执行的次数由for关键字和( )中的范围边界安排决定 ,for循环的一般格式如下所示: for(<expression-1>;< condition-2>;< expression-3>) { <可执行语句序列> }
用for 语句实现循环
for语句最简单的应用形式也就是最易理解的如下形式: for(循环变量赋初值;循环条件;循环变量增值)
例如: for(i=1;i<=100;i++) sum=sum+i; 它相当于以下语句: i=1; while(i<=100) {sum=sum+i;i++;}
显然,用for语句简单、方便。
4.3 使用do-while循环
在C语言中,使用do-while循环同样也是以不定 的次数执行循环体内的一组语句。与while语句不同 的是,在判断循环条件之前,首先执行一次循环体。 然后如果满足循环条件,反复执行循环体中的语句序 列,如果不满足结束循环。
可执行语句序列
FALSE 或 NULL
<condition> TRUE
统计输入字符串中英文字母、空格、数字 和其他字符的个数。
编程基本思想:
声明一个字符型变量用来存放用户输入的字符 声明四个整形变量分别来存放“字母”“空格”“数字”“ 其他符号” 在屏幕上打印出一句话:请输入一段字符串 通过while循环判断输入的字符串,当判断到字符 为„\n‟时结束循环 字符为非„\n‟时根据字符类型把相应的整形变量+1 最后打印出统计出的各种字符数量
例 用while语句求1到100的和 #include <stdio.h> void main() 运行结果:5050 {int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf(″%d\n″,sum); }
说明:(1)循环体如果包含一个以上的语句,应该用花括弧括起来,以 复合语句形式出现.(2)在循环体中应有使循环趋向于结束的语句 。
求出1*2*3*4*5的积
复习上节课所学的内容
用while语句实现51+53+55…69
例 用while语句求51+53+57…69 #include <stdio.h> void main() {int i,sum=0; i=51; while (i<=69) { sum=sum+i; i+=2; } printf(″%d\n″,sum); }
C语言有哪三种结构?他们的特点是什么? 顺序、选择、循环
第4章 循环结构设计
循环控制结构是程序设计的另一个基本结构。在 实际问题中,常常需要进行大量的重复处理,循环结 构可以使我们只写很少的语句,而让计算机反复执行 ,从而完成大量类同的计算。例如,输入整班学生成 绩、求若干数之和等。因此熟练掌握循环控制结构的 概念以及使用是程序设计的基本要求。 C语言中提供了以下几种语句来实现循环结构: for语句;while语句;do-while语句;跳转语句。
4.4.2 for循环的注意事项
在C语言编程中使用for循环语句要注意以下几个 方面: for语句中< expression -1>可以省略,但是其 后的分号不能省略。 for语句如果省略< condition-2>,即不判断循环 条件,循环无休止地进行下去,也就是认为循环条件 始终为真。 < condition-2>一般是关系表达式或者逻辑表达 式,也可以是数值表达式或者字符表达式,只要其值 非0,就执行循环体。
统计输入字符串中英文字母、空格、数字 和其他字符的个数。
#include "stdio.h" void main() { char c; int letters=0,space=0,digit=0,others=0; printf("please input some characters\n"); while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') { letters++; } else if(c==' ') { space++; } else if(c>='0'&&c<='9') { digit++; } else { others++; } } printf("char=%d space=%d digit=%d others=%d\n", letters,space,digit,others); }
4.6 三种循环的比较
一般情况下,while、do-while和for这三种循环都可 以用来处理同一问题,它们可以互相代替。但是这三者之 间还是有所不同: (1)while和do-while循环,只在while后面指定循 环条件,在循环体中应包含使循环趋于结束的语句(如 i++,或i=i+1等)。而for循环可以在< expression-3>中包 含使循环趋于结束的操作,甚至可以将循环体中的操作全 部放到< expression-3>中。 (2)用while和do-while循环时,循环变量初始化的 操作应在while和do-while语句之前完成。而for语句可以 在< expression-1>中实现循环变量的初始化。 (3)for、while属“当型”循环,先判断,后执行 循环体。
<condition> TRUE 可执行语句序列
4.2.1 while循环语法及含义
while循环语句用来实现“当型”循环结构。 while循环的一般格式如下所示: while(<condition>) { <可执行语句序列> } while循环的含义是:while循环是一个条件循环 ,只要循环条件求值结果为true,它就继续执行循环 体。