第2章 程序控制结构
2.1 选择题
1.已知 int i=0, x=1, y=0;,在下列选项中,使i的值变成1的语句是( C )。
(A)if( x&&y ) i++; (B)if( x==y ) i++;
(C)if( x||y ) i++; (D)if( !x ) i++;
2.设有函数关系为y=,下列选项中,能正确表示上述关系的是( C )。
(A) y = 1; (B) y = -1;
if( x >= 0 ) if( x != 0 )
if( x == 0 ) y = 0; if( x > 0 ) y = 1;
else y = -1; else y = 0
(C) if( x <= 0 ) (D) y = -1;
if( x < 0 ) y = -1; if( x <= 0 )
else y = 0; if( x < 0 ) y = -1;
else y = 1; else y = 0;
3.假设i=2,执行下列语句后i的值为( B )。
switch( i )
{
case 1 : i ++;
case 2 : i --;
case 3 : ++ i; break;
case 4 : -- i;
default : i ++;
}
(A)1 (B)2 (C)3 (D)4
4.已知int i=0,x=0;,在下面while语句执行时循环次数为( D )。
while( !x && i< 3 ) { x++; i++; }
(A)4 (B)3 (C)2 (D)1
5.已知int i=3;,在下面do_while 语句执行时的循环次数为( B )。
do{ i--; cout<<i<<endl;}while( i!= 1 );
(A)1 (B)2 (C)3 (D)无限
6.下面for语句执行时的循环次数为( B )。
int i, j;
for ( i=0, j=5;i=j; )
{ cout<<i<<j<< ndl; i++; j--; }
(A)0 (B)5 (C)10 (D)无限
7.以下程序段形成死循环的是( B )。
(A)int x; for( x=0; x<3; ) { x++; };
(B)int k = 0; do { ++k; } while( k>=0 );
(C)int a=5; while( a ) { a--; };
(D)int i=3; for(; i; i -- );
2.2 阅读下列程序,写出运行结果
1.
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d,x;
a = c = 0; b = 1; d = 20;
if( a )
d = d-10;
else
if( !b )
if( !c )
x = 15;
else x = 25;
cout << d << endl;
}
【解答】
20while语句都可以用for改写
2.
#include<iostream>
using namespace std;
int main()
{
int a = 0, b = 1;
switch( a )
{
case 0:
switch( b )
{
case 0 : cout<<"a="<<a<<" b="<<b<<endl; break;
case 1 : cout<<"a="<<a<<" b="<<b<<endl; break;
}
case 1:
a++; b++; cout<<"a="<<a<<" b="<<b<<endl;
}
}
【解答】
a= 0 b= 1
a= 1 b= 2
3.
#include<iostream>
using namespace std;
int main()
{
int i = 1;
while( i<=10 )
{
if( ++i % 3 != 1 )
continue;
else
cout << i << endl;
}
}
【解答】
4
7
10
4.
#include<iostream>
using namespace std;
int main()
{
int i = 0, j = 5;
do
{
i++; j--;
if ( i>3 ) break;
} while ( j>0 );
cout << "i=" << i << endl << "j=" << j << endl;
}
【解答】
i= 4 j= 1
5.
#include<iostream>
using namespace std;
int main()
{
int i,j;
for( i=1, j=5; i<j; i++ )
{ j--; }
cout<<i<<'\t'<<j<<endl;
}
【解答】
3 3
6.
#include<iostream>
using namespace std;
int main()
{
int i, s = 0;
for( i=0; i<5; i++ )
switch( i )
{
case 0: s += i; break;
case 1: s += i; break;
case 2: s += i; break;
default: s += 2;
}
cout<<"s="<<s<<endl;
}
【解答】
s= 7
7.
#include<iostream>
using namespace std;
int main()
{
int i, j, x = 0;
for( i=0; i<=3; i++ )
{
x++;
for( j=0; j<=3; j++ )
{
if( j % 2 )
continue;
x++;
}
x++;
}
cout << "x=" << x << endl;
}
【解答】
x= 16
2.3 思考题
1.C++语言中有什么形式的选择控制语句?归纳它们的语法形式、应用场合。根据一个实际问题使用不同的条件语句编程。
【解答】
语句 | 使用方式 | 使用场合 |
if语句 | if(表达式)语句1; else 语句2; | 需要对给定的条件进行判断,并根据判断的结果选择不同的操作。 适用于复杂的条件表达式判断。 |
switch 语句 | switch(表达式) { case 常量表达式1: 语句1; case 常量表达式2: 语句2; …… case 常量表达式n; 语句n; [default : 语句n+1;] } | 根据整型表达式的不同值决定程序分支的情况。 适用于判断表达式简单,需要多个分支处理的情况。 |
演示程序:
程序(1)
//此程序用if输出等级对应的分数段
//A->=90,B-(90,80],C-(80,70] ,D-(70,60],,E-<60
#include<iostream>
using namespace std;
int main()
{ char gd;
cout<<"Enter the grade:";
cin>>gd;
//直到输入有效等级,否则程序不继续运行
while(!((gd>='A' && gd<='E')||(gd>='a' && gd<='e')))
{ cout<<"Invalid grade! Please retry:";
cin>>gd;
}
if(gd=='A'||gd=='a') cout<<"\nScored 90-100!\n";
else if(gd=='B'||gd=='b') cout<<"\nScored 80-89!\n";
else if(gd=='C'||gd=='c') cout<<"\nScored 70-79!\n";
else if(gd=='D'||gd=='d') cout<<"\nScored 60-69!\n";
else if(gd=='E'||gd=='e') cout<<"\nScore under 60!\n";
else cout<<"Unexpect error!\n"; //防止意外错误
}
程序(2)
//此程序用switch输出等级对应的分数段
//A->=90,B-(90,80],C-(80,70] ,D-(70,60],,E-<60
#include<iostream>
using namespace std;
int main()
{ char gd;
cout<<"Enter the grade:";
cin>>gd;
//直到输入有效等级,否则程序不继续运行
while(!((gd>='A' && gd<='E')||(gd>='a' && gd<='e')))
{ cout<<"Invalid grade! Please retry:";
cin>>gd;
}
switch(gd)
{ case 'A':
case 'a': cout<<"\nScored 90-100!\n";break;
case 'B':
case 'b': cout<<"\nScored 80-89!\n";break;
case 'C':
case 'c':cout<<"\nScored 70-79!\n";break;
case 'D':
case 'd':cout<<"\nScored 60-69!\n";break;
case 'E':
case 'e':cout<<"\nScore under 60!\n";break;
default:cout<<"Unexpect error!\n";//防止意外错误
}
}
2.什么叫做循环控制?归纳比较C++语言中各种循环控制语句的语法、循环条件和循环结束条件的表示形式及执行流程。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论