C++50題問題詳解_第1頁
C++50題問題詳解_第2頁
C++50題問題詳解_第3頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本學期程序設計基礎 課程實行上機考核, 現(xiàn)將考核有關(guān)事項通知如下:(1)考核時間:本學期最后一次上機時間為機試。(2)考核容:C+面向過程部分,主要是算法設計與實現(xiàn)??碱}來自本學期 布置的作業(yè)、部分例題及一些補充的題目。( 3 ) 考 試形式:機試前進入機房時,每人隨機抽取一道題 (同一個班的同學 保證不抽到同一題) ,然后上機編程,調(diào)試通過后報告監(jiān)考人員審核, 審核通過后將源程序拷貝到監(jiān)考人員 U 盤上,然后可以離開機房。源 程序文件明必須是 學號.cpp ”女口 “201221153天.cpp ”( 4) 考 試要求:機試時考試規(guī)則同課堂考試一致,不允許帶書、紙等。不能 攜帶任何可用計算機

2、處理的軟件或數(shù)據(jù) (不允許任何私人攜帶的 U 盤、 磁盤或計算器 ) ,不能攜帶任何類型的通訊工具 ,包括無線電接收器、 移動。(5) 考試成績: 本次機試成績將在 程序設計基礎 課程成績中占 25%的比 重。( 6) 其 它有關(guān)事項由主考教師和監(jiān)考人員負責處理。附:考試題集1. 利用異或運算對輸入的文本進行加密解密輸出,用戶輸入一個文本(字符串,設不超過20 個字符),然后輸入作為密鑰的字符,程序輸入加密及解密的字符串。/加密字符串#include<iostream.h>void main()char a21,b,key;int i;cout<<" 請輸入字

3、符串: "cin>>a;cout<<" 請輸入密匙: "cin>>b;for(i=0;ai!=0;i+)ai=ab;cout<<" 加密后: "for(i=0;ai!=0;i+)cout<<ai;cout<<endl<<" 請輸入密碼: " cin>>key;for(i=0;ai!=0;i+) ai=aiAkey;for(i=0;ai!=0;i+)cout<<ai; cout<<endl; 已閱,請放心食用

4、2. 編寫一個程序,用戶輸入年份及月份兩個數(shù)據(jù),程序輸出該月份的天數(shù)。 (提示:對 2 月要考慮是否閏年, 閏年年份要么能被 4整除且不能被 100整除,要么能被 400整除, 除次之外都不是閏年) 。#include<iostream.h>void main()int year,month,days;cout<<" 請輸入年份,月份: "cin>>year>>month; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) days=31; cout&l

5、t;<year<<" 年"<<month<<" 月有"<<days<<" 天n"else if(month=4|month=6|month=9|month=11)days=30; cout<<year<<" 年"<<month<<" 月有"<<days<<" 天n"else if(year%4=0&&year%100!=0)

6、|year%400=0)days=29;cout<<year<<" 年 "<<month<<" 月有 "<<days<<" 天 n"elsedays=28;cout<<year<<" 年 "<<month<<" 月有 "<<days<<" 天 n"已閱,請放心食用3. 某大橋按不同型號征收車輛過橋費:自行車免費,摩托車 2 元,小汽車

7、 5 元,大客車 與貨車 8元,貨柜車 12 元。編寫一個程序,按車輛的不同型號計算通過該大橋應征的 過橋費。(提示:可以用整數(shù)對不同型號的車輛進行編碼)/收過橋費#include<iostream.h>void main()int kind;cout<<"1. 自行車 n"cout<<"2. 摩托車 n"cout<<"3. 小汽車 n"cout<<"4. 大貨車或客車 n"cout<<"5. 貨柜車 n"cout<&

8、lt;" 請輸入汽車種類: "cin>>kind;switch(kind)case 1:cout<<" 費用 :0 元 "<<endl;break;case 2:cout<<" 費用 :2 元 "<<endl;break;case 3:cout<<" 費用 :5 元 "<<endl;break;case 4:cout<<" 費用 :8 元 "<<endl;break;case 5:cout

