計算機程序設計語言C實驗報告_第1頁
計算機程序設計語言C實驗報告_第2頁
計算機程序設計語言C實驗報告_第3頁
計算機程序設計語言C實驗報告_第4頁
計算機程序設計語言C實驗報告_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機程序設計語言C+實驗報告級口號名 指導教師商管理20124130沈棟何耀琴經濟管理學院二O一一年六月題目 1:輸出所有的“水仙花數” ,所謂“水仙花數”是指一個 3 位數,其各位數字立方和等于該數本身。#include <iostream>using namespace std;int main()int n1,n2,n3,i;for (i=100;i<=999;i+)n1=i/100; n2=(i%100)/10;n3=i%10;if (n1*n1*n1+n2*n2*n2+n3*n3*n3=i) cout<<i<<endl;return 0;題

2、目 2:輸入一行字符,分別統計出其中英語字母、空格、數字和其他字符的個數#include <iostream> using namespace std; int main() int l,s,n,o;cout<<" 請輸入一行字符 "<<endl;char e; l=s=n=o=0;while(e=getchar()!='n') if(e>='a'&&e<='z')|(e>='A'&&e<='Z')l+;

3、 else if(e>='0'&&e<='9')n+; else if(e=' ')s+;else o+; printf("l:%dn",l); printf("s:%dn",s); printf("n:%dn",n); printf("o:%dn",o); return 0;題目3:輸入兩個正整數m和n,求其最大公約數和最小公倍數#include <iostream>using namespace std;int main()

4、int m,n,a,b,X,Y;cout<<" 輸入兩個正整數 "cin>>m>>n;X=m*n;Y=1;for (a=m*n;a>=m&&a>=n;a-) if(a%m=0&&a%n=0&&a<X) X=a;for (b=m;b>=1;b-)if(m%b=0&&n%b=0&&b>Y) Y=b;cout<<" 最小公倍數 "<<X<<endl;cout<<&quo

5、t; 最大公約數 "<<Y<<endl;return 0;題目 4: 輸出以“ *”表示的正金字塔與倒金字塔模型#include <iostream>using namespace std;void print(int n)int i,j;for(i=1;i<=n;i+)for(j=n-1;j>=i;j-)cout<<" " for(j=1;j<=2*i-1;j+)cout<<"*" cout<<endl;void printstar(int n)int

6、i,j;for(i=1;i<=n;i+)for(j=1;j<=i-1;j+)cout<<" " for(j=n-1;j>=i;j-)cout<<"*" cout<<"*"cout<<endl;int main()int i,m;for(i=1;i<=5;i+)cin>>m;print(m);printstar(m);return 0;題目 5: 輸入十個整數,要求按倒序排列輸出#include <iostream>using namespa

7、ce std;int main()void daoxu(int *);int a10;cout<<" 輸入 10 個數 "int i,*p=a;for(i=0;i<10;i+)cin>>*(p+i);cout<<endl;daoxu(p); for(p=a;p<(a+10);p+)cout<<*p<<" " cout<<endl;return 0;void daoxu(int *p) void swap(int*,int*); int i; for(i=0;i<5;

8、i+)swap(p+i),(p+9-i);void swap(int *p1,int *p2) int temp;temp=*p1;*p1=*p2;*p2=temp;題目 6:輸入 5 位學生的 5 門課成績,要求計算這 5 位學生的各自 5門課平均成績及所有 5 位學生的平均成績,并輸出#include <iostream>using namespace std;int main()struct Studentchar name10;int score5;float average;int i,sum;Student stu;cout<<" 輸入學生姓名 :

9、" cin>>;cout<<" 輸入五門課的成績 :" for(i=0;i<5;i+) cin>>stu.scorei;sum=0; for(i=0;i<5;i+) sum+=stu.scorei;stu.average=(float)sum/5;cout<<<<" 的平均成績為 "<<stu.average<<endl; int a1=stu.average;cout<<" 輸入學生姓名 :&q

