中南大學(xué)C++程序的設(shè)計(jì)實(shí)踐思考題答案_第1頁
中南大學(xué)C++程序的設(shè)計(jì)實(shí)踐思考題答案_第2頁
中南大學(xué)C++程序的設(shè)計(jì)實(shí)踐思考題答案_第3頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)1C+艮底6 .編寫程序,輸入某大寫字母的ASCII碼值,輸出該字母的對(duì)應(yīng)小寫字母。#in clude<iostream>using n amespace std;int mai n()int i;cin> >i;if(i>=65 && 1<=90 )cout<<char(i - 'A'+'a')<<e ndl;elsecout<<"輸入有誤"<<endl;return 0;實(shí)驗(yàn)2三、實(shí)驗(yàn)思考1. 輸入直角三角形的兩條直角邊長(zhǎng),調(diào)用平方根庫

2、函數(shù)sqrt來求斜邊的長(zhǎng)度#in clude<iostream>#in clude<cmath>using n amespace std;int mai n() float a,b,c;cout<<"請(qǐng)輸入直角三角形的兩條邊長(zhǎng):"cin> >a»b;c=sqrt(a*a+b*b);cout<<" 直角三角形的斜邊="<<c<<e ndl;return 0;2. 從鍵盤輸入一個(gè)字符,如果輸入的是英文大寫字母,那么將它轉(zhuǎn)換成小寫字母后輸出,否那么輸出原來輸入的字符。

3、#in clude<iostream>using n amespace std;int mai n()char c;cout<<" 請(qǐng)輸入一個(gè)字符: "cin>>c;if(c>='A'&& c<='Z') c+='a'-'A'cout<<c<<endl;return 0;failed3輸入一個(gè)學(xué)生的成績(jī),如高于60 分,那么輸出“ pass ;否那么,輸出“#include<iostream> using nam

4、espace std;int main()float grade;cout<<" 請(qǐng)輸入成績(jī): "cin>>grade;if(grade>=60)cout<<"pass"<<endl;elsecout<<"failed"return 0;4. 計(jì)算分段函數(shù)#include <iostream>#include <cmath>using namespace std;int main()double x,y;cout<<" 請(qǐng)輸

5、入一個(gè)數(shù) x:"cin>>x;if(!x)y=cos(x)-pow(x,2)+3*x;elsey=sin(x)+sqrt(pow(x,2)+1)+3*x;cout<<"y="<<y<<endl;return 0;5. 從鍵盤上輸入17之間的一個(gè)數(shù)字,輸出其對(duì)應(yīng)星期幾的英文表示。#in elude <iostream>using n amespace std;int mai n()char c;cout<<"E nter a character of nu mbers betwee n

6、 1 and 7 :"cin> >c;switch(c)case '1':cout<<" Mon day"break;case 2:cout<<"Tuesdag"break;case 3:cout<<"We nesday"break;case '4':cout<<"Thursday"break;case '5':cout<<"Friday"break;case 

7、9;6':cout<<"Saturday"break;case '7':cout<<"S un day"break;default: cout<<" wrong nu mber"cout<<e ndl;return 0;6. 設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器程序,能夠進(jìn)展加、減、乘、除簡(jiǎn)單運(yùn)算并顯示結(jié)果。#in clude <iostream>using n amespace std;int mai n()cout<<"輸入簡(jiǎn)單的算術(shù)表達(dá)式:

8、(數(shù) 操作符 數(shù))"in t leftOpera nd,rightOpera nd;char Operator;cin> >leftOpera nd>>Operator>>rightOpera nd;int result;switch(Operator)case '+':result=leftOpera nd+rightOpera nd;break;case '-':result=leftOpera nd-rightOpera nd;break;caseresult=leftOpera nd*rightOpera n

9、d;break;case '/':if(rightOpera nd!=O)result=leftOpera nd/rightOpera nd;elsecout<<"除數(shù)為0,除法不能進(jìn)展"<<endl;return 0;break;default:cout<<Operator<<"是本程序不支持的操作。"<<e ndl;return 0;cout<<leftOpera nd<<Operator<<rightOpera nd<<

