上机作业答案_第1页
上机作业答案_第2页
上机作业答案_第3页
上机作业答案_第4页
上机作业答案_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、 第一章作业答案1. 编写程序,将华氏温度转化为摄氏温度:公式:C=(5/9)*(F-32)程序代码:#include<iostream>using namespace std;void main()float F,C; cout<<"Please input F:" cin>>F; C=5*(F-32)/9.0; cout<<"C="<<C<<endl;  运行结果:2.编写程序,输入圆柱体的半径r和高h,计算圆柱体的体积。程序代码:#include<io

2、stream>using namespace std;#define PI 3.14159void main()float r,h,v; cout<<"Please input r h:" cin>>r>>h; v=PI*r*r*h; cout<<"v="<<v<<endl;运行结果:3.输入三角形的三条边a,b,c,利用海伦公式计算三角形的面积area.若 则area= 程序代码:#include<iostream>#include<math.h>us

3、ing namespace std;void main()float a,b,c,p,area; cout<<"Please input a b c:" cin>>a>>b>>c; if(a+b>c)&&(b+c>a)&&(a+c>b) p=(a+b+c)/2.0; area=sqrt(p*(p-a)*(p-b)*(p-c); cout<<"area="<<area<<endl; else cout<<&quo

4、t;input error!"<<endl;运行结果:4.输入a,b,c的值,求一元二次方程: 的解。程序代码:#include<iostream>#include<math.h>using namespace std;void main()float a,b,c,p,x1,x2; cout<<"Please input a b c:" cin>>a>>b>>c; p=b*b-4*a*c; if(p>=0) x1=(-b+sqrt(p)/(2*a); x2=(-b-sqrt(

5、p)/(2*a); cout<<"x1="<<x1<<endl; cout<<"x2="<<x2<<endl; else cout<<"NO real root!"运行结果第二章作业答案1. 输入一个整数,计算该数的阶乘。程序代码:#include<iostream>using namespace std;void main()int i,n,p=1; cin>>n; for(i=1;i<=n;i+) p=p*i; cou

6、t<<n<<"!="<<p<<endl;运行结果:2. 连续输入若干个整数,输入0结束。统计其正整数的个数,并计算其中正整数的总和、平均值并输出。程序代码:#include<iostream>using namespace std;void main()int a,n=0; float avg,sum=0; do cin>>a; if(a>0)n+;sum+=a; while(a!=0); avg=sum/n; cout<<"n="<<n<<

7、endl; cout<<"avg="<<avg<<endl; cout<<"sum="<<sum<<endl;3. 输出所有的水仙花数。所谓“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。如153=13+53+33 程序代码:#include<iostream>using namespace std;void main()int a,b,c,n; for(n=100;n<1000;n+) a=n%10; b=n%100/10; c=n/100;

8、if(n=a*a*a+b*b*b+c*c*c) cout<<n<<endl; 运行结果:第3章 作业答案1.  编写程序输出两个数的最大公约数和最小公倍数。2.  计算100-300之内所有素数的和。3.  计算s=1-1/3+1/5-1/7+1/994. N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),求N的值。第一题:程序代码:/用辗转相除法求最大公约数;#include<iostream>using namespace std;void main()int m,n,r,temp; cin>&g

9、t;m>>n; temp=m*n; while(r=m%n) m=n; n=r; cout<<"最大公约数="<<n<<endl; cout<<"最小公倍数="<<temp/n<<endl;运行结果:第二题:程序代码:#include<iostream>using namespace std;void main()int n,i,s=0; for(n=100;n<300;n+) for(i=2;i<n;i+) if(n%i=0)break; if(

10、i=n)s+=n; cout<<"s="<<s<<endl;运行结果:第三题:程序代码:#include<iostream>using namespace std;void main()int n=1; float s=0,f=1,p; for(n=1;n<100;n+=2) p=f/n; s=s+p; f=-f; cout<<"s="<<s<<endl;运行结果:  第四题:程序代码:#include<iostream>using

11、namespace std;void main()int n,a,b,c,d; for(n=1000;n<10000;n+) a=n/1000; /千位 b=n%1000/100;/百位 c=n%100/10; /十位 d=n%10; /个位 if(9*n=d*1000+c*100+b*10+a) cout<<n<<endl; 运行结果:第四次作业答案1.     编写两个函数,分别计算两个整数的最大公约数和最小公倍数,并在主函数中调用该函数,并输出结果。2.     编写一个判断素数

