C上機(jī)作業(yè)答案講解_第1頁
C上機(jī)作業(yè)答案講解_第2頁
C上機(jī)作業(yè)答案講解_第3頁
C上機(jī)作業(yè)答案講解_第4頁
C上機(jī)作業(yè)答案講解_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 第一章作業(yè)答案1. 編寫程序,將華氏溫度轉(zhuǎn)化為攝氏溫度:公式: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;  運行結(jié)果:2.編寫程序,輸入圓柱體的半徑r和高h(yuǎn),計算圓柱體的體積。程序代碼:#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;運行結(jié)果: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;運行結(jié)果: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!"運行結(jié)果第二章作業(yè)答案1. 輸入一個整數(shù),計算該數(shù)的階乘。程序代碼:#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;運行結(jié)果:2. 連續(xù)輸入若干個整數(shù),輸入0結(jié)束。統(tǒng)計其正整數(shù)的個數(shù),并計算其中正整數(shù)的總和、平均值并輸出。程序代碼:#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. 輸出所有的水仙花數(shù)。所謂“水仙花數(shù)”是一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。如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; 運行結(jié)果:第3章 作業(yè)答案1.  編寫程序輸出兩個數(shù)的最大公約數(shù)和最小公倍數(shù)。2.  計算100-300之內(nèi)所有素數(shù)的和。3.  計算s=1-1/3+1/5-1/7+1/994. N是一個四位數(shù),它的9倍恰好是其反序數(shù)(例如:123的反序數(shù)是321),求N的值。第一題:程序代碼:/用輾轉(zhuǎn)相除法求最大公約數(shù);#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<<"最大公約數(shù)="<<n<<endl; cout<<"最小公倍數(shù)="<<temp/n<<endl;運行結(jié)果:第二題:程序代碼:#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;運行結(jié)果:第三題:程序代碼:#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;運行結(jié)果:  第四題:程序代碼:#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; 運行結(jié)果:第四次作業(yè)答案1.     編寫兩個函數(shù),分別計算兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),并在主函數(shù)中調(diào)用該函數(shù),并輸出結(jié)果。2.     編寫一個判斷素數(shù)