10、9;='<<result<<e ndl; return 0;實(shí)驗(yàn)3三、思考題參考程序k21 .編程計(jì)算表達(dá)式n k 1的值。#in clude <iostream>using n amespace std;int mai n()int n, k=1,sum=0,mea n;cout<<"請(qǐng)輸入n的值:"cin»n;while(k<=n)sum+= k*k;k+;if (n >0)mean=sum/n;elsemean=0;cout<<"1n個(gè)整數(shù)平方和的均值 ="&

11、lt;<mean<<endl; return 0;2 輸入兩個(gè)正整數(shù),判別它們是否互為互質(zhì)數(shù)。所謂互質(zhì)數(shù),就是最大公約數(shù)是1。#in elude <iostream>using n amespace std;int mai n()int m,n,r;cout<<" 請(qǐng)輸入兩個(gè)正整數(shù):"cin»m»n;cout<<m<< ”和” <<n;if(m<n) r=m ;m=n;n=r;while(r=m% n)m=n;n=r;if(n=1)cout<<"是互

12、質(zhì)數(shù)"<<endl;elsecout<< ”不是互質(zhì)數(shù)”<<endl;return 0;3 .編寫程序,輸出從公元 2000年至3000年間所有閏年的年號(hào)。#in clude <iostream>using n amespace std;int mai n()int year;cout<<" 公元2000年至3000年間閏年的年號(hào):n"for(year=2000;year<=3000;year+)if(year%4=0 && year%100 !=0)|(year%400=0)cou

13、t<<year<<'t'cout<<e ndl;return 0;4 編寫程序模擬猴子吃桃子問題:猴子第 1天摘下假設(shè)干桃子,當(dāng)即吃了一半,還不過 癮,又多吃了一個(gè)。 第 2 天將剩下的桃子又吃了一半, 又多吃一個(gè)。 以后每天都吃了前一天剩 下的一半零 1 個(gè)。到了第 10 天,只剩下了一個(gè)桃子。請(qǐng)問猴子第一天共摘了多少個(gè)桃子? 方法 1:#include <iostream> using namespace std;int main()int day,qian,hou=1; for(day=9;day>=1;day-) q

14、ian=(hou+1)*2; hou=qian;cout<<qian<<endl;return 0;運(yùn)行結(jié)果: 1534方法 2:#include <iostream> using namespace std;int main()int day,number=1; for(day=9;day>=1;day-) number=(number+1)*2;cout<<number<<endl;return 0; 方法 3: #include <iostream> using namespace std; int peach

15、(int); int main() cout<<" 第 1 天共摘了 "<<peach(1)<<" 個(gè) "<<endl;return 0; int peach(int day) int nu mber;if(day=10)nu mber=1;elsenu mber=2*(peach(day+1)+1);retur n nu mber;5 .計(jì)算 s=1+ 1+2+ 1+2+3+ 1+2+3+4+ + 1+2+3+ +n的值。 方法1:#in clude <iostream>using n ame

16、space std;int mai n()int i,j, n;long int sum,total(0);cout<<"i nput n:"cin»n;for(i=1;i<=n ;i+)sum=0;for(j=1;j<=i;j+)sum+=j;total+=sum;cout<<"s="<<total<<e ndl;return 0;#in clude <iostream>using n amespace std;int mai n()int i,n;long int su

17、m(0),total(0);cout<<"i nput n:"cin»n;for(i=1;i<=n ;i+)sum+=i;total+=sum;cout<<"s="<<total<<endl;return 0;6馬克思曾經(jīng)做過這樣一道趣味數(shù)學(xué)題:有 30 個(gè)人在一家小飯館用餐,其中有男人、 女人和小孩。每個(gè)男人花了 3 先令,每個(gè)女人花了 2 先令,每個(gè)小孩花了 1 先令,一共花了 50 先令。請(qǐng)問男人、女人以與小孩各有幾個(gè)人 ?#include <iostream>using

18、namespace std;int main()int x,y,z;for(x=1;x<=16;x+)for(y=1;y<=24;y+)z=30-x-y;if(3*x+2*y+z=50)cout<<"Men are "<<x<<",women are "<<y <<",children are "<<z<<"."<<endl;return 0; 實(shí)驗(yàn) 4 常用程序設(shè)計(jì)算法三、實(shí)驗(yàn)思考1 .讀入一個(gè)整數(shù) N,假