9、<<" 費用 :12 元 "<<endl;break;default:cout<<" 錯誤! "<<endl; 已閱,請放心食用4. 輸入一位同學的考試成績,若是90100分,輸出“ Excelle nt”,8089輸出“ Very good', 7079 輸出“ Good”,6069 輸出“ PasS', 60 分以下輸出“ No PasS'。#include<iostream.h>void main()int marks;cout<<" 輸入考試

10、成績: "cin>>marks;switch(marks/10)case 10:case 9:cout<<"Excellentn"break;case 8:cout<<"Very Goodn"break;case 7:cout<<"Goodn"break;case 6:cout<<"Passn"break;default :cout<<"No Passn"已閱,請放心食用5. 旅行社的訂票量小于 10時,航空公司給

11、予 10%的折扣;訂票量大于或等于 10且小于20 時,航空公司給予 15%的折扣;訂票量大于或等于 20 且小于 30 時,航空公司給予 30%的折扣;訂票量大于或等于 30時,航空公司給予最高的 45%的折扣。編程輸入訂 票數(shù)及單機票票價,程序輸出折扣率及應付款額。/旅行社折扣#include<iostream.h>void main()int num,price;float discount,total_price;cout<<" 輸入購買數(shù)和單價: "cin>>num>>price;switch(num/10) cas

12、e 0: discount=0.1; break;case 1:discount=0.15;break;case 2: discount=0.3; break;default: discount=0.45;total_price=num*price*(1-discount);cout<<" 總價格為: "<<total_price<<endl;已閱,請放心食用6. 用戶輸入一個整數(shù)流(輸入 1000表示數(shù)據(jù)輸入結(jié)束) ,如4 1 13 0 6 -5 1 -1 7 -12 19 0 100 編寫程序統(tǒng)計輸入流中 -1、0 和+1 的個數(shù)。/

13、輸入數(shù)流#include<iostream.h>void main()int a100,i,j,x=0,y=0,z=0;cout<<" 輸入數(shù)流(以 1000 結(jié)束): "for(i=0;i+)cin>>ai; if(ai=1000) break;for(j=0;aj!=1000;j+)if(aj=-1) x+;if(aj=0) y+;if(aj=1) z+;cout<<" 該數(shù)流中含 -1: "<<x<<" 項 n"cout<<" 該數(shù)流中

14、含 0: "<<y<<" 項 n"cout<<" 該數(shù)流中含 1: "<<z<<" 項 n"已閱,請放心食用7. 編寫一個程序,求一個自然數(shù)中含有多少個 2的因子。如, 6含1個2的因子,8含 3 個 2 的因子, 11 不含 2 的因子。(提示,程序應檢查用戶輸入的合法性) 。 /求 2 因子文檔大全#include<iostream.h>void main()int x,i,n;docout<<" 輸入整數(shù) :"cin

15、>>x;while(x<=0);n=x;for(i=0;n%2=0;i+)n/=2;cout<<" 整數(shù) "<<x<<" 含有 "<<i<<" 個 2 因子 "<<endl; 已閱,請放心食用8. 編寫一個程序解決愛因斯坦臺階問題: 有人走以臺階,若以每步走 2 級則最后剩 1 級; 若每步走 3 級則最后剩 2 級;若以每步走 4 級則最后剩 3 級;若以每步走 5級則最后 剩 4 級;若以每步走 6 級則最后剩 5 級;若以每步走 7 級則最

16、后剛好不剩。問臺階共 有幾級?#include<iostream.h>void main()int i;for(i=0;i+) if(i%2=1&&i%3=2&&i%4=3&&i%5=4&&i%6=5&&i%7=0)break;cout<<" 最小可能值是: "<<i<<endl; 已閱,請放心食用9. 公雞 5 元 1 只,母雞 3 元 1 只,小雞 1 元 3 只,花了 100 元錢買 100 只雞,問公雞、 母雞、小雞各多少只?/百元買百雞#

