C++课后习题答案2习题和解答第3版.docx
- 文档编号:11209116
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:23
- 大小:34.39KB
C++课后习题答案2习题和解答第3版.docx
《C++课后习题答案2习题和解答第3版.docx》由会员分享,可在线阅读,更多相关《C++课后习题答案2习题和解答第3版.docx(23页珍藏版)》请在冰豆网上搜索。
C++课后习题答案2习题和解答第3版
习题2及其解答
2.1选择题
1.已知inti=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;
elsey=-1;elsey=0;
(c)if(x<=0)(d)y=-1;
if(x<0)y=-1;if(x<=0)
elsey=0;if(x<0)y=-1;
elsey=1;elsey=1;
3.假设i=2,执行下列语句后i的值为(b)。
switch(i)
{case1:
i++;
case2:
i--;
case3:
++i;break;
case4:
--i;
default:
i++;
}
(a)1(b)2(c)3(d)4
4.已知inti=0,x=0;下面while语句执行时循环次数为(d)。
while(!
x&&i<3){x++;i++;}
(a)4(b)3(c)2(d)1
5.已知inti=3;下面do_while语句执行时循环次数为(b)。
do{i--;cout<
=1);
(a)1(b)2(c)3(d)无限
6.下面for语句执行时循环次数为(b)。
inti;
for(i=0,j=5;i=j;)
{cout<
i++;j--;
}
(a)0(b)5(c)10(d)无限
7.以下死循环的程序段是(b)。
(a)intx;for(intx=0;x<3;){x++;};
(b)intk=0;do{++k;}while(k>=0);
(c)inta=5;while(a){a--;};
(d)inti=3;for(;i;i--);
2.2阅读下列程序,写出执行结果
1.
#include
usingnamespacestd;
intmain()
{inta,b,c,d,x;
a=c=0;b=1;d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)
x=15;
elsex=25;
cout< } 【解答】 20 2. #include usingnamespacestd; intmain() {inta=0,b=1; switch(a) {case0: switch(b) {case0: cout<<"a="< case1: cout<<"a="< } case1: a++;b++;cout<<"a="< } } 【解答】 a=0b=1 a=1b=2 3. #include usingnamespacestd; intmain() {inti=1; while(i<=10) if(++i%3! =1) continue; elsecout< } 【解答】 4 7 10 4. #include usingnamespacestd; intmain() {inti=0,j=5; do {i++;j--; if(i>3)break; }while(j>0); cout<<"i="< } 【解答】 i=4j=1 5. #include usingnamespacestd; intmain() {inti,j; for(i=1,j=5;i {j--;} cout< } 【解答】 33 6. #include usingnamespacestd; intmain() {inti,s=0; for(i=0;i<5;i++) switch(i) {case0: s+=i;break; case1: s+=i;break; case2: s+=i;break; default: s+=2; } cout<<"s="< } 【解答】 s=7 7. #include usingnamespacestd; intmain() {inti,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=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 usingnamespacestd; intmain() {chargd; cout<<"Enterthegrade: "; cin>>gd; //直到输入有效等级,否则程序不继续运行 while(! ((gd>='A'&&gd<='E')||(gd>='a'&&gd<='e'))) {cout<<"Invalidgrade! Pleaseretry: "; cin>>gd; } if(gd=='A'||gd=='a')cout<<"\nScored90-100! \n"; elseif(gd=='B'||gd=='b')cout<<"\nScored80-89! \n"; elseif(gd=='C'||gd=='c')cout<<"\nScored70-79! \n"; elseif(gd=='D'||gd=='d')cout<<"\nScored60-69! \n"; elseif(gd=='E'||gd=='e')cout<<"\nScoreunder60! \n"; elsecout<<"Unexpecterror! \n";//防止意外错误 } 程序 (2) //此程序用switch输出等级对应的分数段 //A->=90,B-(90,80],C-(80,70],D-(70,60],,E-<60 #include usingnamespacestd; intmain() {chargd; cout<<"Enterthegrade: "; cin>>gd; //直到输入有效等级,否则程序不继续运行 while(! ((gd>='A'&&gd<='E')||(gd>='a'&&gd<='e'))) {cout<<"Invalidgrade! Pleaseretry: "; cin>>gd; } switch(gd) {case'A': case'a': cout<<"\nScored90-100! \n";break; case'B': case'b': cout<<"\nScored80-89! \n";break; case'C': case'c': cout<<"\nScored70-79! \n";break; case'D': case'd': cout<<"\nScored60-69! \n";break; case'E': case'e': cout<<"\nScoreunder60! \n";break; default: cout<<"Unexpecterror! \n";//防止意外错误 } } 2.什么叫循环控制? 归纳比较C++中各种循环控制语句的语法、循环条件和循环结束条件的表示形式及执行流程。 【解答】 循环控制是在特定的条件下,程序重复执行一些特定动作。 语句 语法 执行流程 使用场合 while语句 while(表达式) 循环体; 循环条件: 表达式值为非0(真) 循环结束条件: 表达式值为0(假) 程序中常用于根据条件执行操作而不需关心循环次数的情况。 先判断形式循环,条件不成立时不进入循环体。 do-while语句 do 循环体 while(表达式); 循环条件: 表达式值为非0(真) 循环结束条件: 表达式值为0(假) 程序中常用于根据条件执行操作而不需关心循环次数。 后判断形式循环,至少执行1次循环体。 一般情况,while语句和dowhile语句可以互换使用。 for语句 for([表达式1];[表达式2];[表达式3]) 循环体; (1)表达式1称为初始化表达式,不是循环体执行部分。 (2)表达式3称为后置表达式,作为循环体的最后一个执行表达式。 (3)循环条件: 表达式2值为非0(真) 循环结束条件: 表达式2值为0(假) for语句称为步长循环语句,通常用于确定循环次数的情况。 由于语句的3个表达式均可以缺省,也可以用于条件循环,即循环次数不确定的情况。 3.根据一个实际问题,用不同的循环语句编程,分析其优缺点。 【解答】 略。 4.用if语句和goto语句组织循环,改写思考题的第3小题编写的程序。 分析在什么情况下可以适当使用goto语句。 【解答】 在不破坏程序基本流程控制的情况下,可以适当使用goto语句实现从语句结构部向外的必要跳转,即按特定条件结束结构语句块的执行。 程序略。 5.有以下程序 #include usingnamespacestd; intmain() {charc; cin>>c; if(c=='y'||c=='Y') inta=1; else inta=0; cout<<"a="< } 编译错误为: errorC2065: 'a': undeclaredidentifier,指示语句行 cout<<"a="< 变量a没有定义。 请分析原因,并做出修改。 【解答】 程序在if和else分支中分别声明了各自的局部变量a,而执行输出语句时,声明的变量a作用域已经结束,所以编译器认为输出语句的a没有定义。 正确的程序是: #include usingnamespacestd; intmain() {charc; inta; cin>>c; if(c=='y'||c=='Y') a=1; else a=0; cout<<"a="< } 6.有以下程序,希望判断两个输入的整数是否相等。 程序通过编译,但不能达到预期结果。 请分析程序能够通过C++编译而不能得到期望结果的原因。 #include usingnamespacestd; intmain() {inta,b; cout<<"a: ";cin>>a; cout<<"b: ";cin>>b; if(a=b) cout< else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课后 习题 答案 解答