C++程序設計實踐教程思考題答案_第1頁
C++程序設計實踐教程思考題答案_第2頁
C++程序設計實踐教程思考題答案_第3頁
C++程序設計實踐教程思考題答案_第4頁
C++程序設計實踐教程思考題答案_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗1 C+基礎6編寫程序,輸入某大寫字母的ASCII碼值,輸出該字母的對應小寫字母。#include<iostream>using namespace std;int main()int i;cin>>i;if(i>=65 && 1<=90 )cout<<char(i-'A'+'a')<<endl;elsecout<<"輸入有誤"<<endl; return 0;實驗2三、實驗思考1.輸入直角三角形的兩條直角邊長,調用平方根庫函數sqrt來求

2、斜邊的長度#include<iostream>#include<cmath>using namespace std;int main() float a,b,c;cout<<"請輸入直角三角形的兩條邊長:"cin>>a>>b;c=sqrt(a*a+b*b);cout<<"直角三角形的斜邊="<<c<<endl;return 0;2從鍵盤輸入一個字符,如果輸入的是英文大寫字母,則將它轉換成小寫字母后輸出,否則輸出原來輸入的字符。#include<iostr

3、eam>using namespace std;int main()char c;1cout<<"請輸入一個字符:"cin>>c;if(c>='A'&& c<='Z')c+='a'-'A'cout<<c<<endl;return 0;3輸入一個學生的成績,如高于60分,則輸出“pass”;否則,輸出“failed”。 #include<iostream>using namespace std;int main()flo

4、at grade;cout<<"請輸入成績:"cin>>grade;if(grade>=60)cout<<"pass"<<endl;elsecout<<"failed"return 0;4. 計算分段函數#include <iostream>#include <cmath>using namespace std;int main()double x,y;cout<<"請輸入一個數x:"cin>>x;if

