C++实用教程郑阿奇课后习题答案文档格式.docx
- 文档编号:21456492
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:73
- 大小:56.69KB
C++实用教程郑阿奇课后习题答案文档格式.docx
《C++实用教程郑阿奇课后习题答案文档格式.docx》由会员分享,可在线阅读,更多相关《C++实用教程郑阿奇课后习题答案文档格式.docx(73页珍藏版)》请在冰豆网上搜索。
}
第二章数据类型和基本输入/输出
1.下列常量表示在C++中是否合法若不合法,指出原因;
若合法,指出常量的数据类型。
32767:
合法,int
35u:
合法,无符号整形
:
不合法,e后面的数字必须是整数
3L:
合法,长整形
合法,实数
;
‘\87’:
不合法,八进制数中不应该出现8
“ComputerSystem”:
合法,字符串
“a”:
‘a’:
合法,字符
‘\96\45’:
不合法,‘96’‘\45’分别为字符类型
.5:
合法,double
2.字符常量与字符串常量有什么区别指出下列哪些表示字符哪些表示字符串哪些既不表示字符也不表示字符串
‘0x66’China“中国”“8.42”‘\0x33’“\n\t0x34”‘\r’‘\\’‘8.34’“\0x33”‘\0’
!
字符:
‘\\’,‘\0’,‘\r’
字符串:
“中国”,“8.42”,“\n\t0x34”,“\0x33”
非字符亦非字符串:
‘0x66’,China,‘\0x33’,,‘8.34’
3.定义两个变量a和b,初值分别为8和10,若要a和b的值互换,即a为10,b为8,如何实现(可用另外一个变量t作为过渡)如不用中间变量又如何实现
用变量temp作为过渡
inta=8,b=10;
inttemp;
temp=a;
a=b;
b=temp;
a:
a<
b:
b<
endl;
.
不用中间变量方法一:
a=a^b;
b=b^a;
不用中间变量方法二:
~
a=a+b;
b=a-b;
|
a=a-b;
4.用enum定义4个枚举常量Flase、FALSE、TRUE、True,使其值分别等于bool类型中的false、false、true、true。
想一想这样做的好处是什么若使用const来定义,则如何进行并比较这两种定义的优缺点。
enum{False=false,FALSE=false,TRUE=true,True=true};
好处:
因为VC++中对大小写是敏感的,为了防止用户输入中大小写出错的情况,所以分别又定义了表示true和false的两种形式。
…
constboolFalse=false;
constboolFALSE=false;
constboolTRUE=true;
constboolTrue=true;
优缺点:
用enum一次可以定义多个整型标识符变量,而const定义的标识符常量由其数据类型决定;
另外,用const定义看不出其关联性。
5.用const常量代替圆周率,分别输入半径40和,求圆面积。
要求先输出圆周率和半径,再输出其面积。
constdoublePI=;
doubleradius1=40,radius2=;
doublearea1,area2;
area1=PI*radius1*radius1;
area2=PI*radius2*radius2;
圆周率:
PI<
半径:
radius1<
面积:
area1<
radius2<
area2<
6.设学生人数是一个常数50,编程输出下列结果(双引号也要输出):
“Howmanystudentsinyourclass”
“50”
。
constintSTDNO=50;
'
\"
Howmanystudentsinyourclass"
]
STDNO<
7.设有语句:
charc1,c2,c3;
cin>
c1>
c2>
c3;
若在执行过程中,输入:
‘a’‘b’‘c’
@
则cin执行后,c1、c2、c3的值分别是什么若输入:
abcdef
则cin执行后,c1、c2、c3的值又分别是什么
输入‘a’‘b’‘c’后,c1的值为‘,c2的值为a,c3的值为’
输入abcdef后,c1的值为a,c2的值为b,c3的值为c
8.设有语句:
inta,b,c;
hex>
a>
oct>
b>
dec>
c;
、
cout<
hex<
’\t’<
oct<
dec<
121212
指出cin执行后,a、b、c的值分别是什么输出的结果是什么
输出结果是:
121212
a、b、c的值分别是18,10和12
第三章运算符和表达式
1.将下列代数式写成C++的表达式:
(1)
=sqrt(pow(sin(x),)
(2)
=((a+b)*h)/(2*m)
(3)
=exp(x*x)/sqrt(2*
2.求出下列算数表达式的值:
(1)5+7/3*4=13
(2)+9/5+=
(3)8+2*9/2=17
(4)’a’+23=97+23=120
/
(5)设x=,y=,a=7
x+a%3*(int)(x+y)%2/4=+1*int%2/4=+7%2/4=+1/4=
(6)设x=,y=,a=2,b=3
(float)(a+b)/2-(int)x%(int)y==
(7)设x=8
‘a’+x%3+5/2-‘\24’=97+2+2-20=81
3.在下列表达式中,哪些是合法的赋值表达式哪些不是为什么
(a,b,c,x,y都是已定义的int型变量)
(1)a=b=+是
(2)c=+=x=y=不是,因为是常量不能作为左值
(3)x=(y=*45是
(4)a=x++=++y不是,x++不能作为左值
4.写出下面表达式运算后a的值,设原来的a都是10.
(1)a+=a<
=>
a=a+a=20
(2)a%=(7%2)<
a=a%(7%2)=10%1=0
(3)a*=3+4<
a=a*(3+4)=70
-
(4)a/=a+a<
a=a/(a+a)=10/20=0
(5)a-=a<
a=a-a=0
(6)a+=a-=a*=a<
a+=a-=100=>
a+=0=>
a=0
5.设m,n的值分别为10,8,指出下列表达式运算后a,b,c,和d的值。
(1)a=m+++n++=10+8=18
(2)b=m+++++n=10+9=19
(3)c=++m+++n=11+9=20
(4)d=m--+n++=10+8=18
6.设a,b,c的值分别为5,8,9;
指出下列表达式运算后x,y和z的值
(1)y=(a+b,c+a)=(13,14)=14
(2)x=y=a,z=a+bx=5y=5z=13
(3)y=(x=a*b,x+x,x*x)=(x=40,80,1600)=1600x=40
(4)x=(y=a,z=a+b)=(y=5,z=13)=13y=5z=13
7.设有变量:
floatx,y;
inta,b;
指出运算下列表达式后x,y,a和b的值。
(1)x=a=
x=3y为nulla=3b为null
(2)a=x=
x=y为nulla=3b为null
(3)x=a=y=
x=y=3.532a=3b为null
(4)b=x=(a=25,15/2)
`
x=y为nulla=25b=7
8.若有charx=15;
使得x的第0位(即二进制位的最右边的那一位,或称最低位)为0,其余位保持不变的赋值表达式是什么
x=x&
~1(其中1是由
即pow(2,0)算出来的)
9.用sizeof运算符编写一段测试程序,测试本机中各基本数据类型或字符串所占的字节数,并将其填写到下表中,然后分析其结果。
基本数据类型
所占字节数
基本数据类型或字符串
char
1
float
4
short
2
double
8
[
int
longdouble
long
“\nCh\t\v\0ina”
10
#include<
cout<
char类型所占字节数为"
sizeof(char)<
short类型所占字节数为"
sizeof(short)<
int类型所占字节数为"
sizeof(int)<
long类型所占字节数为"
sizeof(long)<
:
float类型所占字节数为"
sizeof(float)<
double类型所占字节数为"
sizeof(double)<
longdouble类型所占字节数为"
sizeof(longdouble)<
字符\nCh\t\v\0ina所占字节数为"
sizeof("
\nCh\t\v\0ina"
)<
return0;
10.从键盘输入一个三位数,从左到右用a,b,c表示各位的数字,记为abc.现要求依次输出从右到左的各位数字,即输出另外三位数cba。
试设计程序。
》
{
intn,a,b,c,m;
设有变量inta=3,b=4,c=5;
求下列表达式的值:
(1)a+b>
c&
&
b==c7>
5&
4==5True&
FalseF
(2)a||b+c&
c3||9&
4>
53||9&
F3||FT||FT
(3)!
a||!
c||bF||F||4T
(4)a*b&
c+a15&
8T
2.设a,b,c的值分别是15,18,19,指出下列表达式运算后x,y,a,b,c的值
(1)x=a<
b||c++
表达式运算:
x=T||c++=T此时x=T,a=15,b=18,c=19
(2)y=a>
b&
c++
表达式运算:
y=F&
c++=F此时y=F,a=15,b=18,c=19
(3)x=a+b>
x=33>
19&
c++=T此时x==15,b=18,c=20
(4)?
(5)y=a||b++||c++
y=T||b++||c++=T此时y=T,a=15,b=18,c=19
3.输入三个整数a,b,c要求按照从小到大的顺序输出
方法一:
inta,b,c,temp;
cout<
请输入三个整数:
cin>
if(a>
b)/*如果a>
b,交换a与b的值*/
temp=a;
a=b;
b=temp;
}
c)/*如果a>
c,交换a与c的值*/
a=c;
c=temp;
if(b>
c)/*如果b>
c,交换b与c的值*/
temp=b;
b=c;
c=temp;
这三个数从小到大的排列为"
a="
b="
c="
c<
方法二:
inta,b,c,temp;
cin>
if(a>
b,交换a与b的值*/
{
temp=a;
}
if(b>
c)/*如果a>
c,交换a与c的值*/
temp=b;
:
b)/*如果b>
c,交换b与c的值*/
endl
<
4.有一个数学函数
写一个程序,输入x,输出y.
intx,y;
请输入x:
x;
if(x>
=10)y=x-1;
elseif(x>
1)y=2*x+2;
elsey=3*x*x+3*x-1;
y的值为"
y<
5.给出一个百分制的成绩,要求输出成绩为A,B,C,D.其中,85分以上为A,75~84分为B,65~74分为C,65分以下为D。
(
floatfScore;
请输入一个百分制的成绩:
fScore;
if(fScore>
100||fScore<
0)
输入的分数无效"
elseif(fScore>
=85)
A"
=75)
B"
=65)
C"
else
D"
6.选(D)
7.求下列循环次数
(1)for(inti=0,x=0;
x&
i<
=5;
i++)循环了6次
(2)while(inti=0)i--;
循环了0次
(3)inti=5;
do{
i--<
i--;
}While(i!
=0);
循环了无数次
8.编程求100以内被7或5整除的最大自然数
iostream>
intmax;
for(inti=1;
=100;
i++)
{
if(i%5==0||i%7==0)max=i;
}
这个最大的自然数是"
max<
9.分析下列程序的输出结果
(1)x=5,y=4,z=1
(2)k=4
(3)<
#
10.Fibonacci数列中的前两个数是1和1,从第三个数开始,每个数等于前两个数之和。
编程计算并输出次数列中的前30个数。
iomanip>
#
intsum=0,a=1,b=1;
for(inti=1;
=6;
for(intj=1;
j<
j++)
if(i==1&
=2)
cout<
setw(7)<
1<
"
else{
sum=a+b;
sum<
a=b;
b=sum;
}
¥
}
11.编程求n!
,即
】
intn,m=1;
请输入n:
n;
for(inti=0;
n-1;
i++)/*也可用for(;
n>
=1;
n--){m*=n;
}*/
{
m*=(n-i);
cout<
n的阶乘为"
m<
12.从键盘上输入一个整数n的值,按下式求出y的值,并输出n和y的值(y用浮点数表示)
y=1!
+2!
+3!
+……+n!
intn,y=0,m=1;
【
for(intj=0;
{
for(inti=0;
n-j-1;
m*=(n-i-j);
y+=m;
m=1;
,
doubley=;
for(inti=1;
=n;
m*=i;
13.用泰勒级数求e的近似值,直到最后一项小于
为止。
doublee=,m=1;
intn=1;
do{
m=m*(m+1);
n++;
}while(m<
10*10*10*10*10*10);
for(intj=0;
m=;
e+=m);
e的值为"
e+1<
)
doublee=,m;
inti=1,n=1;
do
m=n;
i++;
n*=i;
e+=m;
}while(m>
=;
14.设计一个程序,输出所有的水仙花数。
所谓水仙花就是一个三位的整数,其各位数字的立方和等于该数本身。
intn=100,a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实用教程 郑阿奇 课后 习题 答案