17、include<iostream.h>void main()int cock,hen,chicken,price; for(cock=0;cock<=20;cock+) for(hen=0;hen<=33;hen+) chicken=100-cock-hen; if(chicken%3=0&&5*cock+3*hen+chicken/3=100)cout<<"公雞"<<cock<<""<<" 只,母雞"<<hen<<&quo

18、t;"<<"只,小雞"<<chicke*<"只 n"文檔大全 已閱,請放心食用10. 編程實現(xiàn)解決下述問題的算法:一位顧客在購物時,如果買4 個蘋果剩下 4角錢如果買 5 個蘋果則缺 5角錢,請問,該顧客帶了多少錢?多少錢可以頭一個蘋果?#include<iostream.h>void main()int money,money1,money2,i,m,n; for(i=1;i+) if(4+4*i=5*i-5) money=4+4*i; money1=money/10; money2=money-10

19、*money1; cout<<" 顧客帶了 "<<money1<<" 元 "<<money2<<" 角,蘋果價格為每個 "<<i<<" 角 n" break; 已閱,請放心食用11. 編寫程序計算 100 之可以被 13 整除的自然數(shù)之和。 #include<iostream.h> void main()int i,sum=0; for(i=1;i<=100;i+)if(i%13=0)sum+=i;cout<