5、(!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;25. 從鍵盤上輸入17之間的一個數字,輸出其對應星期幾的英文表示。 #include <iostream>using namespace std;int main()char c;cout<<"Enter a character of numbers between 1 and 7 :"cin>>c;swi

6、tch(c)case '1':cout<<"Monday"break;case '2':cout<<"Tuesdag"break;case '3':cout<<"Wenesday"break;case '4':cout<<"Thursday"break;case '5':cout<<"Friday"break;case '6':cout<

7、;<"Saturday"break;case '7':cout<<"Sunday"break;default: cout<<" wrong number"cout<<endl;return 0;6. 設計一個簡單的計算器程序,能夠進行加、減、乘、除簡單運算并顯示結果。 #include <iostream>using namespace std;int main()cout<<"輸入簡單的算術表達式:(數 操作符 數)"int lef

8、tOperand,rightOperand;char Operator;cin>>leftOperand>>Operator>>rightOperand;int result;switch(Operator)case '+':result=leftOperand+rightOperand;break;case '-':result=leftOperand-rightOperand;break;case '*':3result=leftOperand*rightOperand;break;case '/&

9、#39;:if(rightOperand!=0)result=leftOperand/rightOperand;elsecout<<"除數為0,除法不能進行"<<endl;return 0;break;default:cout<<Operator<<"是本程序不支持的操作。"<<endl; return 0;cout<<leftOperand<<Operator<<rightOperand<<'='<<result<

10、;<endl; return 0;實驗3三、思考題參考程序1n2åkn1編程計算表達式k=1的值。#include <iostream>using namespace std;int main()int n,k=1,sum=0,mean;cout<<"請輸入n的值: "cin>>n;while(k<=n)sum+= k*k;k+;if (n>0)mean=sum/n;elsemean=0;cout<<"1n個整數平方和的均值="<<mean<<endl;r

11、eturn 0;42輸入兩個正整數,判別它們是否互為互質數。所謂互質數,就是最大公約數是1。 #include <iostream>using namespace std;int main()int m,n,r;cout<<"請輸入兩個正整數:"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<<"是互質數 " <<endl;elseco

12、ut<<”不是互質數”<<endl;return 0;3編寫程序,輸出從公元2000年至3000年間所有閏年的年號。#include <iostream>using namespace std;int main()int year;cout<<"公元2000年至3000年間閏年的年號:n"for(year=2000;year<=3000;year+)if(year%4=0 && year%100 !=0)|(year%400=0)cout<<year<<'t'cou

13、t<<endl;return 0;4編寫程序模擬猴子吃桃子問題:猴子第1天摘下若干桃子,當即吃了一半,還不過癮,又多吃了一個。第2天將剩下的桃子又吃了一半,又多吃一個。以后每天都吃了前一天剩下的5一半零1個。到了第10天,只剩下了一個桃子。請問猴子第一天共摘了多少個桃子?方法1:#include <iostream>using namespace std;int main()int day,qian,hou=1;for(day=9;day>=1;day-)qian=(hou+1)*2;hou=qian;cout<<qian<<endl;re

14、turn 0;運行結果: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(int);int main()cout<<"第1天共摘了"<<peach(1)<

15、;<"個"<<endl;return 0;int peach(int day)int number;6if(day=10)number=1;elsenumber=2*(peach(day+1)+1);return number;5計算s=1+(1+2)+(1+2+3)+(1+2+3+4)+ +(1+2+3+ +n)的值。 方法1:#include <iostream>using namespace std;int main()int i,j,n;long int sum,total(0);cout<<"input n:&q

16、uot;cin>>n;for(i=1;i<=n;i+)sum=0;for(j=1;j<=i;j+)sum+=j;total+=sum;cout<<"s="<<total<<endl;return 0;#include <iostream>using namespace std;int main()int i,n;long int sum(0),total(0);cout<<"input n:"cin>>n;for(i=1;i<=n;i+)sum+=i;t

17、otal+=sum;7cout<<"s="<<total<<endl;return 0;6馬克思曾經做過這樣一道趣味數學題:有30個人在一家小飯館用餐,其中有男人、女人和小孩。每個男人花了3先令,每個女人花了2先令,每個小孩花了1先令,一共花了50先令。請問男人、女人以及小孩各有幾個人?#include <iostream>using 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=5

18、0)cout<<"Men are "<<x<<",women are "<<y <<",children are "<<z<<"."<<endl; return 0;實驗4 常用程序設計算法三、實驗思考1讀入一個整數N,若N為非負數,則計算N到2×N之間的整數和;若N為負數,則求2×N到N之間的整數和。分別利用for和while寫出兩個程序。#include<iostream>using

19、namespace std;int main()int N;cin>>N;int i=N;long sum=0;if(N>=0)for(;i<=2*N;i+)sum+=i;8elsefor(;i>=2*N;i-) sum+=i; cout<<sum<<endl; return 0;#include<iostream> using namespace std;int main()int N;cin>>N;int i=N;long sum=0; if(N>=0) while(i<=2*N) sum+=i; i

20、+; elsewhile(i>=2*N) sum+=i; i-; cout<<sum<<endl; return 0;92設s=1+111+¼+,求與8最接近的s的值及與之對應的n值。 23n#include<iostream>using namespace std;int main()float s=1.0;int n=1;do+n;s+=1.0/n;while(s<=8);if(s-8)>(8-(s-1.0/n)cout<<"s="<<s-1.0/n<<' 

21、9;<<"n="<<n-1<<endl;elsecout<<"s="<<s<<' '<<"n="<<n<<endl;return 0;3已知>B>C,且A+B+C<100,求滿足1+1=1的共有多少組。A2B2C2#include <iostream>using namespace std;int main()int A,B,C;int count=0;for(C=0;C!=33;+

22、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 << ' ' << C << endl;+ count;cout << "count is:" << count << endl;10return

