流程控制语句
【学习要点】
1.掌握算法描述的三种基本结构。
2.掌握if—else条件语句及其应用,掌握if语句的嵌套结构。
3.掌握switch开关语句及其应用,掌握break在switch语句中的作用.
4.掌握while循环语句及其应用。
5.掌握do—while循环语句及其应用。
6.掌握for循环语句及其应用。
7.掌握循环语句的嵌套结构。
8.掌握break语句、continue语句在循环结构中的作用。
9.掌握return语句、goto语句、exit()函数、abort()函数的作用及其应用。
—-————————-—-—----—----——-—----—-----—————-—--——————--——---—-----—---——----——---——-—-—————--—--—-—-—--————-—--—————-—-----—-—---——-—-—---——————-—
【例题分析】
1.若int x=3,执行以下循环语句后,输出的结果是______。
do cout << (x-=2) 〈〈 ‘\t' ;
while ( !(--x) ) ;
A.1
B.1 —2
C.1 —1
D.死循环
【答案】B
【解析】先执行一次do后面的循环体语句,遇到while,判断下次循环是否进行,即求解while后面表达式的值,若表达式的值为true,则再次回到do … ;若表达式的值为 false ,则跳出整个do—while语句。
2.若int x=10,执行以下switch语句后,x的值是______。
switch ( x ){case 9: x+=1;
case 10: x+=1;
case 11: x+=1;
defaule: x+=1; }
A.10
B.11
C.12
D.13
【答案】D
【解析】从上往下在case分支的常量表达式值中,寻与之值相等的分支作为执行入口,并从该分支的语句序列开始执行下去,其后的每个case分支(包括default分支)中的语句序列都有可能执行到,直到遇到break语句才跳出switch语句,或遇到switch语句的结束括号“ } ”为止。
3.以下三条语句,正确的论断是______.
(1)if ( a ) s1 ; else s2 ;
(2)if ( a==0 ) s2 ; else s1 ;
(3)if ( a!=0 ) s1 ; else s2 ;
A.三者相互等价
B.只有(2)和(3)等价
C.只有(1)和(3)等价
D.三者相互不等价
【答案】A
【解析】先求解 if 后面表达式的值,若表达式的值为true,则执行 if 后面的语句;若表达式的值为false,则执行else 后面的语句。
4.退出一个循环语句(不能终止当前函数的执行)的有效措施是______。
A.用break语句
B.用continue 语句
C.用return语句
D.调用函数exit(1)
【答案】A
【解析】break 是结束循环;continue 是结束本次循环;return 是从当前执行的函数返回其主调函数;exit(1)是终止整个程序的执行.
5.下面程序的运行结果是______。
#include<iostream.h〉
void main()
{ int i=0, x=0, y=0 ;
do { i++ ;
if ( i%3 != 0 ) { x+=i ; i++ ; }
y += i++ ;
} while( i<5 ) ;
cout 〈〈 ”x= ” <〈 x 〈< ”\ty= ” 〈< y 〈< endl ;
continue语句执行过程}
【答案】输出:x=5 y=7
6.下面程序的运行结果是______。
#include<iostream。h〉
void main()
{ int x, y=10 ;
while ( x = y-1 ) { y —= 2 ;
if ( y%3 == 0 ) { x++ ; continue ; }
else if ( y〈4 ) break ;
x++ ; }
cout <〈 "x=” <〈 x 〈< ”\ty=” <〈 y <〈 endl ;
}
【答案】输出:x=3y=2
7.下面程序的运行结果是______。
#include〈iostream.h〉
void main()
{ int i , j , m ;
for ( i=1 ; i〈=6; i++ )
{ for ( j=i+1 ; j<=8 ; j++ )
{ if ( j==4 ) { cout <〈 ”Bye!” ; break ; }
m = i * j ;
cout <〈 i 〈〈 "×” <〈 j <〈 ” = ” 〈< m <〈 "\t" ; }
cout 〈< endl ;
}
}
【答案】第1行输出:1×2 = 2 1×3 = 3 Bye!
第2行输出:2×3 = 6 Bye!
第3行输出:Bye!
第4行输出:4×5 = 20 4×6 = 24 4×7 = 28 4×8 = 32
第5行输出:5×6 = 30 5×7 = 35 5×8 = 40
第6行输出:6×7 = 42 6×8 = 48
【解析】当 j 的值为4时,break语句结束的是内层循环,外层for循环继续执行。
8.完善下列程序,程序功能是:输入一个自然数,输出其各因子的连乘形式.(如输入自然数12,输出12 = 1×2×2×3 )
#include <iostream.h>
void main()
{ int i=2 , n ;
cout 〈〈 ”输入一个自然数:" ;
cin >〉 n ;
cout << n << ” = 1” ;
do { if ( n%i == 0 )
{ cout <〈 “×” 〈〈 i ;
_________①_________;}
else i++ ;
} while ( _________②_________ ) ;
cout 〈< endl ;
}
【答案】①n = n / i
【答案】②n != 1
9.编写程序:(要求用if—else语句实现)键盘输入某班同学的一门成绩,统计该班级的不及格、60~69、 70~79、 80~89、 90分以上的各个档次的人数,并将该班同学的原始成绩,以及统计出来的各个档次人数写入数据文件 中,原始成绩按一行4个数据的格式写入 中。(要求程序具有灵活性,参加统计的学生人数应随具体情况而定,不应固定,以输入流结束符 Ctrl+Z 作为统计结束条件。)
【答案】编写程序如下:
#include<fstream.h>
#include<iomanip.h>
void main()
{ int x , n=0 , c9=0 , c8=0 , c7=0 , c6=0 , c0=0 ;
ofstream outf ( “data1。txt” ) ;
cout <〈 “请输入成绩:” ;
cin 〉〉 x ;
while ( cin )
{ outf 〈< setw(8) << x ;
n++ ;
if ( n%4==0 ) outf << endl ;
if ( x 〉= 90 ) c9++ ;
else if ( x 〉= 80 ) c8++ ;
else if ( x 〉= 70 ) c7++ ;
else if ( x >= 60 ) c6++ ;
else c0++ ;
cin >> x ; }
outf 〈〈 “\n总人数=” 〈< n 〈< endl ;
outf 〈〈 “90分以上人数=” 〈< c9 << endl ;
outf 〈〈 “80~89分之间人数=” 〈< c8 <〈 endl ;
outf 〈〈 “70~79分之间人数=” 〈< c7 〈< endl ;
outf 〈〈 “60~69分之间人数=” 〈< c6 〈< endl ;
outf <〈 “不及格人数=” 〈< c0 〈< endl ;
outf.close() ;
}
10.编写程序:键盘输入某班同学的一门成绩,出最高分和最低分,并统计出全班的平均成绩。(要求程序具有灵活性,参加统计的学生人数应随具体情况而定,不应固定,以输入负数作为统计结束条件。)
【答案】编写程序如下:
#include<iostream.h>
#include〈iomanip.h〉
void main()
{ float score , max , min , sum = 0 ;
int num = 0 ;
cout <〈 “请输入成绩:" ;
cin >〉 score ;
max = min = score ;
while ( score 〉= 0 ) { num++ ; sum += score ;
if ( score 〉 max ) max = score ;
if ( score 〈 min ) min = score ;
cin >> score ; }
if (num) { cout 〈< "学生人数= ” 〈〈 num <〈 endl ;
cout << ”平均成绩= ” << sum/num 〈〈 endl ;
cout 〈< "最高分=" 〈〈 max 〈< endl ;
cout 〈< "最低分= ” 〈< min << endl ; }
else cout <〈 "无输入数据,无法统计!" 〈〈 endl ;
}
11.编写程序:输出下面的图案。
@
@@@
@@@@@
@@@@@@@
@@@@@@@@@
@@@@@@@@@@@
@@@@@@@@@@@@@
@@@@@@@@@@@
@@@@@@@@@
@@@@@@@
@@@@@
@@@
@
【答案】编写程序如下:
# include 〈 iostream.h >
void main ( )
{ int i , j , n=7 ;
for ( i=1 ; i<=n ; i++ ) //输出前7行图案
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论