C++与数据结构基础简明教程课后习题答案_第1页
C++与数据结构基础简明教程课后习题答案_第2页
C++与数据结构基础简明教程课后习题答案_第3页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、C+与数据结构基础简明教程课后习题答案1-7-1/输出一个数的10倍#in elude using namespace std;int main()cout a;coutresult=a*10e ndl;return 0;1-7-2/输出两个数中的较小的#in clude using namespace std;int main()double x,y,min;coutplease in put two nu mbers xy;min=(xy?y:x);coutthe smaller is minendl; return 0; 1-7-3/ 输入半径计算周长和面积#include using

2、namespace std;int main()coutrad;double c,s;c=2*3.14*rad;s=3.14*rad*rad;cout 周长是 cendl;cout 面积是 sendl; return 0;1-7-4/ 将 10000 秒化成小时分钟秒#include using namespace std;int main()int hour,min,second; hour=10000/3600;min=(10000%3600)/60; second=10000-hour*3600-60*min;couthourhoursminminutessecondsecondsend

3、l;return 0;1-7-5 / 将一个三位数倒叙输出#include using namespace std;int main()int num,num_bai,num_shi,num_ge;coutnum;num_bai=num/100;num_shi=(num-num_bai*100)/10;num_ge=num-num_bai*100-num_shi*10;coutnum_geendl;coutnum_shiendl;coutnum_baiendl;return 0;2-3/ 简单的输入输出#include using namespace std;int main()double

4、y,n;coutn;if (n0) y=n+1;if (n0) y=n*n;if (n=0) y=0;coutthe result is: y;return 0;2-4/ 输出学生学号和对应的成绩等级#include using namespace std;int main()double fenshu;int xuehao;char dengji;int i;for (i=1;i=10;i+)student scoren;dengji=A;dengji=B;dengji=C;dengji=D;onerror:coutfenshu;if (fenshu=90&fenshu=80&fenshu=

5、600&fenshu=0&fenshu60)if (fenshu0)cout100)couterror;goto onerror;coutthe id isiendl;coutthe score isdengjiendl;return 0;2-5/ 判断输入字符类别#include using namespace std;int main()char zifu;int ascii;coutzifu;ascii=zifu;if (ascii=48&ascii=57)cout=97&ascii=122)cout=65&ascii=90)cout 大写字母 n;goto end;cout 其他字符

6、;coutendl;end:return 0;2-6/ 求圆周率的近似值#include #include using namespace std;int main()int xishu=-1;double danshu=1.0;int i=1;double sifenzhipi=0;doxishu=xishu*(-1);danshu=1.0/(2*i-1);sifenzhipi=sifenzhipi+xishu*danshu;i+;while(danshu=0.000001);coutsetprecision(15)sifenzhipi*4endl;return 0;2-7/ 输出斐波那契数

7、列前 40 个数,以 8*5 的格式输出#include #include using namespace std;int main()int b=2;int feibo1=0;int feibo2=1;coutsetw(9)0setw(9)1;for(int i=1;i=38;i+)int a=feibo2;feibo2=feibo1+feibo2;feibo1=a;coutsetw(9)feibo2;b=b+1;if(b%8=0) coutendl;return 0;2-8/ 统计输入的元音字母个数 #include using namespace std;int main()char z

8、imu; int a,e,i,o,u; a=e=u=i=o=0; begin:cinzimu; switch(zimu) case a :a+;break;casee:e+;break;casei:i+;break;caseo:o+;break;caseu:u+;break;case#:goto end;goto begin;end:coutaendleendliendloendluendla+e+i+o+u; return 0;2-10/ 计算 5!+6!+7!using namespace std;int main()int i,j;int sum=0;for (i=5;i=7;i+)in

9、t jiecheng=1;for (j=1;j=i;j+) jiecheng=jiecheng*j;sum=sum+jiecheng;coutsum;return 0;2-11/ 从 2 开始 100 个素数#include using namespace std;int main()int num=1;int sushu=0;start:;num+;for (int i=2;i=num;i+)if(num%i=0) break;if (i=num)coutnumendl; sushu+=1;if(sushu!=100) goto start; return 0;2-12/ 百钱买百鸡问题#i

10、nclude using namespace std;int main()int x,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+)for(z=0;z=100;z+)coutif (x+y+z=100&5*x+3*y+z/3=100&z%3=0) xtytza;cout 输入 aendl 该数的三次方是 a 个连续奇数 ; b=1;e=a*a*a;while (c!=e)d=b;c=0;for (int i=1;i=a;i+)c=c+d;d=d+2;b=b+2;/coutb-2;int f=b-4;for (int j=1;j=a;j+)f=f+2;coutfco