23、0;4一司機出車禍后駕車逃離現場,第一位目擊者記得車牌號前兩位數字相同,且后兩位數字也相同;第二位目擊者是一位數學家,他看出車牌號是四位完全平方數。試推算肇事車的車牌號。#include<iostream>using namespace std;int main()int n,i;for(i=32;i<100;i+)n=i*i;if(n%10 = n%100/10 && n/1000 = n/100%10)cout<<n<<endl;return 0;115編程驗證“四方定理”:所有自然數至多只要用4個數的平方和就可以表示。 #incl

24、ude<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+)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<<&quo

25、t;*"<<i<<"+"<<j<<"*"<<j<<"+"<<k<<"*"<<k<<"+"<<l<<"*"<<l<<endl;exit(0);return 0;6編程驗證“角谷猜想”:任給一個自然數,若為偶數則除以2,若為奇數則乘3加1,得到一個新的自然數,然后按同樣的方法繼續(xù)運算,若干次運算后得到的結

26、果必然為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=0)n=n/2;elsen=n*3+1;12 if(n=1) flag=0; cout<<"success!"<<endl; return 0;實驗5 函數和編譯預處理三、實驗思考1. 參考程序如下:#include <iost

27、ream>using namespace std;long int Fibonacci(int n);void main()int i;long int t,t1;cout<<"please input t:"<<endl;cin>>t;for (i=2;i+)t1=Fibonacci(i);if (t1>t) cout<<"min Fibonacci="<<t1<<endl;break; long int Fibonacci(int n)if (n=0) return

28、1;else if (n=1) return 1;else return Fibonacci(n-1)+Fibonacci(n-2);2. 參考程序如下:#include <iostream>using namespace std;int num_n(int n,int a) /由n個a組成的多位數的計算 if (n=1) return a;13else return num_n(n-1,a)*10+a;void main()int i,n;long int sum=0;cout<<"please input n:"<<endl;cin&

29、gt;>n;for (i=1;i<=n;i+)cout<<num_n(i,2)<<endl;sum+=num_n(i,2);cout<<"n="<<n<<":sum="<<sum<<endl; 3. 參考程序如下:#include <iostream>using namespace std;int isprime(int n) /判斷n是否為素數的函數 int i;for (i=2;i<n-1;i+)if (n%i=0) return 0;/

30、非素數,函數值返回0 return 1;/素數,函數值返回1void main()int i,min_prime,max_prime;for (i=1000;i<=2000;i+)if(isprime(i)=1)cout<<"最小素數="<<i<<endl; break; for (i=2000;i>=1000;i-)if(isprime(i)=1)cout<<"最大素數="<<i<<endl; break; 4. 參考程序如下:#include <iostream

31、>using namespace std;int sum(int n)14static s=0;s=s+n;return s;void main()int i, n,s;cout<<"情指定n:"cin>>n;for (i=1;i<=n;i+)s=sum(i);cout<<"1n之和="<<s<<endl;5. 參考程序如下:#include <iostream>using namespace std;int is_h(int n) /判斷參數n是否為回文int i,m,

32、fn;/i用來記錄n的某一位數字,m初值為n,fn用于記錄n的倒序數 m=n;fn=0;while(m!=0)i=(m%10);fn=(fn*10+i);m=m/10;if(fn=n) return 1; /是回文數返回1else return 0; /不是回文數返回0void main()int i;int t; cin>>t;for (i=1;i<=t;i+)if (is_h(i)=1)cout<<"回文數:"<<i<<endl;156. 參考程序如下:#include <iostream>using n

33、amespace std;#define X (a+b)/2#define AREA X*hvoid main()float a,b,h,s;cout<<"請分別輸入a,b,h的值,用空格分隔!"<<endl; cin>>a>>b>>h;s=AREA;cout<<AREA<<endl;實驗六 數組三、實驗思考題參考源代碼思考題1. shi_6_3_1.cpp#include <iostream.h>#define N 5int lookup(int ,int ,int ); /函

