C实用教程郑阿奇主编课后习题答案doc.docx
- 文档编号:4736772
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:92
- 大小:57.22KB
C实用教程郑阿奇主编课后习题答案doc.docx
《C实用教程郑阿奇主编课后习题答案doc.docx》由会员分享,可在线阅读,更多相关《C实用教程郑阿奇主编课后习题答案doc.docx(92页珍藏版)》请在冰点文库上搜索。
C实用教程郑阿奇主编课后习题答案doc
第一章
1.C++语言的标准有哪些?
它有哪些编程方法?
结构化程序设计的结构有哪些?
答案:
标准:
C++国际标准ISO/IEC14882:
1998,常被称为C++98、标准C++或ANSI/ISOC++;C++标准第二版(ISO/IEC14882:
2003)。
3种编程方法:
以C语言为子集的结构化程序设计模式、以类为核心的面向对象程序设计模式以及以模版为机制的通用编程模式。
结构化程序设计的结构:
顺序结构、选择结构和循环结构。
2.面向对象的程序设计有3个主要特征,他们分别是什么?
试举例说明。
答案:
3个主要特征:
封装、继承和多态。
封装:
封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。
例如C++中的类,它定义了该集合中每个对象所共有的属性和方法。
继承:
继承是让某个类型的对象获得另一个类型的对象的特征。
例如:
C++中子类对父类的继承,子类具有父类的特性,同时还可以拥有自己的新特性。
多态:
多态是指不同类型的对象接收相同的消息时产生不同的行为。
多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减小代码的复杂度。
例如函数的重载。
3.C++是以编译方式实现的高级语言,它的编译过程可分为3个子过程,它们分别是什么?
答案:
创建、编译和连接。
4.参照本章示例,编写1个C++程序:
输入圆的半径,输出其周长。
答案:
#include
usingnamespacestd;
intmain()
{
doubler,area;
cout<<"输入圆的半径:
";
cin>>r;
area=2*3.14159*r;
cout<<"圆的周长为:
"<
return0;
}
第二章
1.下列常量表示在C++中是否合法?
若不合法,指出原因;若合法,指出常量的数据类型。
答案:
32767:
合法,int
35u:
合法,无符号整形
1.25e3.4:
不合法,e后面的数字必须是整数
3L:
合法,长整形
0.0086e-32:
合法,实数
‘\87’:
不合法
“ComputerSystem”:
合法,字符串
“a”:
合法,字符串
‘a’:
合法,字符
‘\96\45’:
不合法,‘96’‘\45’分别为字符类型
.5:
合法,double
2.字符常量与字符串常量有什么区别?
指出下列哪些表示字符?
哪些表示字符串?
哪些既不表示字符也不表示字符串?
‘0x66’China“中国”“8.42”‘\0x33’56.34“\n\t0x34”‘\r’‘\\’‘8.34’“\0x33”‘\0’
答案:
字符:
‘\\’,‘\0’
字符串:
“中国”,“8.42”,“\0x33”
非字符亦非字符串:
‘0x66’,China,‘\0x33’,56.34,“\n\t0x34”‘\r’,‘8.34’
3.定义两个变量a和b,初值分别为8和10,若要a和b的值互换,即a为10,b为8,如何实现(可用另外一个变量t作为过渡)?
如不用中间变量又如何实现?
答案:
用变量t作为过渡
#include
usingnamespacestd;
intmain()
{
inta=8,b=10;
intt;
t=a;
a=b;
b=t;
cout<<"a:
"< "< return0; } 不用中间变量: (有两种方法: 异或运算或者是先求和运算) #include usingnamespacestd; intmain() { inta=8,b=10; a=a^b; b=b^a; a=a^b; cout<<"a: "< "< return0; } #include usingnamespacestd; intmain() { inta=8,b=10; a=a+b; b=a-b; a=a-b; cout<<"a: "< "< return0; } 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常量代替圆周率3.1415926,分别输入半径40和928.335,求圆面积。 要求先输出圆周率和半径,再输出其面积。 答案: #include usingnamespacestd; constdoublePI=3.14159265; intmain() { doubleradius1=40,radius2=928.335; doublearea1,area2; area1=PI*radius1*radius1; area2=PI*radius2*radius2; cout<<"圆周率: "< "< "< cout<<"圆周率: "< "< "< return0; } 6.设学生人数是一个常数50,编程输出下列结果(双引号也要输出): “Howmanystudentsinyourclass? ” “50” 答案: #include usingnamespacestd; constintSTDNO=50; intmain() { cout<<'\"'<<"Howmanystudentsinyourclass? "<<'\"'; cout< cout<<'\"'< return0; } 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; cin>>hex>>a>>oct>>b>>dec>>c; cout< 若在执行过程中,输入: 1212 指出cin执行后,a、b、c的值分别是什么? 输出的结果是什么? 答案: 输出结果是: 121212 a、b、c的值分别是18,10和12。 第三章 1.将下列代数式写成C++的表达式: (1) =sqrt(pow(sin(x),2.5)) (2) =((a+b)*h)/(2*m) (3) =exp(x*x)/sqrt(2*3.1415926) 2,求出下列算数表达式的值: (1)5+7/3*4=13 (2)23.5+9/5+0.5=25.0 (3)8+2*9/2=17 (4)’a’+23=97+23=120 (5)设x=2.5,y=4.7,a=7 x+a%3*(int)(x+y)%2/4=2.5+1*int(7.2)%2/4=2.5+7%2/4=2.5+1/4=2.5 (6)设x=3.5,y=2.5,a=2,b=3 (float)(a+b)/2-(int)x%(int)y=2.5-1=1.5 (7)设x=8 ‘a’+x%3+5/2-‘\24’=97+2+2-20=81 3,在下列表达式中,哪些是合法的赋值表达式? 哪些不是? 为什么? (a,b,c,x,y都是已定义的int型变量) (1)a=b=4.5+7.8是 (2)c=3.5+4.5=x=y=7.9不是,因为4.5是常量不能作为左值 (3)x=(y=4.5)*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的值。 x=a=3.523 x=3y为nulla=3b为null a=x=3.523 x=3.523y为nulla=3b为null x=a=y=3.523 x=3.0y=3.532a=3b为null b=x=(a=25,15/2) x=7.0y为nulla=25b=7 8,若有charx=15;使得x的第0位(即二进制位的最右边的那一位,或称最低位)为0,其余位保持不变的赋值表达式是什么? x=x&~1(其中1是由 算出来的) 9用sizeof运算符编写一段测试程序,测试本机中各基本数据类型或字符串所占的字节数,并将其填写到下表中,然后分析其结果。 基本数据类型 所占字节数 基本数据类型或字符串 所占字节数 char 1 float 4 short 2 double 8 int 4 longdouble 8 long 4 “\nCh\t\v\0ina” 10 #include usingnamespacestd; intmain() { cout<<"char类型所占字节数为"< cout<<"short类型所占字节数为"< cout<<"int类型所占字节数为"< cout<<"long类型所占字节数为"< cout<<"float类型所占字节数为"< cout<<"double类型所占字节数为"< cout<<"longdouble类型所占字节数为"< cout<<"字符\nCh\t\v\0ina所占字节数为"< return0; } 10,从键盘输入一个三位数,从左到右用a,b,c表示各位的数字,记为abc.现要求依次输出从右到左的各位数字,即输出另外三位数cba。 试设计程序。 #include usingnamespacestd; intmain() { intn,a,b,c,m;//n为输入的三位数,m为需要输出的三位数 cout<<"请输入一个三位数: "; cin>>n; if(n<=999&&n>=000) { c=n%10; b=(n/10)%10; a=((n/10)/10)%10; m=c*100+b*10+a; cout<<"数字"< } else cout<<"输入不正确"< return0; } 第四章: 1,设有变量inta=3,b=4,c=5;求下列表达式的值: a+b>c&&b==c7>5&&4==5True&&FalseF a||b+c&&b>c3||9&&4>53||0T ! a||! c||bF||F||4T a*b&&c+a15&&8T 2,设a,b,c的值分别是15,18,19,指出下列表达式运算后x,y,a,b,c的值 x=a 表达式运算: x=T&&b||c++=T||c++=T此时x=T,a=15,b=18,c=19 y=a>b&&c++ 表达式运算: y=F&&c++=F此时y=F,a=15,b=18,c=19 x=a+b>c&&c++ 表达式运算: x=33>19&&c++=T此时x=T.a=15,b=18,c=20 y=a||b++||c++ 表达式运算: y=T||b++||c++=T此时y=T,a=15,b=18,c=19 3,输入三个整数a,b,c要求按照从小到大的顺序输出 #include main() { inta,b,c,temp; cout<<"请输入三个整数:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实用教程 郑阿奇 主编 课后 习题 答案 doc
![提示](https://static.bingdoc.com/images/bang_tan.gif)