20、<"100 以可以被 13 整除的自然數(shù)之和為: "<<sum<<endl; 已閱,請放心食用12. 鍵盤輸入m和n (10<m<n< 32000,求出mn間所有素數(shù)且按每行8個數(shù)形式輸出。/ 求 m 到 n 的素數(shù)#include<iostream.h> #include<iomanip.h> int f(int i)int l;for(l=2;l<i;l+) if(i%l=0) return 0;return 1;void main()int m,n,x,i,j;int k=0;docout&

21、lt;<"輸入 m,n (其中 10<m<n < 32000):" cin>>m>>n;while(m<=10|m>=n|n>32000);for(i=m;i<=n;i+)if(f(i)cout<<setw(6)<<i;k+;if(k%8=0)cout<<endl;cout<<endl;已閱,請放心食用13. 編寫程序打印乘法口訣表。 /打印乘法口訣表 #include<iostream.h>void main()int a,b,t;for(i

22、=1;i<=9;i+) for(j=1;j<=i;j+)cout<<i<<'*'<<j<<'='<<i*j<<"t" cout<<endl;已閱,請放心食用14. 編程實現(xiàn)求解最大公約數(shù)的歐幾里德算法,用戶輸入兩個任意正整數(shù),程序輸出他們 的最大公約數(shù)。算法如下:步驟1:如果p < q,則交換p和q。步驟 2:令 r 是 p / q 的余數(shù)。步驟 3: 如果 r = 0,則令 g = q 并終止;否則令 p = q, q = r 并轉(zhuǎn)向步驟

23、214./求最大公約數(shù)#include<iostream.h>void main()int p,q,r;cout<<" 輸入兩個整數(shù): "cin>>p>>q;if(p<q)r=q;q=p;p=r;r=p%q;while(r!=0)p=q;q=r;r=p%q;cout<<" 最大公約數(shù)是: "<<q<<endl;已閱,請放心食用15. 求不超過正整數(shù)n的2的最大幕值,如輸入17,程序應輸出4 (24=16<17)。#include<iostream.h&g

24、t;void main()int n,t=1,i;cout<<" 請輸入正整數(shù) n:"cin>>n;for(i=0;i+,t*=2)if(t>n)cout<<i-1<<"n"break;已閱,請放心食用16. 有關(guān)專家十分關(guān)注珠江漁業(yè)資源的問題。 目前珠江約有 8000 萬條魚,平均每年以 3.5%的速度減少。請編寫一個程序,計算在多少年之后魚的數(shù)目下降到目前的一半?多少年后下降到目前的十分之一?(提示注意整數(shù)類型的取值圍) 。#include<iostream.h>void main()

25、double fishnum=8e7,fish;int year;for(year=0,fish=fishnum;year+,fish*=0.965)if(fish<=4e7)cout<<"當魚的數(shù)目等于原來的一半時,需要"<<year<<"年n"break;for(year=0,fish=fishnum;year+,fish*=0.965)if(fish<=8e6)cout<<"當魚的數(shù)目等于原來的十分之一時,需要"<<year<<"年n&

26、quot;break;已閱,請放心食用a, b, c17. 編程求解一元二次方程 a?2?+bx+c=0 的根。要求:設計完備的測試數(shù)據(jù)集,考慮各種取值對根的影響/二次方程求解#include<iostream.h>#include<math.h>void main()float a,b,c,x1,x2,t;cout<<" 請輸入 a,b,c:"cin>>a>>b>>c;t=b*b-4*a*c;if(a=0&&b=0)cout<<" 根為一切實數(shù) n"el

27、se if(a=0)cout<<" 根為 "<<-c/b<<'n'else if(t<0)cout<<" 無根 n"else if(t=0)cout<<" 根為 "<<-b/(2*a)<<'n'else if(t>0)cout<<"根為"<<(-b+sqrt(t)/(2*a)<<"和"<<(-b-sqrt(t)/(2*a)

28、<<'n:已閱,請放心食用18. 編寫一個程序,輸入全班同學某門課考試成績,計算平均成績并找出其中最高分與最 低分。(提示:批量數(shù)據(jù)通常不事先規(guī)定輸入的數(shù)據(jù)數(shù)量,而是以一個特殊的標志作為 輸入結(jié)束。程序根據(jù)結(jié)束標志統(tǒng)計人數(shù))/班級分數(shù)#include<iostream.h>void main()int a100,i,max,min,s=0;cout<<" 輸入同學成績(以 1000 結(jié)束):"for(i=0;i+)cin>>ai;if(ai=1000)break;if(i=0)max=a0;min=a0;max=max

29、>ai?max:ai;min=min<ai?min:ai;s+=ai;cout<<" 該班同學成績中最高分為: "<<max<<"n"<<" 最低分為 "<<min<<"n"<<" 平均分為 "<<s/i<<"n"已閱,請放心食用19. 編一程序模擬整數(shù)加、減、乘、除四則運算。當你在鍵盤上輸入5+6后,程序?qū)⑤敵?=11,當你在鍵盤上輸入 11*7 后,程序

30、將輸出 =77。/模擬四則運算#include<iostream.h>void main()float a,b;char x;cout<<" 請輸入算式: "<<endl;cin>>a>>x>>b;if(x='+')cout<<"="<<a+b<<endl;else if(x='-')cout<<"="<<a-b<<e ndl;else if(x='*&

31、#39;)cout<<"="<<a*b<<e ndl;else if(x='/')cout<<"="<<a/b<<e ndl;elsecout<<"error!"<<e ndl;已閱,請放心食用20. 把一 1元鈔票換成1分、2分和5分的硬幣,每種至少有1枚,問有多少種換法?#in clude<iostream.h>void mai n()int i,j,k,m=0;for(i=1;i<=20;i+)for

32、(j=1;j<=50;j+)k=100-5*i-2*j;if(k>=1)m+=1;cout<<"i="<<i<<" "<<"j="<<j<<""<<"k="<<k<<e ndl;cout<<"共有"<<m<<"種結(jié)果 n"已閱,請放心食用21. 求自然對數(shù)底(e)的近似值。e的近似值計算公式為:11!1

33、2!1r(n 1)!當余項rn< £時停止計算。設& =1e-8#in clude<iostream.h>#i nclude<ioma nip.h>main ()int i;double temp=1,sum=0;for(i=1;temp>=1e_8;i+) sum+=temp; temp/=i;cout<<"e=1+1/1!+1 /2!+1/3!+.="<<setprecisio n(9)<<sum<<e ndl;(控制輸岀流顯示浮點數(shù)的有效數(shù)字個數(shù) )已閱,請放心食用7

34、22. S= i! =1!+2! + +7!#iriclude<iostream.h>void mai n()int sum=0,n=1,i;for(i=1;i<=7;i+)n *=i;sum+=n;cout<<sum<<e ndl;已閱,請放心食用23. S=1 X2 + 3 X4 + 5 X6 + +39 X40/求1X2 + 3X4 + 5X6+-+3 9X4 0#in clude<iostream.h>void mai n()int i,s=0;for(i=1;i<=39;i+=2)s+=i*(i+1);cout<<

35、;"結(jié)果是:"<<s<<endl;已閱,請放心食用24.X 3Y=X +3!x5 疋5!7!2n 1(2n1)!+的值,精確到10-6求值,精確到 10e-6#in clude<iostream.h>#in clude<math.h>void mai n()int i,x;cout<<"輸入整數(shù)x:"cin> >x;double temp=x,s=0;for(i=1;fabs(temp)>=1e_6;i+=2) s+=temp;temp=temp*(-x*x)/(float)(

36、i+1)*(i+2);cout<<" 結(jié)果是 :"<<s<<endl; 已閱,請放心食用25. 編制一個程序,讀入一個正整數(shù),并反向輸出。例如,讀入123,輸出是 321。25./反向輸出#include<iostream.h>#include<math.h>void main()int x,i,j;cout<<" 輸入整數(shù) x:"cin>>x;for(i=0;i+) if(x/(int)pow(10,i)=0)break;int a100;for(j=0;j<i;

37、j+) aj=(x%(int)pow(10,j+1)/(int)pow(10,j);cout<<" 反向輸出為: "for(int b=0;b<i;b+)cout<<ab; cout<<endl;/*#include<iostream.h>void main()int i;char x100;cout<<" 輸入整數(shù): "cin>>x;for(i=0;xi;)i+;cout<<" 反向輸出為: "for(i-=1;i>=0;i-) cout

38、<<int(xi-48);cout<<'n'*/已閱,請放心食用26. 水仙花數(shù)問題:水仙花數(shù)是一種三位數(shù),它的值等于每個數(shù)字的立方和。例如, 153=13+53+33。編程輸出小于 999 的水仙花數(shù)。/水仙花數(shù)#include<iostream.h>void main()int i,a,b,c;for(i=100;i<=999;i+)a=i/100;b=(i-100*a)/10;c=i-100*a-10*b;if(i=a*a*a+b*b*b+c*c*c)cout<<i<<endl;已閱,請放心食用27. 求一

39、整數(shù)的等差數(shù)列, 該數(shù)列滿足下述條件: 頭 4 項數(shù)的和值為 26,積值為 880。(提 示:該數(shù)列公差為正整數(shù), 否則數(shù)列將出現(xiàn)負數(shù); 該數(shù)列的首項必須小于 5,且其公差 也小于 5,否則頭四項數(shù)的和將大于 26。)/等差數(shù)列#include<iostream.h>void main()int k=1,d,a1,a2,a3,a4;bool b=false;for(k=1;k+)for(d=0;d<k;d+)a1=k-d;a2=2*k-d;a3=3*k-d;a4=4*k-d;if(a1+a2+a3+a4=26&&a1*a2*a3*a4=880)cout<

40、<" 該數(shù)列通項為: an="<<k<<"n-"<<d<<endl;b=true;break;if(b) break;已閱,請放心食用28. 完數(shù)問題:若有一數(shù),其值等于它的因子之和,則該數(shù)稱為完數(shù)。例如, 6 的因子為1、2、3,而 6=1+2+3,故 6 是完數(shù)。編程輸出 1000 之的所有完數(shù)及其因子。/完數(shù)問題#include<iostream.h>void main()int i,s,j;for(i=1;i<=1000;i+)s=1;for(j=2;j<i;j+)if

41、(i%j)=0)s=s+j;if(i=s) cout<<i<<'n'已閱,請放心食用29. 100匹馬馱 100擔貨,大馬一匹馱 3擔,中馬一匹馱 2擔,小馬 2匹馱 1擔。試編程 計算大、中、小馬的數(shù)目。#include<iostream.h>void main()int a,b,c;for(a=0;a<=100;a+=2)for(b=0;b<=100;b+)c=100-a-b;if(3*c+2*b+c/2)=100&&c>0)cout<<" 大馬 "<<c<

