C++程序设计基础第二版课后答案电子工业出版社Word格式文档下载.docx
《C++程序设计基础第二版课后答案电子工业出版社Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++程序设计基础第二版课后答案电子工业出版社Word格式文档下载.docx(164页珍藏版)》请在冰点文库上搜索。
![C++程序设计基础第二版课后答案电子工业出版社Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/5c89aa36-3448-4c9c-ae6b-4bad1bbc7bc7/5c89aa36-3448-4c9c-ae6b-4bad1bbc7bc71.gif)
int*p1=&
a,*p2=&
b;
(a)*p2=b;
(b)p1=a;
(c)p2=p1;
(d)c=*p1*(*p2);
16.有以下变量说明,下面正确的语句是(b)。
inta=10,b;
int&
pa=a,&
pb=b;
(a)&
pb=a;
(b)pb=pa;
(c)pb=&
pa;
(d)*pb=*pa;
17.执行下面语句序列后,a和b的值分别为(b)。
inta=5,b=3,t;
int&
ra=a;
rb=b;
t=ra;
ra=rb;
rb=t;
(a)3和3(b)3和5(c)5和3(d)5和5
18.在下列运算符中,(d)优先级最高。
(a)<
=(b)*=(c)+(d)*
19.在下列运算符中,(d)优先级最低。
(a)!
(b)&
&
(c)!
=(d)?
:
20.设inti=1,j=2;
则表达式i+++j的值为(c)。
(a)1(b)2(c)3(d)4
21.设inti=1,j=2;
则表达式++i+j的值为(d)。
22.在下列表达式选项中,(c)是正确。
(a)++(a++)(b)a++b(c)a+++b(d)a++++b
23.已知inti=0,j=1,k=2;
则逻辑表达式++i||--j&
++k的值为(b)。
(a)0(b)1(c)2(d)3
24.执行下列语句后,x的值是(d),y的值是(c)。
intx,y;
x=y=1;
++x||++y;
(a)不确定(b)0(c)1(d)2
25.设X为整型变量,不能正确表达数学关系1<X<5的C++逻辑表达式是(a)。
(a)1<
X<
5(b)X==2||X==3||X==4
(c)1<
X&
X<
5(d)!
(X<
=1)&
!
(X>
=5)
26.已知intx=5;
执行下列语句后,x的值为(c)。
x+=x-=x*x;
(a)25(b)40(c)–40(d)20
27.设inta=1,b=2,c=3,d=4;
则以下条件表达式的值为(a)。
a<
b?
a:
c<
d?
c:
d
28.以下逗号表达式的值为(d)。
(x=4*5,x*5),x+25
(a)25(b)20(c)100(d)45
1.2把下列数学表达式写成c++算术表达式
1.
2.x{x[x(ax+b)+c]+d}+e
3.ln(1+|
|10)4.
5.cot
6.lg(a2+ab+b2)
【答案】
1.1/(1+1/(1+1/(x+y)))
2.x*(x*(x*(a*x+b)+c)+d)+e
3.log(1+pow(fabs((a+b)/(a–b)),10)
4.sqrt(1+3.14159/2*cos(48*3.14159/180))
5.1/tan((1-x*x)/(1+x*x))
或者cos((1-x*x)/(1+x*x))/sin((1-x*x)/(1+x*x))
6.log10(a*a+a*b+b*b)
1.3用关系表达式或逻辑表达式表示下列条件
1.i被j整除2.n是小于正整数k的偶数
3.1≤x<
104.x,y其中有一个小于z
5.y
[–100,–10],并且y
[10,100]
6.坐标点(x,y)落在以(10,20)为圆心,以35为半径的圆内
7.三条边a,b和c构成三角形
8.年份Year能被4整除,但不能被100整除或者能被400整除
1.i%j==02.(n<
k)&
(n%2==0)
3.1<
=x&
x<
104.x<
z||y<
z
5.!
(y>
=-100&
y<
=-10)&
!
=10&
=100)
6.sqrt(pow((x-10),2)+pow((y-20),2))<
35
7.a+b>
c&
b+c>
a&
c+a>
b
8.(year%4==0)&
(year%100!
=0)||(year%400==0)
1.4阅读下列程序,写出执行结果
1.#include<
iostream.h>
voidmain()
{
inta=1,b=2,x,y;
cout<
<
a+++++b<
endl;
a%b<
x=!
a>
y=x--&
b;
x<
y<
}
4
2
-1
0
2.#include<
intx,y,z,f;
x=y=z=1;
f=--x||y--&
z++;
"
x="
<
y="
z="
z<
f="
f<
x=0
y=0
z=2
f=1
3.#include<
#include<
iomanip.h>
voidmain()
{inta=123;
ra=a;
int*pa=&
a;
cout<
setw(5)<
dec<
a<
oct<
ra<
hex<
*pa<
endl;
}
1231737b
1.5思考题
1.什么叫数据类型?
数据的类型定义有什么作用?
2.数据对象在C++中有什么不同的访问方式?
请编写一个程序验证之。
3.普通数据类型变量和指针类型变量的定义、存储、使用方式上有何区别?
4.什么叫数据对象的引用?
对象的引用和对象的指针有什么区别?
请用一个验证程序说明之。
5.为了约束只能对数据对象的值做读操作,C++采用什么方式?
请做出简要归纳。
6.什么叫表达式?
表达式值的类型由什么因素决定?
使用不同运算符连接以下3个变量,请写出5个以上获得值等于1的表达式。
inta=1,b=2;
doublex=0.5;
1.6编程题
1.输入一个三位整数,将它反向输出。
【解答】
#include<
{intx,i,j,k;
pleaseinputx:
"
;
cin>
>
x;
i=x/100;
j=(x-i*100)/10;
k=x-i*100-j*10;
k<
j<
i<
2.输入平面上某点横坐标x和纵坐标y,若该点在由图1.11表示的方块区域内,则输出1;
否则,输出0。
图1.11正方形
#include<
{floatx,y,b;
pleaseinputx,y:
x>
y;
b=(-2<
=x)&
(x<
=2)&
(-2<
=y)&
(y<
=2);
b<
3.输入三个整数,求出其中最小数(要求使用条件表达式)。
{inta,b,c,temp,min;
pleaseinputa,b,c:
a>
b>
c;
temp=(a<
b)?
a:
min=(temp<
c)?
temp:
c;
min="
min<
第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;
elsey=0;
elsey=1;
3.假设i=2,执行下列语句后i的值为(b)。
switch(i)
{case1:
i++;
case2:
i--;
case3:
++i;
break;
case4:
--i;
default:
4.已知inti=0,x=0;
下面while语句执行时循环次数为(d)。
while(!
x&
3){x++;
(a)4(b)3(c)2(d)1
5.已知inti=3;
下面do_while语句执行时循环次数为(b)。
do{i--;
i<
}while(i!
=1);
(a)1(b)2(c)3(d)无限
6.下面for语句执行时循环次数为(b)。
for(inti=0,j=5;
i=j;
)
{cout<
i++;
j--;
(a)0(b)5(c)10(d)无限
7.以下死循环的程序段是(b)。
(a)for(intx=0;
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<
{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;
d<
20
2.#include<
{inta=0,b=1;
switch(a)
{case0:
switch(b)
{case0:
a="
a<
b="
break;
case1:
}
case1:
a++;
b++;
a=0b=1
a=1b=2
3.#include<
{inti=1;
while(i<
=10)
if(++i%3!
=1)
continue;
elsecout<
7
10
4.#include<
{inti=0,j=5;
do
{i++;
if(i>
3)break;
}while(j>
0);
i="
'
\t'
j="
i=4j=1
5.#include<
{inti,j;
for(i=1,j=5;
i<
j;
i++)
{j--;
′\t′<
33
6.#include<
{inti,s=0;
for(i=0;
5;
switch(i)
s+=i;
case2:
default:
s+=2;
s="
s<
s=7
7.#include<
{inti,j,x=0;
=3;
{x++;
for(j=0;
j<
j++)
{if(j%2)continue;
x++;
x="
x=16
2.3思考题
1.C++中有什么形式的选择控制语句?
归纳它们语法形式、应用场合。
根据一个实际问题使用不同的条件语句编程。
2.什么叫循环控制?
归纳比较C++中各种循环控制语句的语法、循环条件和循环结束条件的表示形式及执行流程。
3.根据一个实际问题,用不同的循环语句编程,分析其优缺点。
4.用if语句和goto语句组织循环,改写思考题2.3第3小题编写的程序。
分析在什么情况下可以适当使用goto语句。
2.4编程题
1.输入某学生成绩,若成绩在85分以上输出“verygood”,若成绩在60分到85分之间输出“good”,若成绩低于60分输出“nogood”。
{floatscore;
pleaseinputscore:
score;
if(score>
=85)cout<
Verygood!
;
elseif(score>
=60)cout<
Good!
Nogood!
2.输入三个数,按从小到大的顺序输出。
{inta,b,c,t;
a,b,c="
if(a>
b){t=a;
a=b;
b=t;
c){t=a;
a=c;
c=t;
if(b>
c){t=b;
b=c;
\t'
3.输入三角形的三条边,判别它们能否形成三角形,若能,则判断是等边、等腰、还是一般三角形。
{floata,b,c;
a,b,c="
c;
if(a+b>
c&
b+c>
a&
c+a>
b)
{if(a==b&
b==c)
cout<
等边三角形!
elseif(a==b||a==c||b==c)
等腰三角形!
一般三角形!
不能形成三角形!
endl;
4.输入百分制成绩,并把它转换成五级分制,转换公式为:
{floatscore;
chargrade;
score="
if(score>
=0&
score<
=100)
{switch(int(score)/10)
{case10:
case9:
grade='
a'
case8:
b'
case7:
c'
case6:
d'
case5:
case4:
case3:
case0:
e'
else
数据输入错误!
gotoend;
grade<
end:
//分号不能省
5.编程序模拟剪刀、石头和纸游戏。
游戏规则为:
剪刀剪纸,石头砸剪刀,纸包石头。
玩游戏者从键盘上输入s(表示剪刀)或r(表示石头)或p(表示纸),要求两个游戏者交替输入,计算机给出输赢的信息。
2#include<
3voidmain()
4{charfirst,second;
5cout<
Firstinput(s,rorp):
6cin>
first;
7cout<
Secondinput(s,rorp):
8cin>
second;
9switch(first)
10{case'
s'
:
11switch(second)
12{case'
Scissortiesscissor."
13case'
r'
Scissoriscrushedbyrock."
14