第2章 C++流程控制语句 if 语句 switch语句 for语句 while语句 do - while语句 break语句 continue语句 其他语句
流程控制语句 流程控制语句用于控制程序中各语句的执行顺序 C++流程控制语句有: 选择语句、循环语句、跳转语句等。
if 语句 if语句是二分支选择语句 if语句可以给出两种操作,由表达式结果(非0 或0)选择其中的一种操作。 if语句有以下格式: if (表达式) 语句1; else 语句2; if (表达式) {语句; 语句; …} if (表达式) {语句; 语句; …} else {语句; 语句; …}
程序2.1 判断键盘输入的整数是否为偶数,是输出is,不是输出not #include<iostream.h> void main( ) { int x ; cin>>x ; if (x%2==0 ) cout<<"is"; else cout<<"not"; }
程序2.2 从键盘输入一个正整数,判断整数是否为1、7、13、19… 程序2.2 从键盘输入一个正整数,判断整数是否为1、7、13、19… #include<iostream.h> void main( ) { int x ; cin>>x ; if (x%6==1) cout<<"is"; else cout<<"not"; }
程序2.3 if–else语句的嵌套形式 从键盘输入一个字符,判断字符是否为大写字母或小写字母。若是大写字母,则输出"是大写字母" 。若是小写字母,则输出"是小写字母" 。若既不是大写字母,也不是小写字母,则输出是"其他字符" 。 void main( ) { char c ; cin>>c ; if (c>='a' && c<='z') cout<<" " ; else if (c>='a' && c<='z') cout<<"是小写字母"; else cout<<"是其他字符"; }
switch 语句 switch语句是多分支选择语句。 使用switch语句可以给出多种操作,根据表达式的值从中选择一种操作。 { case 常量表达式1: 若干语句; break; case 常量表达式2: 若干语句; break; … case 常量表达式n: 若干语句; break; [ default : 若干语句; ] }
Switch 语句注意事项 (1)每个case表示一个分支。根据switch表达式的值决定选择哪个case分支。break语句是switch的出口,作用是当执行完一个case分支后,跳出switch语句,继续执行switch语句后面的语句。 (2)switch后面的表达式可以是整型表达式或字符表达式。case后面的数据必须是常量或常量表达式。各个case常量表达式的值不能相等。否则发生冲突。 (3)各个case出现的次序不影响语句执行结果。
程序2.6 根据变量score中的考试分数,输出对应的等级 60分以下为D等,60~69为C等,70~89为B等,90~100为A等 void main() { int score=87; switch (score/10) {case 0: case 1: case 2: case 3: case 4: case 5: cout<<score +"分是D等"<<endl; break; case 6: cout<<score +"分是C等"<<endl; break; case 7: case 8: cout<<score +"分是B等"<<endl; break; case 9: cout<<score +"分是A等"<<endl; break; default : cout<<“数据错误”; }
循环语句 C++提供的循环语句有: for语句 while语句 do while语句
for 语句 for语句通常用于构造重复次数固定的循环。 格式为: for (表达式1; 表达式2; 表达式3) { 循环体语句块 } 例如: for (int i=1; i<=10; i++) cout<<"你好"<<endl;
程序2.7 输出1到100之间的所有整数 #include<iostream.h> void main() { int counter; for (counter=1;counter<=100; counter++) cout<<counter<<" "; cout <<"\n"; }
程序2.8 每隔5个数,输出1到100之间的整数 void main() {int counter; for (counter=1;counter<=100;counter+=5) cout<<counter<<" "; cout <<"\n"; }
程序2.9 计算正整数的阶乘 void main() 程序输出结果: {long int n=1; Enter a number:6 int i,num; cout<<": "; cin>>num; for (i=1;i<=num;i++) {n=n*i; cout<<i<<"!="<<n<<endl; } 程序输出结果: Enter a number:6 1!=1 2!=2 3!=6 4!=24 5!=120 6!=720
while语句 while语句用于构造循环次数由条件控制的循环。 while语句的格式: while (表达式){循环体语句块}
程序2.13 计算圆周率,计算精度是1e-06 #include<iostream.h #include<math.h> void main( ) { double sum=0, newdatum=1.0; int n=1; while (newdatum>1e-6) { sum=sum+newdatum; n++; newdatum=1.0/(n*n); } cout<<"pi is "<<sqrt(sum*6)<<endl;
do while 语句 do while语句与while语句类似,用于构造由条件控制的循环。 do while语句的格式:
循环嵌套 循环嵌套是指循环语句的循环体内又包含另一个循环语句,即循环套循环。 程序2.15 输出九九表 void main( ) {int bcs,cs; for (bcs=1; bcs<=9; bcs++) { for (cs=1; cs<=bcs ;cs++) cout<<bcs<<'*'<<cs<<'='<<bcs*cs<<' ' ; cout<<endl; }
程序输出结果: 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
程序2.16 三层循环嵌套举例1 void main( ) { int m=0; for(int i=1; i<=10; i++) for(int j=1; j<=20; j++) for(int k=1; k<=30; k++ ) m++; cout<<"m="<<m<<endl; } 程序输出结果: m=6000
程序2.17 三重循环举例2 100元钱买100只鸡。 公鸡5元一只,母鸡3元一只,小鸡1元3只,输出所有的购买方案。 程序2.17 三重循环举例2 100元钱买100只鸡。 公鸡5元一只,母鸡3元一只,小鸡1元3只,输出所有的购买方案。 void main( ) {int a,b,c ; //a是公鸡数,b是母鸡数,c是小鸡数。 for(a=0;a<=20;a++) for(b=0;b<=33;b++) for(c=0;c<=99;c++) if( a+b+c==100 && 5*a+3*b+c/3.0==100) cout<<"公鸡数="<<a<<" 母鸡数="<<b<<" 小鸡数="<<c<<endl; } 结果为: 公鸡数=0母鸡数=25小鸡数=75 公鸡数=4母鸡数=18小鸡数=78 公鸡数=8母鸡数=11小鸡数=81 公鸡数=12母鸡数=4小鸡数=84
break语句 break是流程控制语句。 break语句用在循环语句和switch语句中。 break语句有两种格式: break;
程序2.18 判断输入的某数是否为素数(质数) 素数是除1和本身之外不能被其它数整除的数。 void main() { int m, i=1; cout<<"enter a number: "; cin>>m; while(++i<m) if(m%i==0) { cout<<"not prime"<<endl; break; } if (i==m) cout<<m<< "is prime."<<endl; 程序输出结果: enter a number:7 7 is prime.
程序2.19 计算两个整数的最大公约数 使用辗转相除法 void main() { int m,n,temp; cout<<"Enter two positive numbers: "; cin>>m>>n; if (m<n) {temp=m;m=n;n=temp;} do {temp=m%n; m=n; n=temp; }while (n!=0); cout<<"最大公约数是"<<m<<endl; } 程序输出结果: Enter two numbers :12 8 最大公约数是4
continue 语句 格式:continue; continue 语句只能用于循环语句中。
程序2.20 使用continue语句举例 计算一个数组中正数和 void main() { int sum,a[] ={3,0,-5,7,8,-2,-9,-6,6}; sum=0; for(int i=0; i<9;i++) { if (a[i]<0) continue; sum+=a[i]; } cout<<"sum="<<sum<<endl; 程序输出结果: sum=24