10、uot; cin>>;cout<<" 輸入五門課的成績 :" for(i=0;i<5;i+) cin>>stu.scorei;sum=0; for(i=0;i<5;i+) sum+=stu.scorei;stu.average=(float)sum/5;cout<<<<" 的平均成績為 "<<stu.average<<endl; int a2=stu.average;cout<<" 輸入學生姓名 :&quo

11、t;cin>>;cout<<" 輸入五門課的成績 :"for(i=0;i<5;i+) cin>>stu.scorei;sum=0;for(i=0;i<5;i+)sum+=stu.scorei;stu.average=(float)sum/5;cout<<<<" 的平均成績為int a3=stu.average; cout<<" 輸入學生姓名 :" cin>>;cout<<" 輸入五

12、門課的成績 :"for(i=0;i<5;i+) cin>>stu.scorei;sum=0;for(i=0;i<5;i+)sum+=stu.scorei;stu.average=(float)sum/5;cout<<<<" 的平均成績為int a4=stu.average; cout<<" 輸入學生姓名 :" cin>>;cout<<" 輸入五門課的成績 :"for(i=0;i<5;i+) cin>>s

13、tu.scorei;sum=0;for(i=0;i<5;i+)sum+=stu.scorei;stu.average=(float)sum/5;cout<<<<" 的平均成績為int a5=stu.average;"<<stu.average<<endl;"<<stu.average<<endl;"<<stu.average<<endl;cout<<" 所有人平均成績 "<<':'

14、;<<(a1+a2+a3+a4+a5)/5<<endl;return 0;題目 7:輸入 5 位學生的 5 門課成績,要求輸出按由高到低排列的這5 位學生的各自 5 門課平均成績及所有學生的 5 門課平均成績。#include<iostream> #include<string> using namespace std; struct Studentstring name; float score5; float average;int main() float total_average,temp;string c;Student stu5;i

15、nt i,j;="stone" ="eva"="demon" ="kevin"="lucy" for(i=0;i<5;i+)H.cout<<" 輸入學生 "<<<<" 的五門課程成績: for(j=0;j<5;j+) cin>>stui.scorej; cout<<endl;for(i=0

16、;i<5;i+) stui.average=(stui.score0+stui.score1+stui.score2+stui.score3+ stui.score4)/5;for(j=0;j<4;j+) for(i=0;i<4-j;i+) if(stui.average<stui+1.average)temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;c=;=stui+1.name;stui+1.name=c;total_average=(stu0.av

17、erage+stu1.average+stu2.average+stu3.average+stu 4.average)/5;cout<<" 排序: "<<endl;for(i=0;i<5;i+)cout<<<<':'<<stui.average<<endl; cout<<" 總平均成績為: "<<total_average<<endl; return 0;題目 8:給小學生出 100 道 199 范圍內的加減

18、乘除題,如果成績小于 90 分則再做 100 題。#include <iostream>#include <ctime>#include <cmath> using namespace std; int main()int i,x1,x2,x,y,n1,n2;srand(time(NULL);cout<<" 請輸入下面各題的結果 :"<<endl; lable:n1=n2=0;for(i=1;i<=100;i+) x1=1+rand()%99; x2=1+rand()%99; x=rand()%4;switc

19、h(x)case 0:cout<<x1<<'+'<<x2<<"=?"cin>>y; if(y=x1+x2) cout<<" 你答對了,繼續努力! "<<endl;n1+; elsecout<<" 你答錯了,認真一點! "<<endl;n2+; break;case 1:if(x1>x2)cout<<x1<<'-'<<x2<<"=?&q

