c课后习题答案2.pdf
《c课后习题答案2.pdf》由会员分享,可在线阅读,更多相关《c课后习题答案2.pdf(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章一、选择题1 .B;(typ e d e f ,typ e id ,typ e n a m e,都为保留字);2 .C;(标识符,应该以字母或,下划线开头);3 .C;(标识符中有的特殊符号,只能有下划线);二、填空题1.c in,c o ut2.n e w,d e l e te3.in t a (5 5);三、改错题1.没有定义变量n um;2,不能给变量x,声明指向常量的指针c o n st in t*p=&x;如果吧x 定义为常量c o n st,*p 不能当作“左值”。3.p 为常量指针,不能吧p 作 为“左值”,p=&y,错误。四、编程题1 .分别用字符和A SC I I 码形
2、式输出整数值6 5 和 6 6.Sin c l ud e usin g n a m e sp a c e std;vo id m a in()c ha r a=A ,b=,B ;in t a sc ii_ l=5 3,a sc ii_ 2=5 4;A SC H 码中的,6 5 和 6 6c o ut*字符输出:7 in t)a ,(in t)b e n d l;c o utz,A SC I I 码输出:(c ha r)a sc ii_ l (ch ar)as ci ;c o ut(c ha r)a sc ii_ l(c ha r)a sc ii_ 2 e n d l;2.编写一个in t型变量
3、分配1 0 0个整形空间的程序。Sin c l ud e usin g n a m e sp a c e std;vo id m a in()(in t*p;in t i;p =n e w in t1 0 0 ;f o r(i=0;i 1 0 0;i+)(*(p+i)=i;)f o r(i=0;i 1 0 0;i+)(c o ut*(p+i)z,,d e l e te p;)3.编写完整的程序,它读入1 5个f l o a t值,用指针把它们存放在一个存储块里,然后输出这些值和以及最小值。ttin c l ud e ttin c l ud e 用于数组排列的头文件usin g n a m e
4、sp a c e std;vo id m a in()f l o a t*p;p =n e w f l o a t1 5 ;c o ut输入 1 5 个 f l o a t 类型的值:e n d l;f o r(in t i=0;i*(p+i);)f o r(i=0;i 1 5;i+)(c o ut*(p+i)z,,;)so rt(p,p+1 5);c o ut”n 最小的是:*(p)e n d l;d e l e te p;)4 .声明如下数组:in t a =1,2,3,4,5,6,7,8;先查找4的位置,将数组a复制给数组b,然后将数组a的内容反转,再查找4的位置,最后分别输出数组a和b
5、的内容。Sin c l ud e Sin c l ud e Sin c l ud e usin g n a m e sp a c e std;vo id m a in()(in t a =l,2,3,4,5,6,7,8,b 8 ;c o ut 数组 a 中 4 的位置是:X f in d(a,a+8,4)e n d l;查找 4的位置c o p y(a,a+8,b);将数组a复制给数组bre ve rse _ c o p y(b,b+8,a);把数组b,逆向复制给a,完成a的逆转c o ut 数 组 a 反转后,4 的位置是:f in d(a,a+8,4)e n d l ;在查找4的位置c o
6、 ut数字a中的内容:e n d l;f o r(in t i=0;i8;i+)c o ut ,;c o ut n数组b中的内容:e n d l;f o r(i=0;i8;i+)c o ut b i,;第二章一、单项选择1.D;2.D;三、编程题1 .使用多种方法编写将两个字符串连接在一起的程序。Sin c l ud e Sin c l ud e usin g n a m e sp a c e std;vo id m a in ()(使用strin g 类定义字符串,完成字符串连接strin g strl (C+),str2 (程序设计);strin g str3;str3 =strl+str
7、2;连接方式 1c o ut str3 e n d l;使用c ha r数组定义字符串,完成连接c ha r c l =c+,c 2 口 =p ro g ra m ;c ha r c 3 2 0 ;in t i=0,k=0;f o r(i=0;i2 0;i+)/初始化 c 3c 3 i=,0,;i=0;whil e (c l i!=0 )(c 3 k =c l i;i+;k+;)i=0;whil e(c 2 i !=,0*)(c 3 k =c 2 i;i+;k+;)c o ut c 3 e n d l;)2 .已知一个strin g 的对象str的内容为 W e a re he re!”,使用
8、多种方法输出 “h”。Sin c l ud e Sin c l ud e Sin c l ud e Sin c l ud e usin g n a m e sp a c e std;vo id m a in()strin g strl (Z/W e a re he re!”);c o ut strl 7 e n d l;通过数组strin g str2=strl.sub str(7,1);通过得到子字符串c o ut str2 y)?(x):(y)3.函数change的参数定义成了常量,只能使用参数,而无权修改他。void change(string&s)(S=s+p i g!;)四、编程题1
9、.编写一个求方程ax2+bx+c=0的根 的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。Sinclude#include void equation(int a,int b,int c)double xl,x2,temp;temp=b*b-4*a*c;xl=(-b+sqrt(temp)/(2*a*1.0);x2=(-b-sqrt(temp)/(2*a*1.0);cout两个不相等的实根*endl;coutz,xl=x l z,,x2=z,x2 endl;)void equation_2(int a,int b,int c)
10、(double xl,x2,temp;temp=b*b-4*a*c;xl=(-b+sqrt(temp)/(2*a*1.0);x2=xl;cout两个相等的实根。endl;coutz/xl=x l z,,x2=x 2 endl;void equation_3(int a,int b,int c)(double temp,real 1,real2,image1,image2;temp=-(b*b-4*a*c);reall=-b/(2*a*1.0);real2=reall;imagel=sqrt(temp);image2=一 imagel;c out两个虚根 e nd l;c o u t z,x l
11、 =re a l l/,+i ma g e l,/j,z e nd l;c o u t,zx 2=re a l 2/,+i ma g e 2,zj,z e nd l;)v oi d ma i n()(i nt a,b,c;d oub l e te mp;c o u t 输入 a,b,c 的值a b c;c out 方程为:0)e qua ti on(a,b,i f(te mp=0)e qua ti on_ 2(a,b,i f(te mp 0)e qua ti on_ 3(a,b,c);c);c);)2.定义函数up(c h),如字符变量c h是小写字母就转换成大写字母并通过u p返回,否则字符
12、c h不改变。要求在短小而完全的程序中显示这个程序是怎样被调用的。S i nc l ud e usi ng na me spa c e std;c h a r up(c h a r c)i f(c =97&c =1 23)re turn(c -32);e l sere turn c;)v oi d ma i n()(i nt i;c h a r c 1 5 =,A,,,v,,,e,,,t,,,E,,,T,,,%,,,&,,,4,,Y,,,e,,,i,,,9,一 ;f or(i =0 ;i 1 5 ;i+)c out up(c i )z,,c out e nd l;3.编写主程序条用带实数r和整
13、数n两个参数的函数并输出r的n次募。S i nc l ud e S i nc l ud e d oub l e pow e r(d oub l e a,i nt b)i nt i;d oub l e re sul t=1.0;f or(i=0;i r;c outn;c out 的“n 次幕是:pow e r(r,n)e nd l;4 .编写有字符型参数C和整形参数N的函数,让他们显示出由字符C组成的三角形。其方式为第1行有1个字符C,第2行有2个字符C ,等等。W i nc l ud e usi ng na me spa c e std;v oi d pri nt_ tri a ng l e(
14、c h a r c,i nt n)i nt i,j;f or(i=0;i n;i+)(f or(j=0;j=i;j+)(c out c;c out e nd l;v oi d ma i n()pri nt_ tri a ng l e (J a,1 0);5.编写一个i e qi u字符串长度的函数,strl e n(),再用strl e n()函数编写一个函数re v e rs(s)的倒序递归程序,使字符串s逆序。S i nc l ud e tti nc l ud e usi ng na me spa c e std;i nt strl e n(c h a r*str)i nt l e n=0
15、;w h i l e (str l e n !=0)(l e n+;)re turn l e n;)v oi d re v e rs(c h a r*b)(c h a r c;i nt j,l e n;l e n=strl e n(b);j=l e n/2-l;w h i l e (j=0)(c=*(b+j);*(b+j)=*(b+l e n-j-1);*(b+l e n-j-l)=c;J ;)b l e n=,0f;)v oi d ma i n()(c h a r str 二“1 234 5 6 7 8 90 ;c o u t s t r z z-的长度:“strl e n(str)e nd
16、 l;c o u t s t r e nd l ;倒序前re v e rs(str);/c o u t s t r e nd l;倒序后6.用函数模板实现3个数值中按最小值到最大值排序的程序。tti nc l ud e usi ng na me spa c e std;te mpl a tev oi d sort(T a,T b,T c)(T a rra y 3,te mp;i nt i,j;a rra y 0 =a;a rra y 1 =b;a rra y 2 =c;f or(i=0;i 3;i+)(f or(j=0;j a rra y j+1 )te mp=a rra y j ;a rra
17、 y j =a rra y j+1 ;a rra y j+1 =te mp;)c o u t a rra y 0 a rra y 1 a rra y 2 e nd l;v oi d ma i n()sort 1,9);7.利用函数模板设计一个求数组元素中和的函数,并检验之。S i nc l ud e usi ng na me spa c e std;te mpl a teT sum(T a ,i nt n)i nt i;T s=0;f or(i=0;i n;i+)s=s+a i ;re turn s;v oi d ma i n()(i nt a 5 =l,2,3,4,5);i nt s=sum
18、(a,5);c o u t s e nd l;8.重载上题中的函数模板,使他能够进行两个数组的求和。S i nc l ud e usi ng na me spa c e std;te mpl a teT sum(T a ,i nt n)(i nt i;T s=0;f or(i=0;i n;i+)s=s+a i ;re turn s;te mpl a te 重载上面的模板T sum(T a ,i nt n,T b ,i nt m)(re turn sum(a,n)+sum(b,m);)v oi d ma i n()(i nt a 5 =l,2,3,4,5 ;i nt b 1 0 =l,2,3,4
19、,5,6,7,8,9,1 0);i nt si =sum(a,5);i nt s2=sum(b,1 0);i nt s3=sum(a,5,b,1 0);c o u t sl e nd l;c o u t s2 e nd l;c out s3 A (v oi d)、或 A:A()。4.Bo 5.Co 6.Co7.D三、改错题1.re turn m;-错误,没又定义变量m;2.A.i ni t(24,5 6);-一错误,应该先定义 A 对象:P oi nt A;四、完成程序题1.ti i nc l ud e usi ng na me spa c e std;c l a ss b a sepri v
20、 a te :私有数据成员i nt a,b;pub l i c :v oi d i ni t(i nt x,i nt y)公有函数a =x;b =y;)v oi d pri nt()c o u t/z2*a *-“b,z(2*a-b)e nd l;);v oi d ma i n()(b a se a;a.i ni t(6 8,5 5);a.pri nt();2.S i nc l ud eusi ng na me spa c e std;c l a ss P oi nt(pri v a te :i nt m,n;pub l i c :P oi nt(i nt,i nt);整型变量,为参数的构造函
21、数P oi nt(P oi nt&);复制构造函数的原型pri nt()(c o u t z,m=m z,,n=n e nd l;);P oi nt:P oi nt(i nt a,i nt b)(m=a;n=b;)P oi nt:P oi nt(P oi nt&t)复制构造函数的定义m=t.m;n=t.n;)v oi d ma i n()(P oi nt a(1 0,8 9);P oi nt b (a);a.pri nt();b.pri nt();五、程序分析题1 .没有结果,因为没有ma i n函数如果加ma i n函数v oi d ma i n()b a se b (1 0,20);)输出
22、:初始化.1 0,20D e story.1 0,202.输出:5 5六、编程题1.设计一个点类P oi nt,再设计一个矩形类,矩形类使用P oi nt类的两个坐标点作为矩形的对角顶点。并可以输出4 个坐标值和面积。使用测试程序验证程序。S inc lu d e u s ing name s p ac e s td;c las s P oint 点类p r ivate:int x,y;私有成员变量,坐标p u b lic :P oint()无参数的构造方法,对 xy初始化x=0;y=0;)P oint(int a,int b)参数的构造方法,对 xy赋值xa;y=b;)void s e tX
23、 Y(int a,int b)设置坐标的函数x=a;y=b;)int g e tX()得到x的方法(r e tu r n x;)int g e tY()得到有的函数r e tu r n y;);c las s R e c tang le矩形类p r ivate:P oint p ointl,p oint2,p oint3,p oint4;私有成员变量,4个点的对象p u b lic :R e c tang le();类P oint的无参构造函数已经对每个对象做初始化啦,这里不用对每个点多初始化了R e c tang le (P oint one,P oint two)用点对象做初始化的,构造函
24、数,1和4为对角顶点p ointl=one;p oint4 =two;init();)R e c tang le (int xl,int yl,int x2,int y2)用两对坐标做初始化,构造函数,1和4为对角顶点p ointl.s e tX Y(xl,yl);p oint4.s e tX Y (x2,y2);init();)void init()给另外两个点做初始化的函数p oint2.s e tX Y (p oint4.g e tX(),p ointl.g e tY();p oint3.s e tX Y(p ointl.g e tX(),p oint4.g e tY ();void p
25、 r intP oint()打印四个点的函数(c o u t z,A:(p ointl.g e tX(),zp ointl.g e tY()e nd l;c o u t,zB:(p oint2.g e tX()p oint2.g e tY ()e nd l;c o u t z,C:(z,p oint3.g e tX()p oint3.g e tY ()z,)z,e nd l;c o u t,D:(z,p oint4.g e tX()p oint4.g e tY ()0)r e tu r n ar e a;e ls er e tu r n-ar e a;);void main()P oint p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课后 习题 答案
限制150内