11、ut 的和 n;return 0;2-14/ 输出四方 * 形状#include using namespace std;int main()int i,j;for (i=1;i=9;i+)j=1;for(j=1;j=9;j+)cout=6&i+j=14&j-i=4&i-j=4)else cout ;coutendl;return 0;3-1-1/ 向数组 a 中输入 10 个整数,求其中的最大值,最小值和#include using namespace std;int main()int a10;for(int i=0;iai;int max=a0,min=a0,sum=a0;for(int

12、 j=0;jaj?max:aj); min=(minaj?min:aj);double ave=sum/10.00;coutmaxendlminendlaveendl; return 0;3-1-2#include using namespace std;int main()int score10;int sum=0,a=0,b=0;for(int i=0;iscorei;sum=sum+scorei;double ave=sum/10.0;for(int j=0;jave) a+;if(scorej60) b+;cout 成绩大于平均值的人数是 aendl 成绩小于 60 的人数 bend

13、l;return 0;3-3-1#include using namespace std;int main()int a10,sum=0,min,max;double ave;int *ptoa=a;for (int i=0;i*(a+i);sum+=*(a+i);min=*(a);max=*(a);for (int j=1;j=9;j+)min=(min*(a+j)?max:*(a+j); coutmaxendlminendl; ave=sum/10.0; coutaveendl;return 0;3-3-2#include using namespace std;int main()/ 定

14、义数组 a, sum 是各学生成绩之和,int a10,sum=0,j=0,c=0;j 是小于 60 的个数, c 是大于平均值的个数for (int k=0;k=9;k+)/ 计算大于平均值的double ave=0;/ 定义平均值/ 使用指针/ 输入并算和 ,统计小于 60 的/ 计算平均值/ 可以输出平均值int *ptoa=a;for (int i=0;i*(ptoa+i);sum+=*(ptoa+i);if (*(ptoa+i)60)j+;ave=sum/10.0;/coutaveave)c+;coutcendlj;return 0;3-3-3#include using names

15、pace std;int main()char string100;cinstring;int i=0,an=0,in=0;cout 您输入的字符串 ;while (stringi!=0)if(stringi=a) an+;if(stringi=i) in+;coutstringi;i+;coutendlanendlinendl;return 0;3-3-3a #include using namespace std;int main()char a100;/ 定义存放字符串的数组/ 使用指针int i=0,an=0,in=0;/an , in 分别为 ai 的个数char *ptoa=a;c

16、ina;while(*(ptoa+i)!=0)/a 【 i】/ 判断cout*(ptoa+i);switch (*(ptoa+i)case a : an+;break;case i : in+;break;i+;coutendlanendlin;return 0;3-3-4#include using namespace std;int main() int a33;for (int i=0;i=2;i+)for(int j=0;j*(*(a+i)+j);cout*(*(a+0)+0)+*(*(a+1)+1)+*(*(a+2)+2)endl;cout*(*(a+0)+2)+*(*(a+1)+1

17、)+*(*(a+2)+0)endl; return 0;3-3-5v1#include using namespace std;int main()int a11=2,4,5,8,12,14,16,18,20,30,0,b,i,m,j;cinb;a10=b;if (b30)goto end2;for(i=0;ib)m=i+1;goto end;end:;for (j=10;j=m+1;j-)aj=aj-1;am=b;end2:;for (int k=0;k=10;k+)coutakendl;return 0;3-3-5v2#include using namespace std;int mai

18、n()int i,j,temp;int a11=2,4,5,8,12,14,16,18,20,30;cina10;for (i=0;i=10;i+)for(j=0;jaj+1)temp=aj+1;aj+1=aj;aj=temp;for (int k=0;k=10;k+) coutakcoutn;return 0;3-3-5v3#include using namespace std;int main()int a11=2,4,5,8,12,14,16,18,20,30,num,i,j;coutnum;if (numa9)a10=num;elsefor (i=0;inum)for(j=9;j=i

19、;j-)aj+1=aj;ai=num;break;for (i=0;i=10;i+)coutai ;return 0;3-3-5final#includevoid main()int a11=2,4,5,8,12,14,16,18,20,30,b,i=0,j=10;cinb;while(aib&ii)aj=aj-1;j-;ai=b;cout 输入插入后的结果: ;for(i=0;i11;i+)coutai ;coutendl;3-3-6#include using namespace std;int main()int a53,s5=0,0,0,0,0,temp;for (int i=0;i=