12、的函数,函数原型为: int isprime(int n),在主函数中调用该函数,计算1001000之间所有素数的和。3.     编写一个函数,f(n)= ,并在主函数中输出f(10)的值。(说明自然对数 ln的函数原型为 double log(float x) .4.     编写一个计算阶乘的函数,函数原型为 int fac(int n),在主函数中调用该函数,计算:S=M!+N! .第一题:程序代码:#include<iostream>using namespace std;/求最大公约数int

13、 gcd(int m,int n)int r; while(r=m%n) m=n;n=r; return n; /求最小公倍数int lcd(int m,int n)return m*n/gcd(m,n);void main()int a,b; cin>>a>>b; cout<<"最大公约数为:"<<gcd(a,b)<<endl; cout<<"最小公倍数为:"<<lcd(a,b)<<endl;运行结果:第二题:程序代码:#include<io

14、stream>using namespace std;/判断素数的函数,若n为素数,函数返回1,否则返回0;int isprime(int n)int i; for(i=2;i<n;i+) if(n%i=0)return 0; return 1;void main()int i,s=0; for(i=100;i<1000;i+) if(isprime(i)s=s+i; cout<<"s="<<s<<endl;运行结果:第三题:程序代码:#include<iostream>#include<math.h&

15、gt;using namespace std;double f(int n)int i; double s=0; for(i=2;i<=n;i+) s=s+log(i); return sqrt(s);void main()cout<<f(10)<<endl;运行结果:第四题:程序代码:#include<iostream>using namespace std;/用递归编写计算阶乘的函数int fac(int n)if(n=0|n=1)return 1; else return n*fac(n-1);void main()int M,N,s; cin&

16、gt;>M>>N; s=fac(M)+fac(N); cout<<M<<"!+"<<N<<"!="<<s<<endl;运行结果:第五章第六次上机内容1、  定义一个3行4列的数组,计算所有数据的平均值,并输出最大值和最小值和它的行号和列号。2、  编写程序,实现一个一维数组的反序存放。3、  用选择排序法实现10整数由小到大排序。4、  用冒泡法实现10整数由大到小排序。 第一题:程序代码:#include<i

17、ostream.h>void main()int a34=12,6,25,10,14,9,20,16,30,22,5,21; int i,j,m,n,k,l,max,min; max=min=a00; m=n=0; for(i=0;i<3;i+) for(j=0;j<4;j+) if(aij>max)max=aij;m=i;n=j; else if(aij<min)min=aij;k=i;l=j; cout<<"max="<<max<<endl; cout<<"行号:"<

18、<m<<"列号:"<<n<<endl; cout<<"min="<<min<<endl; cout<<"行号:"<<k<<"列号:"<<l<<endl;运行结果: 第二题:程序代码:#include<iostream.h>#define N 6void main()int aN=12,10,20,21,30,25; int i,t; for(i=0;i<

19、;N/2;i+) t=ai;ai=aN-i-1;aN-i-1=t; for(i=0;i<N;i+) cout<<ai<<" " cout<<endl;  运行结果: 第三题:程序代码:#include<iostream.h>#define N 10/选择排序void main()int aN=30,21,15,38,25,35,18,28,45,20; int i,j,t,k; for(i=0;i<N-1;i+) k=i; for(j=i+1;j<N;j+) if(aj<a

20、k)k=j; if(k!=i)t=ai;ai=ak;ak=t; for(i=0;i<N;i+) cout<<ai<<" " cout<<endl;运行结果:第四题:程序代码:#include<iostream.h>#define N 10/冒泡排序,由大到小排序void main()int aN=30,21,15,38,25,35,18,28,45,20; int i,j,t,k; for(i=0;i<N-1;i+) k=0; for(j=0;j<N-i-1;j+) if(aj<aj+1) t=aj;a

21、j=aj+1;aj+1=t;k=1; if(k=0)break; for(i=0;i<N;i+) cout<<ai<<" " cout<<endl;运行结果:第七次作业1.定义一个二维数组int a34,分别用指针法和下标法输出其内容。2.用数组作为函数参数,并通过函数调用还回最大值,最小值和平均值。函数原型维: void fun(int a10, int *max,int *min,float *avg)3.编写一个函数void fun(int a,int n),将a中的n个元素按反序存放,在main函数中调用该函数,分别用数组和