42、;<" 匹,中馬 "<<b<<" 匹,小馬 "<<a<<" 匹 n"已閱,請放心食用30. 編程產(chǎn)生出1到10以的所有數(shù)對<i,j>并輸出,其中i>j。/輸出數(shù)對#include<iostream.h>void main()int i,j;for(i=1;i<10;i+)for(j=1;j<10;j+)if(i>j)cout<<'<'<<i<<','<&l

43、t;j<<'>'<<" "cout<<'n'已閱,請放心食用31. 編程求出 1000 以的所有符合如下條件的數(shù): 其高位數(shù)字小于低位數(shù)字 但 21,548 不符合條件。/輸出數(shù)#include<iostream.h>void main()int i,a,b,c;for(i=1;i<1000;i+)a=i/100;b=i/10-a*10;c=i-a*100-b*10;if(a=0&&b<c&&b!=0)cout<<i<<&

44、quot; "else if(a!=0&&a<b&&b<c) cout<<i<<" "cout<<'n'已閱,請放心食用32. 求任一整數(shù) N 的標準分解式,即素數(shù)因子之積。例如 16=2*2*2*2 , #include<iostream.h> void main()int N,i;cout<<" 輸入 N: "cin>>N;cout<<N<<"="for(i=2;i&

45、lt;=N;)if(N%i=0) cout<<i<<"*" N/=i;elsei+;cout<<N<<endl;如 12 ,238 等。15=3*5。已閱,請放心食用33. 斐波那契( Fibonacci )數(shù)列問題: Fibonacci 數(shù)列遞歸定義為: x0=0, x1=1,Xi+i=Xi+X/ , i=2,3,20 項即從第二項開始,數(shù)列中的每一個元素等于前面兩個元素之和。編程輸出前 Fibonacci 數(shù)。(提示可以用遞歸或迭代兩種方式編程)/斐波那契( Fibonacci )數(shù)列問題 #include<iost

