C++程序设计课后答案.doc
《C++程序设计课后答案.doc》由会员分享,可在线阅读,更多相关《C++程序设计课后答案.doc(189页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC+程序设计课后答案第一章第一章2一、选择题2二、填空题2三、改错题2四、编程题2第二章4一、单项选择4三、编程题4第三章5一、填空题5二、单项选择题5三、改错题5第四章10一、填空题10二、单项选择题10三、改错题10四、完成程序题10五、程序分析题12六、编程题12第五章15一、填空题15二、单项选择题15三、改错题15四、完成程序题15五、编程题16第六章18一
2、、填空题18二、单项选择18三、改错题18四、编程题19第七章24一、单项选择24二、填空题24三、改错题24四、编程题25第八章28一、单项选择题28二、分析程序题28三、查错题28四、完成程序题29第九章30五、编程题31第十章37一、单项选择题37二、填空题37四、编程题37第一章一、选择题1.B; (typedef ,typeid ,typename,都为保留字); 2.C; (标识符,应该以字母或,下划线开头); 3.C; (标识符中有的特殊符号,只能有下划线); 二、填空题1. cin,cout 2. new,delete 3. int a=55; 三、改错题1.没有定义变量num
3、; 2.*p不能当作“左值”。 3.p为常量指针,不能吧p作为“左值”,p=&y,错误。 四、编程题1. 分别用字符和ASCII码形式输出整数值65和66. #include using namespace std;void main()char a=A,b=B;int ascii_1=53,ascii_2=54;/ASCII码中的,5和6cout字符输出:(int)a,(int)b endl;coutASCII码输出:(char)ascii_2(char)ascii_1,;cout(char)ascii_1(char)ascii_1 endl;2.编写一个int型变量分配100个整形空间的程
4、序。#include using namespace std;void main()int *p;p = new int100;for(int i = 0;i 100;i+)*(p+i)=i;for(i = 0;i 100;i+)cout*(p+i),;delete p;3.编写完整的程序,它读入15个float值,用指针把它们存放在一个存储快里,然后输出这些值的和以及最小值。#include using namespace std;void main()float min,sum=0,*p;p = new float15;cout输入15个float类型的值: *p;/输入第一个数, min
5、=*p;/ 先认为是最小sum+=*p;/加入累加器for(int i = 1;i *(p+i); sum+=*(p+i); /加入累加器 if(*(p+i)min) min=*(p+i);coutn这些数的和是:sum n其中最小的是:min endl;delete p;4.声明如下数组: int a = 1 ,2 ,3, 4, 5, 6, 7, 8;先查找4的位置,将数组a复制给数组b,然后将数组a的内容反转,再查找4的位置,最后分别输出数组a和b的内容。#include #include /数组处理的头文件#include using namespace std;void main()i
6、nt a=1,2,3,4,5,6,7,8,b8;cout数组a中4的位置是: find(a,a+8,4) endl;/查找4的位置copy(a,a+8,b);/将数组a复制给数组breverse_copy(b,b+8,a);/把数组b,逆向复制给a,完成a的逆转cout数组a反转后,4的位置是: find(a,a+8,4) endl;/在查找4的位置cout数字a的内容: endl;for(int i=0;i8;i+)cout ai ,;coutn数组b中的内容: endl;for(i=0;i8;i+)cout bi ,;第二章一、单项选择1.D; 2.D;二、画图题Studentstring
7、 sex;int age;张明sex(“男”);age(12);李红sex(“女”);age(12);三、编程题1.使用多种方法编写将两个字符串连接在一起的程序。#include #include using namespace std;void main()/使用string类定义字符串,完成字符串连接string str1(C+),str2(程序设计);string str3;str3 = str1+str2;/连接方式1cout str3 endl;/使用char数组定义字符串,完成连接char c1 = c+,c2 = program;char c320;int i=0,k=0;for
8、(i=0;i20;i+)/初始化c3c3i=0;i=0;while(c1i!=0)c3k=c1i;i+;k+;i=0;while(c2i!=0)c3k=c2i;i+;k+;cout c3 endl;2.已知一个string的对象str的内容为“We are here!”,使用多种方法输出“h”。#include #include #include #include using namespace std;void main()string str1(We are here!);cout str17 endl;/通过数组string str2=str1.substr(7,1);/通过得到子字符串
9、cout str2 endl;char *p=find(str1.begin(),str1.end(),h);/通过find函数if(p)cout*p endl;第三章一、填空题1.函数原型声明; 2.inline 3.对象、对象指针、引用 4.函数func返回引用 5.int *fun(char,int&); 二、单项选择题1.A; 2.C; 3.C; 三、改错题1.y = x * x - T; 错误,T是类型,不是变量,不能参加运算; 2.T max(T x, y) y没有类型 3.void change (string & s)中函数change 的参数定义成了常量,只能使用参数,而无权
10、修改他。 所以应去掉。四、编程题1.编写一个求方程ax2 + bx + c = 0的根 的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。 #include #include void equation_1 (int a, int b, int c)double x1, x2, temp;temp = b*b - 4 * a * c;x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);x2 = (-b - sqrt(temp) ) / (2 * a * 1.0);cout两个不相等的实根 endl;
11、coutx1 = x1, x2 = x2 endl;void equation_2 (int a, int b, int c)double x1, x2, temp;temp = b*b - 4 * a * c;x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);x2 = x1;cout两个相等的实根 endl;coutx1 = x1, x2 = x2 endl;void equation_3 (int a, int b, int c)double temp, real1, real2, image1, image2;temp = - (b*b - 4 * a *
12、c);real1 = -b / (2 * a *1.0);real2 = real1;image1 = sqrt(temp)/(2*a*1.0);image2 = - image1;cout两个虚根 endl;coutx1 = real1 + image1j endl;coutx2 = real2 + image2j endl;void main()int a, b, c;double temp;cout输入a,b,c的值abc;cout方程为: ax*x+ bx+ c = 0 0)equation_1 (a, b, c);if(temp = 0)equation_2 (a, b, c);if
13、(temp 0)equation_3 (a, b, c);2.定义函数up(ch),如字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变。要求在短小而完全的程序中显示这个程序是怎样被调用的。#include using namespace std;char up (char c)if(c = 97 & c = 123)return (c - 32) ;elsereturn c;void main()int i;char c15 = A,v,e,t,E,T,%,&,4,Y,e,i,9,;for(i = 0 ; i 15 ; i+)cout up(ci), ;cout end
14、l;3.编写主程序调用带实数r和整数n两个参数的函数并输出r的n次幂。#include #include double power(double r, int n)int i;double result = 1.0;for(i=0;i n;i+)result = result * r;return result;void main()double r;int n;coutr;coutn;cout r的 n次幂是: power(r,n) endl;4.编写有字符型参数C和整形参数N的函数,让他们显示出由字符C组成的三角形。其方式为第1行有1个字符C,第2行有2个字符C ,等等。#include
15、using namespace std;void print_triangle(char c, int n)int i, j;for(i=0; i n; i+)for(j=0; j=i; j+)cout c;cout endl;void main()print_triangle(a,10);5.编写一个求字符串长度的函数strlen(),再用strlen()函数编写一个函数revers(s)的倒序递归程序,使字符串s逆序。#include #include using namespace std;int strlen(char *str)int len = 0;while(strlen !=
16、0)len+;return len;void revers(char *b)char c; int j, len; len=strlen(b); j=len/2-1; while(j=0) c=*(b+j); /交换对称元素 *(b+j)=*(b+len-j-1); *(b+len-j-1)=c; j-; blen=0;void main()char str=1234567890;cout str-的长度: strlen(str) endl;cout str endl;/倒序前revers(str);/cout str endl;/倒序后6.用函数模板实现3个数值中按最小值到最大值排序的程序。
17、#include using namespace std;template void sort(T a, T b, T c)T array3,temp;int i,j;array0 = a;array1 = b;array2 = c;for(i=0;i3;i+)/冒泡法排序for(j=i;jarrayj+1)temp = arrayj;arrayj = arrayj+1;arrayj+1 = temp;cout array0 array1 array2 endl;void main()sort(5,1,9);7.利用函数模板设计一个求数组元素中和的函数,并检验之。#include using
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 课后 答案
限制150内