19、設(shè)N為非負(fù)數(shù),那么計(jì)算N到2X N之間的整數(shù)和;假設(shè)N為負(fù)數(shù), 那么求2 x N到N之間的整數(shù)和。分別利用for和while寫出兩個(gè)程序。#include<iostream>using namespace std;int main()int N;cin>>N;int i=N;long sum=0;if(N>=0)for(;i<=2*N;i+)sum+=i; elsefor(;i>=2*N;i-) sum+=i;cout<<sum<<e ndl; return 0;#in clude<iostream> using n

20、 amespace std;int mai n()int N; cin>>N;int i=N;long sum=0; if(N>=0) while(i<=2*N) sum+=i; i+;else while(i>=2*N) sum+=i; i-; cout<<sum<<e ndl; return 0;2設(shè)s 1 - 丄,求與8最接近的s的值與與之對(duì)應(yīng)的 n值。2 3 n#in clude<iostream>using n amespace std;int mai n()float s=1.0;int n=1;do+n;s+=1.

21、0/n;while(s<=8);if(s-8)>(8-(s-1.0/n)cout<<"s="<<s-1.0/n<<' '<<" n="<< n-1<<e ndl;elsecout<<"s="<<s<<' '<<" n="<<n<<en dl;return 0;3 A >B>C 且A+B+C<1O0求滿足 丄 丄

22、丄 的共有多少組。”2r 2小 2ABC#in clude <iostream>using n amespace std;int mai n()int A,B,C;int coun t=0;for(C=0;C!=33;+C )for(B=100; B>C;-B )for(A=100; A>B; -A)if(A + B + C < 100) && (A * A * B * B) = (A * A + B * B) *C * C)cout << A << ' ' << B << '

23、 ' << C << endl;+ count;cout << "co un t is:" << count << en dl;return 0;4 一司機(jī)出車禍后駕車逃離現(xiàn)場(chǎng),第一位目擊者記得車牌號(hào)前兩位數(shù)字一樣,且后兩位 數(shù)字也一樣;第二位目擊者是一位數(shù)學(xué)家,他看出車牌號(hào)是四位完全平方數(shù)。試推算肇事車的車牌號(hào)。#in clude<iostream>using n amespace std;int mai n()int n,i;for(i=32;i<100;i+)n=i*i;if(n%1

24、0 = n%100/10 && n/1000 = n/100%10) cout< <n<<en dl;return 0;5編程驗(yàn)證“四方定理:所有自然數(shù)至多只要用4 個(gè)數(shù)的平方和就可以表示。#include<iostream> using namespace std;int main()int number,i,j,k,l;cout<<"Please enter a number:" cin>>number;for(i=1;i<number/2;i+) for(j=0;j<=i;j+)

25、for(k=0;k<=j;k+) for(l=0;l<=k;l+) if(number=i*i+j*j+k*k+l*l) cout<<number<<"="<<i<<"*"<<i<<"+"<<j<<"*"<<j<<"+"<<k<<"*"<<k<<"+"<<l<&

26、lt;"*"<<l <<endl;exit(0);return 0;6編程驗(yàn)證“角谷猜測(cè):任給一個(gè)自然數(shù),假設(shè)為偶數(shù)那么除以2,假設(shè)為奇數(shù)那么乘 3 加 1 ,得到一個(gè)新的自然數(shù),然后按同樣的方法繼續(xù)運(yùn)算,假設(shè)干次運(yùn)算后得到的結(jié)果必 然為 1。#include<iostream>using namespace std;int main()int n,flag;flag=1;cout<<"please input n:"<<endl;cin>>n;while(flag) if(n%2=

27、0) n=n/2;elsen=n*3+1;if(n=1)flag=O;cout<<"success!"<<e ndl;return 0;實(shí)驗(yàn)5函數(shù)和編譯預(yù)處理三、實(shí)驗(yàn)思考1. 參考程序如下:#in clude <iostream>using n amespace std;long int Fib on acci (int n);void mai n()int i;long int t,t1;cout<<"please in put t:"<<e ndl;cin >>t;for (i=