20、4;i+)cout 请输入第 i+1 行的数据 endl;for (int j=0;j*(*(a+i)+j);*(s+i)+=*(*(a+i)+j);/*/ 注释掉的部分可以输出每行数据之和for (int k=0;k=4;k+)cout*(s+k)endl;*/for (int m=0;m=4;m+)for (int n=0;n*(s+n+1) temp=*(s+n+1);*(s+n+1)=*(s+n);*(s+n)=temp;for (int l=0;l=4;l+)coutendl*(s+l);coutendl; system(pause); return 0;4-3#include us

21、ing namespace std;intfun1(intx,inty);intfun2(intx,inty);intfun3(intx,inty);intfun4(intx,inty);int main()int a,b;coutab;cout 两个数的和的平方是 fun1(a,b)endl;cout 两个数的平方和是 fun2(a,b)endl;cout 两个数的差的平方是 fun3(a,b)endl;cout 两个数平方的差是 fun4(a,b)endl; return 0;int fun1(int x,int y)int z=(x+y)*(x+y); return z;int fun2

22、(int x,int y)int z=x*x+y*y;return z;int fun3(int x,int y)int z=(x-y)*(x-y); return z;int fun4(int x,int y)int z=x*x-y*y; return z;4-4#include using namespace std; double jc(int x);int sm(int x);int main()int m,n,s2;double s1;cinmn;s1=jc(m)/(jc(n)*jc(m-n); s2=sm(m)-sm(n);couts1endls2;return 0;double

23、jc(int x)double s=1;s*=i;s+=i;for (int i=1;i=x;i+) return s;int sm(int x)int s=0;for (int i=1;i=x;i+) return s;4-6#include #include using namespace std; double jxf(int n); double txf(int n); double f(double x); /const pi=3.1415927;int main()int n; double y1,y2;cinn;y1=jxf(n);y2=txf(n);couty1endly2;r

24、eturn 0;doubledoublejxf(int n)double sum=0,s;for (int i=0;i=n-1;i+)s=(i*3.14)/n;sum+=(3.14/n)*f(s);return sum;txf(int n)double sum=0,s1,s2;for (int i=0;i=n-1;i+)s1=i*3.14/n;s2=(i+1)*3.14/n;sum+=3.14/n*(f(s1)+f(s2); sum/=2.0; return sum;double f(double x)double y; y=sin(x)+cos(x); return y;4-6v1#incl

25、ude #include using namespace std; double jxf(int n); double txf(int n); double f(double x); const pi=3.1415927;int main()int n;double y1,y2; cinn; y1=jxf(n); y2=txf(n);if (abs(y1-2)abs(y2-2) cout 矩形法 doubledoubledoubleelse cout 梯形法 return 0;jxf(int n)double sum=0;for (int i=0;i=n-1;i+) sum+=pi/n*f(i

26、*pi/n);return sum;txf(int n)double sum=0;for (int i=0;i=n-1;i+) sum+=pi/n*(f(i*pi/n)+f(i+1)*pi/n);sum/=2;return sum;f(double x)double y; y=sin(x)+cos(x);return y;4-6v2error#include #include using namespace std;double jxf(int n);double txf(int n);double f(double x);const pi=3.1415927;int main()int n;

27、double y1,y2;cinn;y1=jxf(n);y2=txf(n);if (abs(y1-2)abs(y2-2) cout 矩形法 else cout 梯形法 ;return 0;double jxf(int n)double sum=0;for (int i=0;i=n-1;i+) sum+=pi/n*f(i*pi/n);return sum;double txf(int n)double sum=0;for (int i=0;i=n-1;i+) sum+=pi/n*(f(i*pi/n)+f(i+1)*pi/n); sum/=2;return sum;double f(double

28、x)double y; y=sin(x)+cos(x); return y;4-7#include using namespace std; int my(int x,int y); int mb(int x,int y);int main()int a,b,max,min;cinab;max=my(a,b);min=mb(a,b);coutmaxendlminy?y:x);i=1;i-)if (x%i=0&y%i=0)return i;int mb(int x,int y)return i;for (int i=(xy?x:y);i=1;i+) if (i%x=0&i%y=0) 4-11#i

29、nclude using namespace std;void delchar(char *s1,char s2);int main()char s1100;char s2;cins1s2;delchar(s1,s2);return 0;void delchar(char *s1,char s2)for (int i=1;*(s1+i)!=0;i+)if (*(s1+i)=s2)for (int j=0;*(s1+i+j)!=0;j+)*(s1+i+j)=*(s1+i+j+1);couts1;4-12#include #include using namespace std;int check

30、(int a,int b,int c);double s(double a,double b,double c);int main()double a,b,c;cinabc;if (check(a,b,c) couts(a,b,c);else coutc&abs(a-b)c) return 1;else return 0;double s(double a,double b,double c) double p=(a+b+c)/2;double area=sqrt(p*(p-a)*(p-b)*(p-c); return area;4-13#include #include using name

31、space std; fun (int n,int k);pow10 (int x);int main()int n,k;cinnk;coutfun(n,k)n|k1) return 0;elseint s;s=n/pow10(k-1);s=s%10;return s;int pow10 (int x)int s=1;for (int i=1;i=x;i+) s*=10; return s;4-14#includeusing namespace std;double ave(int p4,int i);int main()int a54;for (int i=0;i=4;i+)for (int

32、 j=0;jaij;for (i=0;i=4;i+)coutave(a,i)endl;system(pause);return 0;double ave(int p4,int i)double sum=0;for(int j=0;j=3;j+) sum+=pij;sum/=4;return sum;4-15#include using namespace std;int find(char str,char a);int main()char str100,a; cinstra; coutfind(str,a)+1; system(pause); return 0;int find(char

33、str,char a)for (int i=0;stri!=0;i+)if (stri=a)return i;break;if (stri=0) return -1;4-16/4_16 #includeusing namespace std;int change (int n,int R,int *a);int main()coutPlease input n and R(2=R=16)nR;int i=change(n,R,a);for (int j=i-1;j=0;j-)switch (aj)case 11:coutA;break;case 12:coutB;break;case 13:c

34、outC;break;case 14:coutD;break;case 15:coutE;break;default: coutaj;system(pause);return 0;int change (int n,int R,int *a)int i=0;while (n!=0)*(a+i)=n%R; n/=R;i+;return i;4-17 #include using namespace std;const int N=5;int init(int aN);void fun1(int aN);void fun2(int aN);void fun3(int aN,int sum);voi

35、d fun4(int aN);int main()int sum=0;int a2N; sum=init(a); cout(1)endl; fun1(a);cout(2)endl;fun2(a);cout(3)endl; fun3(a,sum);cout(4)endl;fun4(a); return 0;int init(int aN)int sum=0;for (int i=0;ia1i; sum+=a1i;return sum;void fun1(int aN)for (int i=0;i85)couta0ia1iendl;void fun2(int aN)for (int i=0;i=N

36、-1;i+)if (a1i60)couta0i a1iendl;void fun3(int aN,int sum)int aveplus=0;double ave=sum/N;for (int i=0;i=ave)aveplus+;coutaveplusendl;void fun4(int aN)for (int i=0;i=N-1;i+)for (int j=0;ja1j+1)int temp1=a1j+1; a1j+1=a1j;a1j=temp1;int temp2=a0j+1; a0j+1=a0j;a0j=temp2;for (i=0;i=N-1;i+)couta0i a1iendl;5

37、-5/ 计算当前日期是一年之中的第几天#include using namespace std;class Dateprivate: /y 年 m 月 d 天 nod 一年中的第几天 ly 是否是闰年 int y,m,d,nod,ly;public:Date (int ioy=2009,int iom=5,int iod=1)y=ioy;m=iom;d=iod;int checkdate();int Issleapyear();void Print();int NumberOfDays();/ 是否是闰年int Date:Issleapyear()return ly=(y%400=0)|(y%

38、4=0&y%100!=0);/ 计算一年之中的第几天int Date:NumberOfDays ()int a213=0,31,29,31,30,31,30,31,31,30,31,30,31,0,31,28,31,30,31,30,31, 31,30,31,30,31;nod=0;for (int i=0;i0&m0&d=31);/ 输出void Date:Print ()()couty 年 m 月 d 日 是该年的第 NumberOfDays 天e ndl;int main()/ 主函数Date d1;Date d2(1991,5,2);int y,m,d;coutymd;Date d3(y,m,d);d1.Print();d2.Print(); if(d3.checkdate()d3.Print();elsecoutError;system(pause); system(cls);system(pause);return 0;5-6/ 判断 15, 31 是否偶数,素数#include using namespace std;class Interger/ 定义整数类private:int

温馨提示

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

评论

0/150

提交评论