1、C+循环语句 qq学习群号:248895754,信息技术教研组,循环语句,C+提供了三种循环结构 while循环语句 do-while循环语句 for循环语句。,while语句的一般形式:while(表达式)循环体语句该语句的执行过程:首先判断while后面的表达式的值,若表达式的值为真,则执行while的内嵌语句(即循环体)一次;然后重复以上过程,直到表达式的值为假时,才退出循环,接着执行循环体语句后面的其它程序语句。,while循环语句,例1.求恰好使s=1+1/2+1/3+1/n的值大于10时n的值。,#include using namespace std; int main() do
2、uble s;int n;s=0;n=0;while(s =10) n+;s+=1.0/n; cout“n=“nendl; return 0;,do-while循环语句,do-while语句的一般形式do 循环体语句 while(表达式);该语句的执行过程:首先执行do-while的内嵌语句(循环体语句)一次,然后再判断while后面的表达式的值,若表达式的值为真,则重复执行do-while的内嵌语句,如此反复,直到表达式的值为假时,循环结束,执行while后面的语句。,例2.求两个正整数m和n的最大公约数。,#include/Euclid方法 using namespace std; int
3、 main() int m,n,r;cinmn;do r=m%n;m=n; n=r;while(r!=0);cout“最大公约数:“mendl;return 0;,3 for循环语句,for循环语句的一般格式为:for(表达式1;表达式2;表达式3) 循环体语句 该语句的执行过程是: 执行for后面的表达式1; 执行表达式2,若表达式2的值为真,则执行for语句的内嵌语句(即循环体语句);若为假,则循环结束,执行for语句的循环体下面的语句; 执行表达式3; 执行第步;,例3:在自然数中,如果一个三位数等于自身各位数字之立方和,则这个三位数就称为是水仙花数。 如:153=13+53+33,所以
4、153是一个水仙花数。求所有的水仙花数。,#include using namespace std; int main( ) int a,b,c;for(int i=100;i=999;i+) a=i/100;b=(i-a*100)/10;c=i-a*100-b*10;if(i=(a*a*a+b*b*b+c*c*c) coutiendl; return 0; ,4 循环嵌套,在一个循环的循环体中又包含另一个循环语句,称为循环嵌套。C+的三种循环语句可以相互嵌套。以下几种都是合法的循环嵌套: (1)for(;)for(;) ,(2)while()for(;) dowhile( );,#inclu
5、de using namespace std; int main( ) int a,b,c;for(a=1;a=9;a+)for (b=0;b=9;b+)for (c=0;c=9;c+) if (a*a*a+b*b*b+c*c*c=a*100+b*10+c) cout a*a*a+b*b*b+c*c*cendl; return 0; ,水仙花数,同样,if语句和switch语句也可以与这三种语句嵌套使用。注意: (1)循环嵌套时,外层循环和内层循环间是包含关系,即内层循环必须被完全包含在外层循环中,不得交叉。 (2)当程序中出现循环嵌套时,这时,程序每执行一次外层循环,则其内层循环必须循环所有
6、的次数(即内层循环结束)后,才能进入到外层循环的下一次循环。,5 限定转向语句,C+提供了跳转语句break和继续语句continue。,break语句,break语句的一般形式为:break; 该语句只能用于两种情况: (1)用在switch结构中,当某个case子句执行完后,使用break语句跳出switch结构。 (2)用在循环结构中,用break语句来结束循环,执行循环语句的下一个语句。如果在嵌套循环中,break语句只能结束其所在的循环。,例4 任意输入若干个整数(不多于50个),计算已输入整数之和,直到输入了负数为止。,#include using namespace std; i
7、nt main() int i,n,sum=0;for(i=0;in;if (n0) break;sum=sum+n; cout“sum=“sumendl;return 0; ,#include using namespace std; Int main() int i,n,sum;sum=0;cinn;while (n=0) sum+=n;cinn; cout“sum=“sumendl;return 0; ,continue语句,continue语句的一般形式为:continue;该语句只能用在循环结构中。当在循环结构中遇到continue语句时,则跳过continue语句后的其他语句结束本
8、次循环,并转去判断循环控制条件,以决定是否进行下一次循环。,【例5】 输出0100之间所有不能被3整除的数。,#include using namespace std; int main() int i;for(i=0;i=100;i+) if(i%3=0)continue;coutiendl;return 0;,6 三种循环的比较,( 1)三种循环可以相互代替;且都可以使用break和continue语句限定循环转向; (2)while语句和for语句是先判断条件,后执行循环体,而do-while语句是先执行循环体,后判断条件; (3)for语句功能最强,可完全取代while和do-whil
9、e语句; (4)while和do-while语句中循环变量初始化应该在循环前提前完成,并在while后指定循环条件,循环体中要包含使循环趋于结束的语句,而for循环可把这些操作放在for语句当中。,【例6】陶陶摘苹果(apple.pas/c/cpp)【问题描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 【输入文件】输入
10、文件apple.in包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。 【输出文件】输出文件apple.out包括一个整数,表示陶陶能够摘到的苹果的数目。,#include using namespace std;ifstream fin(“apple.in“); ofstream fout(“apple.out“);int main() int i,h,m=0,a1
11、1;for(i=1;iai;finh;for(i=0;i=ai) m+;foutmendl;fin.close();fout.close();return 0; ,文件输入输出 1、#include 2、 ifstream fin(“apple.in“); ofstream fout(“apple.out“);3、fin.close();fout.close();,#includeusing namespace std;int main() freopen(“apple.in“,“r“,stdin);freopen(“apple.out“,“w“,stdout);int i,h,m=0,a11;for(i=1;i=ai) m+;printf(“%d“,m);return 0; ,文件输入输出 1、#include 或者 #include 2、(必须在int main()中) freopen(“apple.in“,“r“,stdin);freopen(“apple.out“,“w“,stdout);,