您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++实用教程【郑阿奇】课后习题答案
1第一章_C++概述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++程序:输入圆的半径,输出其周长。答案:#includeiostreamusingnamespacestd;intmain(){doubler,area;cout输入圆的半径:;cinr;area=2*3.14159*r;cout圆的周长为:area\n;return0;}第二章数据类型和基本输入/输出1.下列常量表示在C++中是否合法?若不合法,指出原因;若合法,指出常量的数据类型。答案:32767:合法,int35u:合法,无符号整形1.25e3.4:不合法,e后面的数字必须是整数3L:合法,长整形0.0086e-32:合法,实数‘\87’:不合法,八进制数中不应该出现82“ComputerSystem”:合法,字符串“a”:合法,字符串‘a’:合法,字符‘\96\45’:不合法,‘96’‘\45’分别为字符类型.5:合法,double2.字符常量与字符串常量有什么区别?指出下列哪些表示字符?哪些表示字符串?哪些既不表示字符也不表示字符串?‘0x66’China“中国”“8.42”‘\0x33’56.34“\n\t0x34”‘\r’‘\\’‘8.34’“\0x33”‘\0’答案:字符:‘\\’,‘\0’,‘\r’字符串:“中国”,“8.42”,“\n\t0x34”,“\0x33”非字符亦非字符串:‘0x66’,China,‘\0x33’,56.34,‘8.34’3.定义两个变量a和b,初值分别为8和10,若要a和b的值互换,即a为10,b为8,如何实现(可用另外一个变量t作为过渡)?如不用中间变量又如何实现?答案:用变量temp作为过渡#includeiostreamusingnamespacestd;intmain(){inta=8,b=10;inttemp;temp=a;a=b;b=temp;couta:a,b:bendl;return0;}不用中间变量方法一:#includeiostreamusingnamespacestd;intmain(){inta=8,b=10;a=a^b;b=b^a;a=a^b;couta:a,b:bendl;return0;}不用中间变量方法二:#includeiostreamusingnamespacestd;3intmain(){inta=8,b=10;couta:a,b:bendl;a=a+b;b=a-b;a=a-b;couta:a,b:bendl;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,求圆面积。要求先输出圆周率和半径,再输出其面积。答案:#includeiostreamusingnamespacestd;constdoublePI=3.1415926;intmain(){doubleradius1=40,radius2=928.335;doublearea1,area2;area1=PI*radius1*radius1;area2=PI*radius2*radius2;cout圆周率:PI,半径:radius1,面积:area1endl;cout圆周率:PI,半径:radius2,面积:area2endl;return0;}6.设学生人数是一个常数50,编程输出下列结果(双引号也要输出):“Howmanystudentsinyourclass?”“50”答案:4#includeiostreamusingnamespacestd;constintSTDNO=50;intmain(){cout'\'Howmanystudentsinyourclass?'\';coutendl;cout'\'STDNO'\'endl;return0;}7.设有语句:charc1,c2,c3;cinc1c2c3;若在执行过程中,输入:‘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的值为c8.设有语句:inta,b,c;cinhexaoctbdecc;couthexa’\t’octb’\t’decc;若在执行过程中,输入:121212指出cin执行后,a、b、c的值分别是什么?输出的结果是什么?答案:输出结果是:121212a、b、c的值分别是18,10和12第三章运算符和表达式1.将下列代数式写成C++的表达式:(1)2.5(sin())x=sqrt(pow(sin(x),2.5))(2)2abhm=((a+b)*h)/(2*m)(3)22xe=exp(x*x)/sqrt(2*3.1415926)2.求出下列算数表达式的值:(1)5+7/3*4=13(2)23.5+9/5+0.5=25.05(3)8+2*9/2=17(4)’a’+23=97+23=120(5)设x=2.5,y=4.7,a=7x+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=813.在下列表达式中,哪些是合法的赋值表达式?哪些不是?为什么?(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=05.设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=186.设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=137.设有变量:floatx,y;inta,b;指出运算下列表达式后x,y,a和b的值。(1)x=a=3.523x=3y为nulla=3b为null(2)a=x=3.523x=3.523y为nulla=3b为null(3)x=a=y=3.523x=3.0y=3.532a=3b为null(4)b=x=(a=25,15/2)x=7.5y为nulla=25b=78.若有charx=15;使得x的第0位(即二进制位的最右边的那一位,或称最低位)为0,其6余位保持不变的赋值表达式是什么?x=x&~1(其中1是由02即pow(2,0)算出来的)9.用sizeof运算符编写一段测试程序,测试本机中各基本数据类型或字符串所占的字节数,并将其填写到下表中,然后分析其结果。基本数据类型所占字节数基本数据类型或字符串所占字节数char1float4short2double8int4longdouble8long4“\nCh\t\v\0ina”10#includeiostreamusingnamespacestd;intmain(){coutchar类型所占字节数为sizeof(char)\n;coutshort类型所占字节数为sizeof(short)\n;coutint类型所占字节数为sizeof(int)\n;coutlong类型所占字节数为sizeof(long)\n;coutfloat类型所占字节数为sizeof(float)\n;coutdouble类型所占字节数为sizeof(double)\n;coutlongdouble类型所占字节数为sizeof(longdouble)\n;cout字符\nCh\t\v\0ina所占字节数为sizeof(\nCh\t\v\0ina)\n;return0;}10.从键盘输入一个三位数,从左到右用a,b,c表示各位的数字,记为abc.现要求依次输出从右到左的各位数字,即输出另外三位数cba。试设计程序。#includeiostreamusingnamespacestd;intmain(){intn,a,b,c,m;//n为输入的三位数,m为需要输出的三位数cout请输入一个三位数:;cinn;if(n=999&&n=000){c=n%10;b=(n/10)%10;a=((n/10)/10)%10;m=c*100+b*10+a;cout数字n的逆序为mendl;}
本文标题:C++实用教程【郑阿奇】课后习题答案
链接地址:https://www.777doc.com/doc-6156751 .html