22、指针作为实参。4.用冒泡法或选择法编写一个排序的函数,然后在主程序中调用该函数实现10个整数的排序。 第一题程序代码:#include<stdio.h>void main()int a34=1,2,3,4,5,6,7,8,9,10,11,12; int i,j; int *p; int (*pp)4;/用下标法实现; for(i=0;i<3;i+) for(j=0;j<4;j+) printf("%3d",aij); printf("n");   /用列指针实现; p=&a00; for(i=0;i&l

23、t;12;i+) printf("%3d",*(p+i); printf("n");  /用行指针实现; pp=a; for(i=0;i<3;i+) for(j=0;j<4;j+) printf("%3d",*(*(pp+i)+j); printf("n"); 运行结果截图: 第二题:程序代码:#include<stdio.h>void fun(int a10, int *max,int *min,float *avg)int i,s=0; *max=*min=

24、a0; for(i=0;i<10;i+) if(*max<ai)*max=ai; else if(*min>ai) *min=ai; s+=ai; *avg=s/10.0; void main()int a10=10,21,8,22,40,23,32,26,30,12; int max,min; float avg; fun(a,&max,&min,&avg); printf("max=%dn",max); printf("min=%dn",min); printf("avg=%6.2fn&q

25、uot;,avg); 运行结果截屏:第三题:程序代码:#include<stdio.h>void fun(int a,int n)int i,t; for(i=0;i<n/2;i+) t=ai;ai=an-i-1;an-i-1=t; void main()int a6=20,12,6,21,29,15; int *p,i; /用数组作为函数的实参; printf("原先数组的序列:n"); for(i=0;i<6;i+) printf("%4d",ai); printf("n"); prin

26、tf("用数组作为实参,交换后的序列:n"); fun(a,6); for(i=0;i<6;i+) printf("%4d",ai); printf("n"); /用指针作为函数的实参 printf("用指向数组的指针作为实参,再次交换后的序列:n"); p=a; fun(p,6); for(i=0;i<6;i+) printf("%4d",ai); printf("n"); 运行结果截屏:第四题:程序代码:#include<stdio.h>

27、/用选择法编写数组排序函数,按从小到大顺序排序void sort1(int a,int n)int i,j,k,t; for(i=0;i<n-1;i+) k=i; for(j=i+1;j<n;j+)if(ak>aj)k=j;if(k!=i)t=ai;ai=ak;ak=t; /用冒泡法排序,按从小到大顺序排序 void sort2(int a,int n)int i,j,t,f; for(i=0;i<n;i+) f=1; for(j=0;j<n-i-1;j+) if(aj>aj+1) t=aj;aj=aj+1;aj+1=t;f=0; if(f=1)b

28、reak;  void main()int a10=40,23,26,20,35,55,12,43,37,45; int i;printf("排序前的序列:n");for(i=0;i<10;i+) printf("%4d",ai); printf("n"); printf("选择排序后的序列:n"); sort1(a,10); for(i=0;i<10;i+) printf("%4d",ai); printf("n冒泡排序后的序列:n"); sort2(

29、a,10); for(i=0;i<10;i+) printf("%4d",ai); printf("n"); 运行结果截屏:第八次作业1.  设数组aN中已经有n个数并已按从小到大顺序排序。要求输入一个数x,将其插入到数组中,使数组仍然有序。#include<iostream>using namespace std;void main()int a10=4,6,8,10,20; int i,j,x; cin>>x; for(i=0;i<9;i+) if(ai>x)/ 寻找插入点;for(j=9

30、;j>i;j-)/将元素向后移动一位;aj=aj-1;ai=x; /空出位置,插入元素x;break; for(i=0;i<10;i+) cout<<ai<<" "2.  编写函数int ff(char *s),判断s所指字符串是否为“回文串”,即前后对称。如abcba为回文串,若是返回1,否则返回0,并在主程序中调用该函数,对输入的字符串进行判断。#include<iostream.h>#include<string.h>int ff(char *s)int n,i; n=strlen(s); for(

31、i=0;i<n/2;i+) if(si!=sn-i-1)return 0; return 1;void main()char ss20; cin>>ss; if(ff(ss)cout<<"YES!"<<endl; else cout<<"NO!"<<endl;3.  编写一个函数 void strcp(char *s1,char *s2),将字符数组s1中下标为偶数的元素复制到另一个字符数组s2中。在主程序中调用该函数,输出这个字符串。#include<iostream.h

32、>/将字符串s1中下标为偶数的字符复制到s2中。void strcp(char *s1,char *s2)int i=0,j=0; for(i=0;s1i!='0'i+) if(i%2=0)s2j+=s1i; s2j='0'int main()char s="Nanchang!" char ss10; strcp(s,ss); cout<<s<<endl; cout<<ss<<endl;return 0;4.  输入一行字符,统计其中字母,数字,空格和其他字符的个数。#inclu

33、de<iostream.h>int main()char s100; int B=0,L=0,D=0,S=0,T=0,i; cin.getline(s,100,'n'); for(i=0;si!='0'i+) if(si>='A'&&si<='Z')B+; else if (si>='a'&&si<='z')L+;else if(si>='0'&&si<='9')D+; e

34、lse if(si=' ') S+;else T+; cout<<"大写字符个数:"<<B<<endl; cout<<"小写字符个数:"<<L<<endl; cout<<"数字字符个数:"<<D<<endl; cout<<"空格字符个数:"<<S<<endl; cout<<"其他字符个数:"<<T<<e

35、ndl; return 0;第九次作业1、编写一个程序,采用类计算n! ,并输出10!的值.#include<iostream.h>class JSpublic:JS(int a)/构造函数;n=a;int fac()/计算N的阶乘;int i,p=1; for(i=1;i<n;i+) p=p*i; return p;private:int n;int main()JS obj(10);/定义对象; int s; s=obj.fac();/调用对象的方法计算阶乘; cout<<s<<endl; return 0;2、定义并实现一个矩形类,有长宽两个属性

36、,定义一个构造函数初始化对象,用成员函数GetS()、GetL分别计算其面积和周长。#include<iostream.h>class Rectpublic:Rect(int x,int y)/定义构造函数用于初始化对象;a=x;b=y;int GetS()/计算面积的成员函数;return a*b;int GetL()/计算周长的成员函数;return 2*(a+b);private:int a,b; /矩形的长和宽;; int main()Rect obj(5,2);/定义一个矩形对象; int S,L; S=obj.GetS();/调用矩形对象的成员函数计算面积;

37、L=obj.GetL();/调用矩形对象的成员函数计算周长; cout<<"S="<<S<<endl; cout<<"L="<<L<<endl; return 0;3、定义一个Circle类,有数据成员R (半径),定义构造函数,用成员函数GetArea()计算面积,构造一个Circle对象进行测试。#include<iostream.h>#define PI 3.1415class Circlepublic:Circle(float r) /构造函数R=r;double

38、 GetArea()return PI*R*R;private:float R;/圆的半径;; void main()Circle C(2.0); double s; s=C.GetArea(); cout<<"S="<<s<<endl;4、定义一个圆柱体类,有数据成员底面半径R和高H,用成员函数GetV计算其体积,定义构造函数,在主函数中定义一个对象进行测试。#include<iostream.h>#define PI 3.14159class Cylinderpublic:Cylinder(float r,flo

39、at h)/构造函数R=r;H=h;double GetV()/计算圆柱体的体积;return PI*R*R*H;private:float R,H;/声明圆柱体的半径和高;;void main()Cylinder yzt(3,5); double v; v=yzt.GetV(); cout<<"圆柱体的体积为="<<v<<endl; 5、设计一个点类Point,有两个数据成员x和y,定义一个构造函数初始化对象。为这个点类增加一个友元函数,通过该友元函数计算两个点之间的距离。#include<iostream.h>#

40、include<math.h>class Point public:Point(float a,float b)/构造函数;x=a;y=b;friend double js(Point A,Point B);/声明友元函数;private:float x,y;/声明点的坐标;; /计算两点之间的距离double js(Point A,Point B)double xx=A.x-B.x; double yy=A.y-B.y; double s=sqrt(xx*xx+yy*yy); return s;void main()Point A(2,5),B(6,9);/定义两个点对

41、象; double ss; ss=js(A,B); cout<<"距离="<<ss<<endl;期中考试1、输入三角形的三条边a,b,c,利用海伦公式计算三角形的面积。若 p=(a+b+c)/2 , 则S= 。要求判断a,b,c能否组成一个三角形。#include<iostream.h>#include<math.h>void main()float a,b,c,p,area; cout<<"请输入三角形的三条边:"<<endl; cin>>a>>b>>c; if(a+b>c)&&(a+c>b)&&(b+c>a) p=(a+b+c)/2.0; area=sqrt(p*(p-a)*(p-b)*(p-c); cout<<"S="<<area<<endl; else cout<<"不能构成三角形!n"     2、输入一个日期,计算该日期是该年的第几天。#include<iost

温馨提示

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

评论

0/150

提交评论