46、ream.h> int f(int i)int r; if(i=0|i=1) r=1;elser=f(i-1)+f(i-2);return r;void main()int n,r,m=0; for(n=0;n<20;n+)r=f(n); cout<<r<<" " 已閱,請放心食用34. 打印下面圖形。11 3 11 3 5 3 11 3 5 7 5 3 11 3 5 7 9 7 5 3 113213 1#include<iostream.h>#include<iomanip.h>void main() int x

47、,y,z,i; for(x=1;x<=11;x+) for(i=1;i<=(11-x)*3;i+)/ 打印空格(每個數(shù)字占 2 格,數(shù)字與數(shù)字之間 1 格) cout<<" "for(y=1;y<=(2*x-1);y+=2)/ 打印輝三角左側(cè) cout<<setw(2)<<y<<" "for(z=(2*x-3);z>0;z-=2)/ 打印輝三角右側(cè) cout<<setw(2)<<z<<" "cout<<"n

48、"已閱,請放心食用35. 打印如下圖形ABCDEBCDEACDEABDEABCEABCD#include<iostream.h>void main()char a5='A','B','C','D','E',i,j,x;for(i=0;i<=4;i+)for(j=i;j<=4;j+) cout<<aj<<" "for(x=0;x<i;x+) cout<<ax<<" "cout<<

49、endl; 已閱,請放心食用36. 正讀和反讀都一樣的數(shù)稱為回文數(shù)。編寫程序輸入一個整數(shù)max_num,輸出從0到max_num 中用二進制表示和十進制表示都是回文數(shù)的整數(shù)。 定義一個函數(shù) is_circle_num()判斷一個數(shù)(number)在某個進制(radius)下是否為回文數(shù)。例如,整 文檔大全數(shù) 313 就是該程序輸出的一個數(shù),因為它的二進制表示為10011001。#include<iostream.h>#include<iomanip.h>static int is_circle_num(int number,int radius);int main()i