20、uot;else cout<<x2<<'-'<<x1<<"=?" cin>>y;if(y=int(fabs(x1-x2) cout<<" 你答對了,繼續努力! "<<endl;n1+; elsecout<<" 你答錯了,認真一點! "<<endl;n2+; break;case 2:cout<<x1<<'*'<<x2<<"=?"

21、cin>>y;if(y=x1*x2)cout<<" 你答對了,繼續努力! elsecout<<" 你答錯了,認真一點! break;case 3:cout<<x1<<'/'<<x2<<"=?"cin>>y;if(y=x1/x2)cout<<" 你答對了,繼續努力! elsecout<<" 你答錯了,認真一點! break;"<<endl;n1+;"<<end

22、l;n2+;"<<endl;n1+;"<<endl;n2+;還 得 罰 做 100 題 。if(n1<90)cout<<" 你 成 績 太 差 了 , "<<endl;n1=n2=0;n1=n2=0;n1=n2=0;goto lable; return 0;題目 9:輸入積分區域的端點值,輸出 f1,f2,f3, f4, f5 的定積分的值#include <iostream> using namespace std;double integral(double a,double b,in

23、t n,double(*fun)(double x); double f1(double x)double fun; fun=1+x;return fun; double f2(double x) double fun; fun=2*x+3;return fun; double f3(double x) double fun; fun=(1+x)*(1+x); return fun; double f4(double x)double fun; fun=x*x*x; return fun; double f5(double x) double fun; fun=x*x*x+1;return f

24、un; void main()double s1,s2,s3,s4,s5;double a,b;int n;cout<<" 輸入積分區域端點值 a,b 和 n" cin>>a>>b>>n;s1= integral(a,b,n,f1);s2= integral(a,b,n,f2);cout<<"f1cout<<"f2cout<<"f3cout<<"f4cout<<"f5s3=integral(a,b,n,f3); s4=

25、integral(a,b,n,f4); s5=integral(a,b,n,f5);的定積分的值 "<<s1<<endl; 的定積分的值 "<<s2<<endl; 的定積分的值 "<<s3<<endl; 的定積分的值 "<<s4<<endl; 的定積分的值 "<<s5<<endl;double integral(double a,double b,int n,double(*fun)(double x) int i;doubl

26、e h,x,f1,f2,s;h=(b-a)/n;f1=(*fun)(a);x=a;s=0.0; for(i=1;i<=n;i+) x=x+h;f2=(*fun)(x);s=s+(f1+f2)/2*h;f1=f2;return s;題目 10:用自己輸入的種子產生 100000 個隨機數并求最大值和最小值;#include <iostream>#include <iomanip> using namespace std;void main() unsigned seed;long int s(-1),n(50000);for(int i=1;i<=100000

27、0;i+) int temp;temp=rand(); if(temp>s)s=temp; if(temp<n)n=temp;cout<<"s="<<s<<endl; cout<<"n="<<n<<endl;題目11:模擬100次擲錢幣的過程,輸出“ f”表示此次錢幣正面朝上,輸出“ b”表示此次錢幣反面朝上,并統計這 100次中,共有多少次正面朝上,多少次反面朝上。#include <iostream>#include <ctime> using

28、 namespace std; void main() int i,fac(0),back(0),temp;srand (time(NULL); for(i=0;i<100;i+) temp=rand(); if(temp%2=1)cout<<"f"<<" "fac+; else cout<<"b"<<" "back+; cout<<endl<<" 正面的次數 ="<<fac<<endl; co

29、ut<<endl<<" 反面的次數 ="<<back<<endl;題目12:編寫一個完成n個數排序的函數sort,凡是需要交換兩個元素值都調用 swap 來完成。分別用指針和引用兩種方法做#include <iostream>using namespace std;int main()void sort(int *p);int a10;cout<<" 輸入 10 個不同的數: "<<endl;int i,*p=a;for(i=0;i<10;i+)cin>>

30、;*(p+i);cout<<endl;sort(p);cout<<" 輸出新順序: "<<endl;for (p=a;p<a+10;p+) cout<<*p<<" "cout<<endl;return 0;void swap(int *p1,int *p2)int temp; temp=*p1;*p1=*p2;*p2=temp;void sort(int *p)void swap(int *,int *);int i,j,s;for (i=0;i<9;i+)s=i;for

31、 (j=i+1;j<10;j+)if(*(p+j)<*(p+s)s=j; swap(p+s),(p+i);題目 13:寫一個求 n! 的函數,并通過調用函數求 sum=a!+b!+c! 。#include <iostream> using namespace std; int jc(int n);int main()int sum,a,b,C;HCout<<" 輸入 a,b, C: Cin>>a>>b>>C; sum=jC(a)+jC(b)+jC(C);Cout<<"sum=a!+b!+C!

32、="<<sum<<endl; int jC(int n) int s=1,i=1;for(i=1;i<=n;i+) s=s*i; return s;題目 14:寫一個判斷素數的函數, 并通過調用函數判斷 2000年至 3000年間有哪些是素數年號。#inClude <iostream> using namespaCe std; void fun(int n)int i; for(i=2;i<=n;i+) if(n%i=0) break; if(i=n) Cout<<n<<endl;void main()int j

33、;for(j=2000;j<=3000;j+) fun(j);題目15:將漢諾塔程序里三根針用字符 a' b' C'表示,并統計搬動盤子的次數#include <iostream>using namespace std;int s=0;int a,b,c;void movedisk(char takeoff,char puton) cout<<takeoff<<"->"<<puton<<endl; void movetower(char n,char a,char b,char

34、c) if (n>1)movetower(n-1,a,c,b); movedisk(a,b);movetower(n-1,c,b,a);else movedisk(a,b);s=s+1;void main()int m;cout<<"input number of disk please:" cin>>m;movetower(m,'a','b','c'); cout<<"s="<<s<<endl;題目 16:用牛頓迭代法求方程的根#inclu

35、de <iostream>#include <cmath>#include <iomanip> using namespace std;double f1(double x)double s; s=x*x*x+2*x*x+3*x+4; return s;double f2(double x)double t; t=3*x*x+4*x+3; return t;double root(double x0)double x,y1,y2;doy1=f1(x);y2=f2(x);x=x0-y1/y2;x0=x;while (fabs(y1)>0.00001);r

36、eturn x;int main()double x,x0;cin>>x0;x=root(x0);cout<<x<<endl;return 0;題目 17:寫一函數驗證哥德巴赫猜想#include <iostream> #include <cmath> using namespace std; int main()void godbaha(int); int n; cout<<"input n:" cin>>n; godbaha(n); return 0;void godbaha(int n

37、)int prime(int);int a,b;for (a=3;a<=n/2;a=a+2) if(prime(a) b=n-a;if (prime(b)cout<<n<<"="<<a<<"+"<<b<<endl; int prime(int m) int i,k=sqrt(m); for(i=2;i<=k;i+)if(m%i=0)break; if(i>k) return 1; else return 0; 題目 18:求二維數組中最大值元素及所在的行和列,分別以

38、數組元素作參數及數組名作參數完成。#include <iostream>using namespace std;void main()int i,j,row=0,colum=0,max;int a34=3,5,4,8,4,7,1,2,-6,-9,3,0;max=a00;for(i=0;i<3;i+)for(j=0;j<4;j+)if(aij>max) max=aij; row=i; colum=j;cout<<" 最大值所在的行: "<<row<<endl; cout<<" 最大值所在的

39、列 :"<<colum<<endl; cout<<" 最大值: "<<max<<endl;題目 19: 定義一個學生類 ,有 num,age,score 三個數據成員和 2 個靜態數據成員 ,一個求年齡之和的成員函數和構造函數 ,用構造函數實現初始化 ,主函數中定義一個三個元素的對象數組 ,并給定三個學生的值 ,通過調用 成員函數完成三個學生的平均年齡 ,并找出最高成績并打印出來。#include <iostream> #include <string> using namespa

40、ce std; class Student public:Student (int n,int a,float s):num(n),age(a),score(s) void total(); static float av();int num; float score; static int count; static float max(); static float sum; stud5=Student(10010,18,70), Student(10011,18,80),Student(10012,18,90), Student(10013,18,40),Student(10014,18

41、,50); void Student:total() sum+=age;float Student:max() int j;float max=0; for(j=1;j<=5,j+) if(studj.score>max) max=studj.score; return max; float Student:av() return(sum/count); float Student:sum=0; int Student:count=0; int main int n; cout<<" 輸入學生數: cin>>n; for(int i=o;i<n;i+) studi.total(); cout<<"theH.averageageof"<<n<<""<<&qu

溫馨提示

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

評論

0/150

提交評論