28、2;i+)t1=Fib on acci(i);if (t1>t) cout<< "min Fib on acci="<<t1<<e ndl;break;long int Fib on acci (int n)if (n=0) retur n 1;else if (n=1) retur n 1;else retur n Fib on acc i(n-1)+Fib on acc i(n-2);2. 參考程序如下:#in clude <iostream>using n amespace std;int num_n(int n,

29、int a) /由n個(gè)a組成的多位數(shù)的計(jì)算if (n=1) return a;else return num_n(n-1,a)*10+a;void main()int i,n;long int sum=0; cout<<"please input n:"<<endl; cin>>n;for (i=1;i<=n;i+) cout<<num_n(i,2)<<endl;sum+=num_n(i,2);cout<<"n="<<n<<":sum=&quo

30、t;<<sum<<endl;3. 參考程序如下:#include <iostream> using namespace std;int isprime(int n) / 判斷 n 是否為素?cái)?shù)的函數(shù)int i;for (i=2;i<n-1;i+)if (n%i=0) return 0;/非素?cái)?shù),函數(shù)值返回 0return 1;/ 素?cái)?shù),函數(shù)值返回 1void main()int i,min_prime,max_prime;for (i=1000;i<=2000;i+) if(isprime(i)=1)cout<<" 最小素?cái)?shù)

31、="<<i<<endl; break;for (i=2000;i>=1000;i-) if(isprime(i)=1)cout<<" 最大素?cái)?shù) ="<<i<<endl; break;4. 參考程序如下: #include <iostream>using n amespace std;int sum(i nt n)static s=0;s=s+n;return s;void mai n()int i, n ,s;cout<<"情指定 n:"cin»

32、n;for (i=1;i<=n ;i+)s=sum(i);cout<<"1n 之禾口 ="<<s<<endl;5. 參考程序如下:#in clude <iostream>using n amespace std;int is_h(int n) /判斷參數(shù)n是否為回文n的倒序數(shù)int i,m,fn;/i用來記錄n的某一位數(shù)字,m初值為n,fn用于記錄m=n;fn=0;while(m!=0)i=(m%10);fn=(fn*10+i);m=m/10;if(fn=n) return 1; /是回文數(shù)返回1else return

33、0; /不是回文數(shù)返回 0void mai n()int i;int t; cin> >t;for (i=1;i<=t;i+)if (is_h(i)=1) cout<<" 回文數(shù) :"<<i<<endl;6. 參考程序如下:#include <iostream> using namespace std;#define X (a+b)/2#define AREA X*hvoid main()float a,b,h,s;cout<<" 請(qǐng)分別輸入 a,b,h 的值,用空格分隔! "

34、<<endl; cin>>a>>b>>h;s=AREA; cout<<AREA<<endl;實(shí)驗(yàn)六 數(shù)組三、實(shí)驗(yàn)思考題參考源代碼思考題 1. shi_6_3_1.cpp#include <iostream.h>#define N 5int lookup(int ,int ,int ); / 函數(shù)說明 void main() int i, aN,index,yLooked;cout<<" 請(qǐng)輸入 N(=5) 個(gè)整數(shù): "<<endl; for(i=0;i<N;i+

35、) cin>>ai;cout<<" 請(qǐng)輸入您要找的整數(shù): "<<endl; cin>>yLooked;index=lookup(a,N,yLooked); / 函數(shù)調(diào)用 if(index!=-1)cout<<" 您要找的數(shù)下標(biāo)為: "<<index<<endl; elsecout<<" 沒有找到 "<<yLooked<<endl;cout<<"n使用本程序,再見!"<<e

36、ndl;cin .get();cin .get();int lookup( int x,i nt n,i nt y) /函數(shù)定義int flag=-1; /首先假設(shè)找不到int i;for(i=0;i <n ;i+)if(xi=y)flag=i;break; /找到了那么不必再往后找retur n flag;思考題 2. shi_6_3_2.cpp#in clude <iostream.h>#defi ne N 5int max(i nt ,i nt );/void mai n() int i, aN,xMax;cout<<"請(qǐng)輸入N(=5)個(gè)整數(shù): f

