面向对象的程序设计语言——C++(第二版)-前五章习题参考答案(编程题也有啊).doc_第1页
面向对象的程序设计语言——C++(第二版)-前五章习题参考答案(编程题也有啊).doc_第2页
面向对象的程序设计语言——C++(第二版)-前五章习题参考答案(编程题也有啊).doc_第3页
面向对象的程序设计语言——C++(第二版)-前五章习题参考答案(编程题也有啊).doc_第4页
面向对象的程序设计语言——C++(第二版)-前五章习题参考答案(编程题也有啊).doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 C+语言概述1填空题(1)函数说明,函数体(2)声明区,主程序区,函数定义区(3)多态性(4)namespace,using(5)std(6)cin,(7)/(8)对数据的操作2判断题(1)对(2)错(3)错(4)错(5)错3改错题(1)没有函数体,应改为void main() ;(2)语句没有分号,应改为using namespace myspace;(3)cout和操作符共同完成输出的功能,应改为cout Input your name:;(4)应改为#include 4简答题(略)5编程题(略)第2章 基本数据类型、运算符与表达式1 选择题(1)B(2)D(3)B(4)D(5)B2简答题(1)(a)、(c)(e)、(f)、(g)、(h)、(i)(2)(a)、(g)、(i)、(j)(3)(a)5.5(b)0(c)20(d)0,0(e)1(f)1,2(g)3(h)40(i)2(j)3(k)s1=0&s1=a&b=c(4) 364143(5)x=14 编程题/(1)编写程序,提示用户输入三角形的三条边长,判断该三角形是否为直角三角形,若是输出结果以及三角形面积。#include void main() float a,b,c,side1,side2,area; /side1和side2为两条直角边长度 coutabc;/ 输入三角形三边长度if (a*a=b*b+c*c)|(c*c=a*a+b*b)|(b*b=a*a+c*c)/判断是否为直角三角形if (a*a=b*b+c*c)/判断三边中哪两条边为直角边,并存储到side1和side2中side1=b;side2=c;elseif (c*c=a*a+b*b)side1=a;side2=b;elseside1=a;side2=c;area=side1*side2/2;/计算直角三角形的面积coutIt is a right-angled triangle and the area is area.n;/输出判断结果及直角三角形面积elsecoutIt is not a right-angled triangle.n;/(2)编写程序,求解各种数据类型的存储长度并显示出来,在其中找出存储长度最大的和最小的两种数据类型并输出。#include void main() int length7; int max=0,min=0; coutdata typetmemory used(bytes); length0=sizeof(short int);/获取短整型长度 coutnshort inttlength0t; length1=sizeof(int);/获取整型长度 coutninteger tlength1; length2=sizeof(long);/获取长整型长度 coutnlong integertlength2; length3=sizeof(char);/获取字符型长度 coutnchar t length3; length4=sizeof(float);/获取单浮点型长度 coutnfloat tlength4; length5=sizeof(double);/获取双浮点型长度 coutndouble tlength5; length6=sizeof(bool);/获取布尔型长度 coutnbool tlength6endl; for(int i=0;ilengthmax)/求取长度最大的类型的存取位置max=i;if (lengthilengthmin)/求取长度最小的类型的存取位置min=i; coutThe longest length is from ; switch (max) case 0:coutshort int.endl;break;case 1:coutint.endl;break;case 2:coutlong.endl;break;case 3:coutchar.endl;break;case 4:coutfloat.endl;break;case 5:coutdouble.endl;break;case 6:coutbool.endl;break; coutThe shortest length is from ; switch (min) case 0:coutshort int.endl;break;case 1:coutint.endl;break;case 2:coutlong.endl;break;case 3:coutchar.endl;break;case 4:coutfloat.endl;break;case 5:coutdouble.endl;break;case 6:coutbool.endl;break; /(3)编写程序输入一个华氏温度,将其转换为摄氏温度并输出。#include void main() float C;/变量C为摄氏温度float F; /变量F为华氏温度 coutF;/输入华氏温度C=(F-32)*5/9;/华氏温度转换为摄氏度cout转换为摄氏温度为 Cendl;/(4)编写程序输入一个十进制表示的正整数,将其转化为二进制表示并输出结果。#include void main() int a;/变量C为摄氏温度int b20; /数组存储转换后的二进制数int i;i=0;couta;/输入十进制数while (a0)/转换过程bi=a%2;i+;a=(int)(a/2);i-;cout=0)/输出二进制结果coutbi;i-;coutendl;第3章 C+的控制语句1选择题(1)B(2)A(3)A(4)C(5)A2判断题(1)错(2)对(3)对(4)错(5)错3读程序写结果(1) 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5(2) 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 (3)j的值为0;i的值为2;4 编程题/编写程序,计算1到100中所有3的倍数的数的和。#include void main() int sum=0;/sum变量为3的倍数的和for(int i=1;i=100;i+)if (i%3=0)/判断i是否是3的倍数sum+=i;cout1到100中所有3的倍数的数的和为:sumendl;/编写程序,用户输入一些整数,该程序分别计算出所有奇数和所有偶数之和,并输出它们。#include void main() int sum_odd=0;/变量为所有奇数的和int sum_even=0;/变量为所有偶数的和int b;/变量为输入的数字int N;/变量为数字个数coutN;cout请输入数字(数字以空格隔开)endl;for (int i=0;ib;if (b%2=0)/判断数字是否为偶数sum_even+=b;elsesum_odd+=b;cout所有奇数的和为sum_oddendl;cout所有偶数的和为sum_evenendl;/求解输入两个正整数的最大公约数和最小公倍数。#include void main() int a,b;/输入的两个正整数int min,max;/最小值和最大值cout请输入两个正整数(数字以空格隔开)ab;if (a=b)/找出两个数中的最大值和最小值min=b;max=a;elsemin=a;max=b;/最大公约数一定不大于两个数中的最小值while (min0)if (a%min=0)&(b%min=0) break;elsemin-;couta和b的最大公约数为minendl;/最小公倍数一定不小于两个数中的最大值while (max%a!=0)|(max%b!=0)max+;couta和b的最小公倍数为maxendl;/求解输入两个正整数的最大公约数和最小公倍数。#include void main() int a,b;/输入的两个正整数int min,max;/最小值和最大值cout请输入两个正整数(数字以空格隔开)ab;if (a=b)/找出两个数中的最大值和最小值min=b;max=a;elsemin=a;max=b;/最大公约数一定不大于两个数中的最小值while (min0)if (a%min=0)&(b%min=0) break;elsemin-;couta和b的最大公约数为minendl;/最小公倍数一定不小于两个数中的最大值while (max%a!=0)|(max%b!=0)max+;couta和b的最小公倍数为maxendl;/输入4个字母,并反向显示这些字母。#include void main() char a4;/输入4个字符cout请输入4个字符:endl;for (int i=0;iai;cout反向输出4个字符为:=0;i-)coutai;coutendl;/输出所有的水仙花数。/水仙花数是指一个3位数,其各位数字的立方和等于该数本身。#include void main() int N,M;int a3;/存储三位数的个十百位cout水仙花数为:endl;for (N=100;N=999;N+)M=N;for (int j=0;j3;j+)/提取数字的个十百位aj=M%10;M/=10;if (a0*a0*a0+a1*a1*a1+a2*a2*a2=N)coutN ;/求 1!+2!+50!。#include void main() int sum1=1;/记录i!的结果int sum2=0;/记录i!累加的结果for (int i=1;i=50;i+)for (int j=1;j=i;j+)/计算i!sum1*=j;sum2+=sum1;cout1!+2!+50!=sum2endl; /编写程序求一元二次方程ax*x+bx+c=0的解。#include #include void main() float a,b,c;/方程的系数float s1,s2;/解float temp;coutInput a,b,c:abc;if (a=0)cout不是一元二次方程!endl;elsetemp=b*b-4*a*c;if (temp0)/无根的情况cout无实根!endl;else if (temp=0)/只有一个实根的情况s1=-b/(2*a);cout方程有一个实根,为s1endl;else/两个实根的情况s1=(-b+sqrt(temp)/(2*a);s2=(-b-sqrt(temp)/(2*a);cout方程有两个实根,为s1和s2endl;/编写程序,用循环语句打印如下图案。#include #include #include void main() for (int i=1;i=7;i+)coutsetw(abs(4-i)+1);/显示第一个if (i=1)|(i=7)/第一行和最后一行仅显示一个coutendl;continue;for (int m=abs(4-i)+2;m=6-abs(4-i);m+)/显示中间的*cout*;coutendl;/中间几行显示第二个/编写程序,输入年月日信息,并输出这一天为这一年的第几天,注意闰年问题。#include void main() int year,month,day;int num=0;int length;coutyear;coutmonth;coutday;for (int i=1;imonth;i+)if (i=1)|(i=3)|(i=5)|(i=7)|(i=8)|(i=10)|(i=12)/大月31天length=31;else if (i=4)|(i=6)|(i=9)|(i=11)/小月30天length=30;else if (year%100=0)&(year%4=0)|(year%100!=0)&(year%4=0)/闰年判断条件length=29;/闰年的二月29天elselength=28;/非闰年的二月28天num+=length;num+=day;coutyear年month月day日为这一年的第:num天.endl;/编写程序,由用户输入x值,计算函数值并输出y。函数如下所示:#include void main() int x,y;coutx;if (x0)/x10)/x10的情况y=4*x*x*x-x*x;else/其余的情况y=x*x;cout函数结果y为:yendl;/鸡兔同笼问题。若鸡兔共有100只脚,利用循环计算鸡兔各几只。#include void main() int rabbit,chicken;for (rabbit=100/4;rabbit=0;rabbit-)/兔子最多有25只,最少没有chicken=(100-rabbit*4)/2;cout兔子有rabbit只,鸡有chicken只endl;第4章 函数1 填空题(1)void(2)静态全局变量,static(3)函数重载(4)inline(5)递归函数(6)宏定义命令,文件包含命令,条件编译命令2判断题(1)错(2)错(3)错(4)错(5)错(6)对(7)错(8)错(9)对(10)对3读程序写结果(1)x=7,y=4x=9,y=5(2)34.56b101(3)162228(4)12 15 18 21 24(5)2,1,4,1,3,2,1,4简答题(略)5编程题/编写一个函数,计算直角坐标系中点a(x0,y0)到点b(x1,y1)的距离。#include #include float length(float x0,float y0,float x1,float y1)/求两点距离的子函数return sqrt(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1);void main() float x0,x1,y0,y1;coutx0y0;coutx1y1;coutThe length from a to b is length(x0,y0,x1,y1)endl;/求a!+b!+c!的值,其中求n!要用一个函数实现,通过主函数输入a、b和c的值,并在主函数中输出计算的结果。#include int factorial(int n)/求两点距离的子函数int sum=1;for (int i=1;i=n;i+)sum*=i;return sum;void main() int a,b,c;coutabc;couta!+b!+c!=factorial(a)+factorial(b)+factorial(c)endl;/编写一个函数。该函数读入一个整数,并判断这个整数是否为一个回文数字。例如4,44,434,4334,43534都是回文数字。#include bool palindrome(int n)/判断n是否为回文的子函数int a20;int m=n;int i=0;int temp,num;while (m0)/将数字的各位反向放置在数组a中ai=m%10;m=m/10;i+;temp=i/2;/需要比较的次数num=-i;/数字的最高位存储在anum中for (int j=0;jtemp;j+)if (aj!=anum-j) return false;/如果出现不相等的情况立即退出return true;/若比较的各个位置都相等,则为回文void main() int number;coutnumber;if (palindrome(number)coutnumber is a palindrome.endl;elsecoutnumber is not a palindrome.endl;/编写一个程序,为选修3、4和5门课程的学生计算平均分,其中求平均分要用重载函数实现#include float average(float a,float b,float c)/求三门课程平均分子函数return (a+b+c)/3;float average(float a,float b,float c,float d)/求四门课程平均分子函数return (a+b+c+d)/4;float average(float a,float b,float c,float d,float e)/求五门课程平均分子函数return (a+b+c+d+e)/5;void main() int number;float s1,s2,s3,s4,s5;coutnumber;if (number=3)couts1s2s3;coutThe average is average(s1,s2,s3)endl;else if (number=4)couts1s2s3s4;coutThe average is average(s1,s2,s3,s4)endl;elsecouts1s2s3s4s5;coutThe average is average(s1,s2,s3,s4,s5)endl;/用递归方法将一个整数n转换成字符串。#include #include using namespace std;string convert(int n);string numstring();void main() int number;coutnumber;coutconverted string is ;coutconvert(number)endl;string convert(int n)/递归函数if (n/10=0)&(n=0) return ;elsenumstring=convert(n/10).append(string(1,(n%10+48);/将各位数转换为字符后创建字符串,加到最后return numstring;/编写一个函数。该函数读入一个整数,然后将这个整数上每个位的数字按照相反的顺序输出。/例如输入的整数为12345,输出结果为54321。#include void reverse(int n)/反向显示整数nint a20;/存储n的各位,最多20位int m=n;int i=0;while (m0)/提取n的各位ai=m%10;m=m/10;i+;coutreversed number is ;for (int j=0;j=i-1;j+)/反向输出各位coutaj;coutendl;void main() int number;coutnumber;reverse(number);/输入三个数字,数字可以为整形或浮点型,分别编写函数来求解三个数字的最大值、最小值和平均值,要求在主函数中完成数字的输入和计算结果的输出。#include #include float fmax,fmin,faverage;int max,min,average;void calculate(float fa,float fb,float fc)/浮点型处理函数fmax=fa=fb?fa:fb;fmax=fmax=fc?fmax:fc;fmin=fa=fb?fa:fb;fmin=fmin=b?a:b;max=max=c?max:c;min=a=b?a:b;min=min=c?min:c;average=(a+b+c)/3;void main() int s1,s2,s3;float f1,f2,f3;int type;couttype;while (type!=0)&(type!=1)/输入类型错误时再次输入couttype;coutf1f2f3;calculate(f1,f2,f3);coutsetw(8)maxsetw(8)minsetw(12)averageendl;coutsetw(8)fmaxsetw(8)fminsetw(12)faverages1s2s3;calculate(s1,s2,s3);coutsetw(5)maxsetw(8)minsetw(8)averageendl;coutsetw(5)maxsetw(8)minsetw(8)averageendl;第5章 构造数据类型1选择题(1)C(2)D(3)A(4)B(5)C2判断题(1)错(2)对(3)对(4)错(5)错3读程序写结果(1)153(2)422 5 6 8 10(3)65535,21(4)419(5)6904(6)432104 编程题/编写函数,完成指定二维数组(3*3)的转置,即行列对换。#include #include void main()int i,j,temp,row=0,colum=0;int a33;cout输入一个33的整型矩阵:endl;for (i=0;i=2;i+)/从第0行第2行for (j=0;jaij;/输入矩阵元素for (i=0;i=2;i+)for (j=0;j=i;j+)/将aij与aji的值互换temp=aij;aij=aji;aji=temp;for (i=0;i=2;i+)for (j=0;j=2;j+)coutsetw(8)aij;/输入矩阵元素coutendl;/编写一个程序,要求当输入一个数字月份时,程序输出该月的英文名称。例如输入5时,程序输出May,要求用指针数组实现。#include #include void main()/定义指针数组char *month12=January,February,March,April,May,June,July,August,September,October,November,December;int n;coutn;while (n12)|(n1)coutn;coutThe month is *(month+n-1)endl;/编写一个程序,要求分别输入5个学生的3科成绩,并输出平均成绩最高的学生的姓名及各科成绩。要求用结构体数组实现。#include #include struct studentchar name20;/姓名 float course1;/第一科成绩float course2;/第二科成绩float course3;/第三科成绩float average;/平均成绩;struct student stu5;void main()float temp=-100.0;int j,k=0;char c;for (int i=0;i5;i+)coutInput NO.i+1;coutInput NO.i+1stui.course1stui.course2stui.course3;/输入三科成绩stui.average=(stui.course1+stui.course2+stui.course3)/3;/求平均成绩if (tempstui.average)temp=stui.average;/temp存放最高平均分k=i;/k存放该同学的序号coutThe student is , three scores are stuk.course1, stuk.course2 and stuk.course3endl;/编写一个程序,实现方程式的相加。#include #include struct coefficientbool pn;int num;a3,b3,c3,d3;void main()char equation250,ch,z8;int m,j; coutInput NO. 1 Equation:equation0;coutInput NO. 2 Equation:equation1;for (int i=0; i=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论