50、nt num,max_num;cout<<" 輸入一個整數(shù)(如 1200): "cin>>max_num; for(num=0;num<max_num;num+) if(is_circle_num(num,10)=1&&is_circle_num(num,2)=1) cout<<setw(6)<<num;cout<<" 是十進制和二進制回文數(shù) n"return 0;int is_circle_num(int number,int radius)int left_num,ri

51、ght_num;int max_power,left_power,right_power;max_power=1;while(max_power<=number/radius)max_power*=radius;left_power=max_power;right_power=radius; while(right_power<=left_power) right_num=(number%right_power)/(right_power/radius); left_num=(number/left_power)%radius;if(right_num!=left_num)retu

52、rn 0; right_power=right_power*radius; left_power=left_power/radius;return 1;已閱,請放心食用void37. 編寫一個遞歸函數(shù): 將一個整數(shù)轉(zhuǎn)換為相應的字符串并輸出, 函數(shù)原型可聲明為: int2str(int number)。#include<iostream.h>void int2str(int number)int a;if(number=0) return;a=number%10;int2str(number/10);cout<<char(a+48)<<" "

53、;void main()int num;cout<<" 輸入一個整數(shù) :"cin>>num ;if(num<0) num=-num; cout<<'-'else if(num=0) cout<<char(48);int2str( num ) ;cout<< endl ; 已閱,請放心食用38. 用函數(shù)實現(xiàn)將一個以字符串形式表示的十六進制數(shù)轉(zhuǎn)換為一個十進制整數(shù)。例如,輸 入” A2轉(zhuǎn)換為162。#include <iostream.h>int turn(char ch)int i,n

54、um=0;for(i=0;chi;i+) if(chi>='A'&&chi<='F') num=16*num+chi-'A'+10;else if(chi>='0'&&chi<='9')num=16*num+chi-'0'return num;void main()char ch100;cout<<" 請輸入一個 16 進制數(shù): "cin>>ch;cout<<" 這個數(shù)的 10

55、進制是 : "<<turn(ch)<<'n' 已閱,請放心食用39. 編寫一個將十進制整數(shù)轉(zhuǎn)換為十六進制字符串的函數(shù)。#include <iostream.h>void turn(int x)int t;if(x=0)return;t=x%16;turn(x/16); if(t>=0&&t<=9) cout<<char(t+48);else if(t>=10&&t<=15) cout<<char(t+55);void main()int x;cout&l

56、t;<" 請輸入一個 10 進制數(shù): "cin>>x;cout<<" 這個數(shù)的 16 進制是 :"turn(x);cout<<'n' 已閱,請放心食用40. 編寫出判斷一個整數(shù)是否為素數(shù)的函數(shù), 并求出在 2000 以的有十個以上的所有連續(xù)的 非素數(shù)組。/輸出十個以上的所有連續(xù)的非素數(shù)組#include<iostream.h>#include<math.h>int f(int n)int i;for(i=2;i<n;i+)if(n%i=0)return 0;retur