34、數說明void main() int i, aN,index,yLooked;cout<<"請輸入N(=5)個整數:"<<endl;for(i=0;i<N;i+) cin>>ai;cout<<"請輸入您要找的整數:"<<endl;cin>>yLooked;index=lookup(a,N,yLooked); /函數調用 if(index!=-1)cout<<"您要找的數下標為:"<<index<<endl; elsecou

35、t<<"沒有找到"<<yLooked<<endl;cout<<"n謝謝使用本程序,再見!"<<endl; cin.get();16cin.get();int lookup(int x,int n,int y) /函數定義int flag=-1; /首先假設找不到int i;for(i=0;i<n;i+)if(xi=y)flag=i;break; /找到了則不必再往后找return flag;- 思考題2. shi_6_3_2.cpp#include <iostream.h>#d

36、efine N 5int max(int ,int ); /函數說明void main() int i, aN,xMax;cout<<"請輸入N(=5)個整數:"<<endl;for(i=0;i<N;i+) cin>>ai;xMax=max(a,N);cout<<"數組中最大的的整數:"<<xMax<<endl;cout<<"n謝謝使用本程序,再見!"<<endl;cin.get();cin.get();int max(int x,i

37、nt n)int i,r=x0; /首先假設 x0 最大, 且存于 r 中for(i=1;i<n;i+) / 也可寫成 for(i=0;i<n;i+)if(xi>r) r=xi; / 發(fā)現了更大 的則 修改 rreturn r; / r 中 存有最大 元素的值-17思考題3. shi_6_3_3.cpp#include <iostream.h>#define N 5void invert(int ,int); /函數說明void main() int i, aN;cout<<"請輸入N(=5)個整數:"<<endl;fo

38、r(i=0;i<N;i+) cin>>ai;invert(a,N);cout<<"n 這些數 逆序輸出如下:n"<<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-;r

39、eturn;-思考題4. shi_6_3_4.cpp#include <iostream.h>#define M 3 /M 行#define N 4 /N 列void main()int numMN; /=1,6,9, 3,5,4, 2,7,8; int i,j,it,itt, t,jt,exist=0;cout<<"請輸入 3 行 4 列 的 二維 數組:" <<endl; for (i=0;i<M;+i)for (j=0;j<N;+j) cin>>numij;18for (i=0;i<M;+i) t=nu

40、mi0; jt=0; for (j=0;j<N;+j)if ( t<numij) t=numij, jt=j; itt=i;for(it=0;it<M;+it)if ( t>numitjt) t=numitjt, itt=it; if (i=itt) exist=1;break; if (exist) cout<<"鞍點為 "<<t<<endl; else cout<<"無鞍點" <<endl;cout<<"n謝謝使用本程序,再見!"<

41、;<endl; cin.get(); cin.get(); -思考題5. shi_6_3_5.cpp分析:采用3個數組,它們元素值含義如下:19第19/23頁 bab0ab1 、.、abN-1a、b、c數組元素值含義示意圖#define N 7#include <iostream> #include <iomanip> using namespace std; int main( ) int i,j,t,k,ik;int aN,bN,cN; cout<<"please input N numbers:"<<endl; f

42、or (i=0;i<N;i+)cin>>ai; /從鍵盤上輸入N個元素,a0保存第一個數據cout<<"a數組各元素的值:"<<'n' for(i=0;i<N;i+)cout<<setw(6)<<ai; cout<<endl;for (i=0;i<N;i+) bi=i;for (i=0;i<N-1;i+) /排序,使 ab0ab1 、.、abN-1 k=i; /每輪選擇過程開始時假定 abi 最小,將下標i保存在k中 for (j=i+1;j<N;j+) /abk與abi 后面的元素逐個比較if (abk>abj) k=j; /若發(fā)現某個abj小于abk,則將k修改為j if (k!=i)20第20/23頁 t=bi; bi=bk; bk=t; cout<<"b數組各元素的值:"<<'n' for(i=0;i<N;i+)cout<<setw(6)<<bi; cout<<endl;ik=1;cb0=ik;for (i=1;i

溫馨提示

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

評論

0/150

提交評論