37、or(i=0;i<N;i+) cin> >ai;函數(shù)說明"<<e ndl;xMax=max(a,N);cout<<"數(shù)組中最大的的整數(shù):cout<<"n 使用本程序,再見!"<<e ndl; ci n. get();ci n. get();"<<xMax<<e ndl;int max(i nt x,i nt n) int i,r=x0;/for(i=1;i <n ;i+) / if(xi>r) r=xi; / return r; / r 首先假

38、設(shè)x0 最大,且存于r中也可寫成 for(i=0;i<n;i+)發(fā)現(xiàn)了更大的那么修改r中存有最大元素的值思考題 3. shi_6_3_3.cpp#include <iostream.h>#define N 5void invert(int ,int); / 函數(shù)說明 void main() int i, aN;cout<<" 請(qǐng)輸入 N(=5) 個(gè)整數(shù): "<<endl; for(i=0;i<N;i+) cin>>ai;invert(a,N);cout<<"n 這些數(shù) 逆序輸出如下: n&qu

39、ot;<<endl; for(i=0;i<N;i+) cout<<ai<<" "cout<<"n 使用本程序,再見 !"<<endl; cin.get();cin.get();void invert(int x,int n)int i=0, j=n-1,t; / while(i<j)t=xi; xi=xj; xj=t; i+;j-;return;思考題 4. shi_6_3_4.cpp#include <iostream.h>#define M 3 /M#define N

40、 4 /Nvoid main()int numMN; /=1,6,9, 3,5,4, 2,7,8;int i,j,it,itt, t,jt,exist=0;cout<<" 請(qǐng)輸入 3 行 4 列 的 二維 數(shù)組: " <<endl;for (i=0;i<M;+i)for (j=0;j<N;+j) cin»nu mij;for (i=0;i<M;+i) t=numi0; jt=0;for (j=0;j<N;+j)if ( t<numij) t=numij, jt=j; itt=i;for(it=0;it<M

41、;+it)if ( t>numitjt) t=numitjt, itt=it; if (i=itt) exist=1;break;if (exist) cout<<" 鞍點(diǎn)為"<<t<<endl; else cout<<" 無鞍點(diǎn)"<<endl;cout<<"n 使用本程序,再見!"<<e ndl;ci n. get();ci n. get();思考題 5. shi_6_3_5.cpp改正:題目中添加3字N個(gè)數(shù)在5 對(duì)數(shù)組A中的N個(gè)整數(shù)從小到大進(jìn)

42、展連續(xù)編號(hào),要求不能改變這 數(shù)組A中的存放順序,且一樣的數(shù)編號(hào)也一樣。例如,假設(shè)數(shù)組A中數(shù)為(5,3, 4, 7, 3, 5, 6),那么輸出為(3 , 1, 2, 5, 1, 3, 4)。分析:采用3個(gè)數(shù)組,它們?cè)刂岛x如下:5347356a0-*a1尹a2a3*a4*a5a6fA1420563b0b1b2b3 Ib4b5b63125134c1c2c3c4c5c6厠一 *abOw ab1 w、w abN-1b的初始值0123456b0b1b2b3b4b5b6a、b、c數(shù)組元素值含義示意圖#define N 7#i nclude <iostream>#in clude <i

43、oma nip>using n amespace std;int main()int i,j,t,k,ik;int aN,bN,cN; cout<<"please in put N nu mbers:"«e ndl;for (i=0;i<N;i+)cin>>ai;/從鍵盤上輸入N個(gè)元素,a0保存第一個(gè)數(shù)據(jù)cout<<"a數(shù)組各元素的值:"<<'n'for(i=0;i<N;i+)cout<<setw(6)<<ai;cout«e ndl;for (i=0;i<N;i+) bi=i;for (i=0;i<N-1;i+) / 排序,使 a b0 wab1 w、.、wa bN-1 k=i; /每輪選擇過程開始時(shí)假定a bi最小,將下標(biāo)i保存在k中for (j=i+1;j<N;j+)abk與 abi后面的元素逐個(gè)比擬if (abk>abj) k=j; /假設(shè)發(fā)現(xiàn)某個(gè) abj 小于 abk,那么將k修改為jif (k!=i) t=bi; bi=bk; bk=t; cout«"b數(shù)組各元素的值:"'n'for(i=0;i<

溫馨提示

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

評(píng)論

0/150

提交評(píng)論