57、n 1;void main()int m,i,j,h;for(m=2;m<=2000;m+)h=0;if(f(m)=1)for(i=1;i+)if(!f(m+i&&(m+i<=2000)h+;elsebreak;if(h>=10)for(j=1;j<=h;j+) cout<<m+j<<" " cout<<"n"m+=h;已閱,請放心食用41. 編制一個程序,統(tǒng)計從標準輸入設備上輸入的字符流 (以?結(jié)束)中每個英文字母 (大小 寫不分開計)出現(xiàn)的次數(shù)。#include<ios

58、tream.h>void main()int n26=0,i;char ch;do cin>>ch;if(ch>='A'&&ch<='Z')nch-'A'+;if(ch>='a'&&ch<='z')nch-'a'+; while(ch!='?');for(i=0; i<26; i+)if(ni) cout<<char(i+'A')<<':'<&

59、lt;ni<<'t' cout<<endl;已閱,請放心食用42. 編程實現(xiàn)“冒泡排序算法” ,將輸入的若干整數(shù)由小到大(升序)排序輸出。要求定義文檔大全一個排序函數(shù),其原型是 void bubble(int data, int length) 。#include <iostream.h>void bubble(int data, int length)int i,temp,n;for(i=0;i<length;i+)temp=datai;n=i-1;while(n>-1&&datan>temp)datan+

60、1=datan;n-;datan+1=temp;cout<<" 排序后為: "for(i=0;i<length;i+)cout<<datai<<" "cout<<endl;int main()int *a,n,i;cout<<" 需要排序的整數(shù)個數(shù): "cin>>n;a=new intn;for(i=0;i<n;i+)cout<<"NO."<<i+1<<":"cin>&g

61、t;ai;bubble(a,n); 已閱,請放心食用43. 給定含有m+n個元素的整型數(shù)組A (其中m>0, n>0),它分為兩個互不重疊的,長度 分別為m和n的子數(shù)組段,寫出交換這兩個子數(shù)組段的程序,要求不引入數(shù)組A以外的數(shù)組,但可引入若干中間變量。*1#include<iostream.h>void main()int a100,m,n,i,l,t;cin>>m>>n;for(i=0;i<m+n;i+) cin>>ai;for(i=m-1;i>=0;i-)t=ai; for(l=0;l<n;l+) ai+l=ai

62、+l+1;ai+n=t;for(i=0;i<m+n;i+) cout<<ai<<" "cout<<endl;*2#include<iostream.h>void main()int a100,m,n,t,i,l; cin>>m>>n;for(i=0;i<m+n;i+) cin>>ai;for(i=m;i<m+n;i+)t=ai; for(l=0;l<m;l+) ai-l=ai-l-1;ai-m=t;for(i=0;i<m+n;i+) cout<<ai

63、<<" "cout<<endl;已閱,請放心食用44. 用數(shù)組存儲數(shù)據(jù),實現(xiàn)篩選法求素數(shù)問題的求解。 要求求出 2到 1000之間的所有素數(shù)篩選法求出2N間的所有素數(shù)的方法是:首先將這些數(shù)全部放入一個數(shù)組中,然后重復 下面的操作直到數(shù)組為空為止:a. 找出其中的最小數(shù)K,則K 一定是一個素數(shù),因此可輸出b. 從數(shù)組中刪除K及其所有倍數(shù)。#include<iostream.h>#include<iomanip.h>void main()int a2000,b2000,i,l,count=0;for(i=0;i<=1999;

64、i+)ai=0;for(i=2;i<=1999;i+)if(ai=0)bcount=i;for(l=i;l<=1999;l+=i)al=1;count+;for(i=0;i<=count-1;i+)cout<<setw(5)<<bi;if(i+1)%24=0)cout<<'n'cout<<endl;已閱,請放心食用45. 編程實現(xiàn)二分查找算法。二分(折半)查找(搜索)算法如下:數(shù)組 a 中的 n 個數(shù)從大到小(降序)的順序排列,要檢索一個數(shù) x 是否在 a 中, 折半查找算法的思路是:設查找區(qū)間為lower, u

65、pper,初值lower=0, upper= n-1;算法步驟:(1 )輸入數(shù)組 a 的元素及 x;(2)x 是否為 a 的第一或最后一個元素。若是其中之一,算法結(jié)束;(3)將區(qū)間兩等分為lower, mid和mid, upper, mid為區(qū)間中點,每次取出中間項進行 檢查,若x=amid,x被檢索到,算法結(jié)束;若x<amid,則在后半?yún)^(qū)間mid, upper重 復折半檢索;若x>amid,則在前半?yún)^(qū)間lower, mid重復折半檢索。反復執(zhí)行上述步驟, 使lower和upper相等或相差1 (表示未檢索到 x),或amid=x。#include<iostream.h>int f(int a,int lower,int upper,int x)while(lower<=upper)int mid=(lower+upper)/2;if(amid>x)upper=mid-1;else if(amid<x)lower=mid+1;elsereturn mid+1;return 0;void main()int a10,i,n,temp,x,l,t;cout<<" 輸入 10 個不同的數(shù)字 n" for(l=0;l<=9;l+)cout<<"NO."<

溫馨提示

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

評論

0/150

提交評論