12、的函數(shù),函數(shù)原型為: int isprime(int n),在主函數(shù)中調(diào)用該函數(shù),計算1001000之間所有素數(shù)的和。3.     編寫一個函數(shù),f(n)= ,并在主函數(shù)中輸出f(10)的值。(說明自然對數(shù) ln的函數(shù)原型為 double log(float x) .4.     編寫一個計算階乘的函數(shù),函數(shù)原型為 int fac(int n),在主函數(shù)中調(diào)用該函數(shù),計算:S=M!+N! .第一題:程序代碼:#include<iostream>using namespace std;/求最大公約數(shù)int

13、 gcd(int m,int n)int r; while(r=m%n) m=n;n=r; return n; /求最小公倍數(shù)int lcd(int m,int n)return m*n/gcd(m,n);void main()int a,b; cin>>a>>b; cout<<"最大公約數(shù)為:"<<gcd(a,b)<<endl; cout<<"最小公倍數(shù)為:"<<lcd(a,b)<<endl;運行結(jié)果:第二題:程序代碼:#include<io

14、stream>using namespace std;/判斷素數(shù)的函數(shù),若n為素數(shù),函數(shù)返回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;運行結(jié)果:第三題:程序代碼:#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;運行結(jié)果:第四題:程序代碼:#include<iostream>using namespace std;/用遞歸編寫計算階乘的函數(shù)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;運行結(jié)果:第五章第六次上機(jī)內(nèi)容1、  定義一個3行4列的數(shù)組,計算所有數(shù)據(jù)的平均值,并輸出最大值和最小值和它的行號和列號。2、  編寫程序,實現(xiàn)一個一維數(shù)組的反序存放。3、  用選擇排序法實現(xiàn)10整數(shù)由小到大排序。4、  用冒泡法實現(xiàn)10整數(shù)由大到小排序。 第一題:程序代碼:#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;運行結(jié)果: 第二題:程序代碼:#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;  運行結(jié)果: 第三題:程序代碼:#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;運行結(jié)果:第四題:程序代碼:#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;運行結(jié)果:第七次作業(yè)1.定義一個二維數(shù)組int a34,分別用指針法和下標(biāo)法輸出其內(nèi)容。2.用數(shù)組作為函數(shù)參數(shù),并通過函數(shù)調(diào)用還回最大值,最小值和平均值。函數(shù)原型維: void fun(int a10, int *max,int *min,float *avg)3.編寫一個函數(shù)void fun(int a,int n),將a中的n個元素按反序存放,在main函數(shù)中調(diào)用該函數(shù),分別用數(shù)組和

22、指針作為實參。4.用冒泡法或選擇法編寫一個排序的函數(shù),然后在主程序中調(diào)用該函數(shù)實現(xiàn)10個整數(shù)的排序。 第一題程序代碼:#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;/用下標(biāo)法實現(xiàn); for(i=0;i<3;i+) for(j=0;j<4;j+) printf("%3d",aij); printf("n");   /用列指針實現(xiàn); p=&a00; for(i=0;i&l

23、t;12;i+) printf("%3d",*(p+i); printf("n");  /用行指針實現(xiàn); pp=a; for(i=0;i<3;i+) for(j=0;j<4;j+) printf("%3d",*(*(pp+i)+j); printf("n"); 運行結(jié)果截圖: 第二題:程序代碼:#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); 運行結(jié)果截屏:第三題:程序代碼:#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; /用數(shù)組作為函數(shù)的實參; printf("原先數(shù)組的序列:n"); for(i=0;i<6;i+) printf("%4d",ai); printf("n"); prin

26、tf("用數(shù)組作為實參,交換后的序列:n"); fun(a,6); for(i=0;i<6;i+) printf("%4d",ai); printf("n"); /用指針作為函數(shù)的實參 printf("用指向數(shù)組的指針作為實參,再次交換后的序列:n"); p=a; fun(p,6); for(i=0;i<6;i+) printf("%4d",ai); printf("n"); 運行結(jié)果截屏:第四題:程序代碼:#include<stdio.h>

27、/用選擇法編寫數(shù)組排序函數(shù),按從小到大順序排序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"); 運行結(jié)果截屏:第八次作業(yè)1.  設(shè)數(shù)組aN中已經(jīng)有n個數(shù)并已按從小到大順序排序。要求輸入一個數(shù)x,將其插入到數(shù)組中,使數(shù)組仍然有序。#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.  編寫函數(shù)int ff(char *s),判斷s所指字符串是否為“回文串”,即前后對稱。如abcba為回文串,若是返回1,否則返回0,并在主程序中調(diào)用該函數(shù),對輸入的字符串進(jìn)行判斷。#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.  編寫一個函數(shù) void strcp(char *s1,char *s2),將字符數(shù)組s1中下標(biāo)為偶數(shù)的元素復(fù)制到另一個字符數(shù)組s2中。在主程序中調(diào)用該函數(shù),輸出這個字符串。#include<iostream.h

32、>/將字符串s1中下標(biāo)為偶數(shù)的字符復(fù)制到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.  輸入一行字符,統(tǒng)計其中字母,數(shù)字,空格和其他字符的個數(shù)。#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<<"大寫字符個數(shù):"<<B<<endl; cout<<"小寫字符個數(shù):"<<L<<endl; cout<<"數(shù)字字符個數(shù):"<<D<<endl; cout<<"空格字符個數(shù):"<<S<<endl; cout<<"其他字符個數(shù):"<<T<<e

35、ndl; return 0;第九次作業(yè)1、編寫一個程序,采用類計算n! ,并輸出10!的值.#include<iostream.h>class JSpublic:JS(int a)/構(gòu)造函數(shù);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();/調(diào)用對象的方法計算階乘; cout<<s<<endl; return 0;2、定義并實現(xiàn)一個矩形類,有長寬兩個屬性

36、,定義一個構(gòu)造函數(shù)初始化對象,用成員函數(shù)GetS()、GetL分別計算其面積和周長。#include<iostream.h>class Rectpublic:Rect(int x,int y)/定義構(gòu)造函數(shù)用于初始化對象;a=x;b=y;int GetS()/計算面積的成員函數(shù);return a*b;int GetL()/計算周長的成員函數(shù);return 2*(a+b);private:int a,b; /矩形的長和寬;; int main()Rect obj(5,2);/定義一個矩形對象; int S,L; S=obj.GetS();/調(diào)用矩形對象的成員函數(shù)計算面積;

37、L=obj.GetL();/調(diào)用矩形對象的成員函數(shù)計算周長; cout<<"S="<<S<<endl; cout<<"L="<<L<<endl; return 0;3、定義一個Circle類,有數(shù)據(jù)成員R (半徑),定義構(gòu)造函數(shù),用成員函數(shù)GetArea()計算面積,構(gòu)造一個Circle對象進(jìn)行測試。#include<iostream.h>#define PI 3.1415class Circlepublic:Circle(float r) /構(gòu)造函數(shù)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、定義一個圓柱體類,有數(shù)據(jù)成員底面半徑R和高H,用成員函數(shù)GetV計算其體積,定義構(gòu)造函數(shù),在主函數(shù)中定義一個對象進(jìn)行測試。#include<iostream.h>#define PI 3.14159class Cylinderpublic:Cylinder(float r,flo

39、at h)/構(gòu)造函數(shù)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、設(shè)計一個點類Point,有兩個數(shù)據(jù)成員x和y,定義一個構(gòu)造函數(shù)初始化對象。為這個點類增加一個友元函數(shù),通過該友元函數(shù)計算兩個點之間的距離。#include<iostream.h>#

40、include<math.h>class Point public:Point(float a,float b)/構(gòu)造函數(shù);x=a;y=b;friend double js(Point A,Point B);/聲明友元函數(shù);private:float x,y;/聲明點的坐標(biāo);; /計算兩點之間的距離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<<"不能構(gòu)成三角形!n"     2、輸入一個日期,計算該日期是該年的第幾天。#include<iost

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論