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

下載本文檔

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

文檔簡介

1、實驗 1 C+ 基礎(chǔ)6編寫程序,輸入某大寫字母的ASCII 碼值,輸出該字母的對應(yīng)小寫字母。#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.輸入直角三角形的兩條直角邊長,調(diào)用平方根庫函數(shù)s

2、qrt 來求斜邊的長度#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從鍵盤輸入一個字符,如果輸入的是英文大寫字母,則將它轉(zhuǎn)換成小寫字母后輸出,否則輸出原來輸入的字符。#include&l

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

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

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

6、gt;>c;switch(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&

7、#39;:cout<<"Saturday"break;case '7':cout<<"Sunday"break;default: cout<<" wrong number"cout<<endl;return 0;6. 設(shè)計一個簡單的計算器程序,能夠進(jìn)行加、減、乘、除簡單運算并顯示結(jié)果。#include <iostream>using namespace std;int main()cout<<" 輸入簡單的算術(shù)表達(dá)式:int leftOp

8、erand,rightOperand;(數(shù) 操作符數(shù) )"char Operator;cin>>leftOperand>>Operator>>rightOperand;int result;switch(Operator)case '+':result=leftOperand+rightOperand;break;case '-':result=leftOperand-rightOperand;break;case '*':result=leftOperand*rightOperand;break;c

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

10、<result<<endl;return 0;實驗 3三、思考題參考程序1 n k 21編程計算表達(dá)式n 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<<"1 n 個整數(shù)平方和的均值="<<m

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

12、lt;<endl;elsecout<< ”不是互質(zhì)數(shù) ”<<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<&l

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

14、an;cout<<qian<<endl;return 0;運行結(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(int);int main()cout<<

15、" 第 1 天共摘了 "<<peach(1)<<" 個 "<<endl;return 0;int peach(int day)int number;if(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()inti,j,n;lo

16、ng int sum,total(0);cout<<"input n:"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()inti,n;long int sum(0),total(0);cout<<"input n

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

18、;=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; 實驗 4常用程序設(shè)計算法三、實驗思考× N1讀入一個整數(shù) N,若 N 為非負(fù)數(shù),則計算 N 到 2× N 之間的整數(shù)和;若到 N 之間的

19、整數(shù)和。分別利用 for 和 while 寫出兩個程序。N 為負(fù)數(shù),則求2#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<<endl;return 0;#include<iostream>using namespace std;int main()int N;cin>&g

20、t;N;int i=N;long sum=0;if(N>=0)while(i<=2*N)sum+=i;i+;elsewhile(i>=2*N)sum+=i;i-;cout<<sum<<endl;return 0;2設(shè) s 1111 ,求與 8 最接近的 s 的值及與之對應(yīng)的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<&

21、lt;"s="<<s-1.0/n<<' '<<"n="<<n-1<<endl;elsecout<<"s="<<s<<' '<<"n="<<n<<endl;return 0;3已知 >B>C ,且 A+B+C<100 ,求滿足111的共有多少組。A2B 2C 2#include <iostream>using namespac

22、e std;int main()int A,B,C;int count=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 << ' ' << C << endl;+ count;cout << "co

23、unt is:" << count << endl;return 0;4一司機出車禍后駕車逃離現(xiàn)場,第一位目擊者記得車牌號前兩位數(shù)字相同,且后兩位數(shù)字也相同;第二位目擊者是一位數(shù)學(xué)家,他看出車牌號是四位完全平方數(shù)。試推算肇事車的車牌號。#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;re

24、turn 0;5編程驗證“四方定理”:所有自然數(shù)至多只要用#include<iostream>using namespace std;int main()4 個數(shù)的平方和就可以表示。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<<

25、number<<"="<<i<<"*"<<i<<"+"<<j<<"*"<<j<<"+"<<k<<"*"<<k<<"+"<<l<<"*"<<l<<endl;exit(0);return 0;6編程驗證“角谷猜想”:任給一個自然數(shù),若為偶數(shù)

26、則除以2,若為奇數(shù)則乘一個新的自然數(shù),然后按同樣的方法繼續(xù)運算,若干次運算后得到的結(jié)果必然為1。3 加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;if(n=1)flag=0;cout<<"success!"<<endl;return 0;實驗

27、 5函數(shù)和編譯預(yù)處理三、實驗思考1. 參考程序如下:#include <iostream>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

28、;long int Fibonacci(int n)if (n=0) return 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 組成的多位數(shù)的計算if (n=1) return a;elsereturn num_n(n-1,a)*10+a;void main()int i,n;long int sum=0;cout<<&

29、quot;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="<<sum<<endl;3. 參考程序如下:#include <iostream>using namespace std;int isprime(int n) / 判斷 n 是否為素數(shù)的函數(shù)int

30、i;for (i=2;i<n-1;i+)if (n%i=0) return 0;/ 非素數(shù),函數(shù)值返回0return 1;/ 素數(shù),函數(shù)值返回1void main()int i,min_prime,max_prime;for (i=1000;i<=2000;i+)if(isprime(i)=1)cout<<" 最小素數(shù) ="<<i<<endl; break;for (i=2000;i>=1000;i-)if(isprime(i)=1)cout<<" 最大素數(shù) ="<<i<

31、<endl; break;4. 參考程序如下:#include <iostream>using namespace std;int sum(int n)static 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

32、namespace std;int is_h(int n) / 判斷參數(shù)n 是否為回文int i,m,fn;/i 用來記錄 n 的某一位數(shù)字 ,m 初值為 n,fn 用于記錄 n 的倒序數(shù) 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 0; / 不是回文數(shù)返回0void main()int i;int t; cin>>t;for (i=1;i<=t;i+)if (is_h(i)=1)cout<<" 回文數(shù) :"&l

33、t;<i<<endl;6. 參考程序如下:#include <iostream>using namespace 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;實驗六數(shù)組三、實驗思考題參考源代碼思考題 1.shi_6_3_1.cpp#inclu

34、de <iostream.h>#define N 5int lookup(int ,int ,int );/函數(shù)說明voidmain() int i, aN,index,yLooked;cout<<" 請輸入 N(=5) 個整數(shù): "<<endl;for(i=0;i<N;i+)cin>>ai;cout<<" 請輸入您要找的整數(shù):"<<endl;cin>>yLooked;index=lookup(a,N,yLooked);/函數(shù)調(diào)用if(index!=-1)cout&

35、lt;<" 您要找的數(shù)下標(biāo)為:"<<index<<endl;elsecout<<" 沒有找到 "<<yLooked<<endl;cout<<"n 謝謝使用本程序,再見!"<<endl;cin.get();cin.get();int lookup(int x,int n,int y)/ 函數(shù)定義int flag=-1;/首先假設(shè)找不到int i;for(i=0;i<n;i+)if(xi=y)flag=i;break;/找到了則不必再往后找re

36、turn flag;-思考題 2.shi_6_3_2.cpp#include <iostream.h>#define N 5int max(int ,int );voidmain()/ 函數(shù)說明 int i, aN,xMax;cout<<" 請輸入 N(=5) 個整數(shù): "<<endl;for(i=0;i<N;i+)cin>>ai;xMax=max(a,N);cout<<" 數(shù)組中最大的的整數(shù):"<<xMax<<endl;cout<<"n謝謝使

37、用本程序,再見!"<<endl;cin.get();cin.get();int max(int x,int n)int i,r=x0;/首先假設(shè)x0 最大 , 且存于 r 中for(i=1;i<n;i+)/也可寫成 for(i=0;i<n;i+)if(xi>r) r=xi;/發(fā)現(xiàn)了更大的則 修改 rreturn r;/r中 存有最大元素的值-思考題 3.shi_6_3_3.cpp#include <iostream.h>#define N 5void invert(int ,int);/函數(shù)說明voidmain() int i, aN;cou

38、t<<" 請輸入 N(=5) 個整數(shù): "<<endl;for(i=0;i<N;i+)cin>>ai;invert(a,N);cout<<"n這些數(shù)逆序輸出如下: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=

39、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 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 列 的 二維 數(shù)組: " <<endl;for (i=0;i<M;+i)for (j=0;j<N;+j) cin

40、>>numij;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;+it)if ( t>numitjt) t=numitjt,itt=it;if (i=itt) exist=1;break;if (exist)cout<<" 鞍點為"<<t<<endl;elsecout<<" 無鞍點 " <<endl;cout<&

41、lt;"n 謝謝使用本程序,再見!"<<endl;cin.get();cin.get();-思考題 5.shi_6_3_5.cpp改正:題目中添加3 字5對數(shù)組 A 中的 N 個整數(shù)從小到大進(jìn)行連續(xù)編號,要求不能改變這N 個數(shù)在數(shù)組 A 中的存放順序,且相同的數(shù)編號也相同。例如,若數(shù)組 A 中數(shù)為 (5, 3, 4, 7, 3, 5, 6),則輸出為 (3,1,2,5,1,3,4)。分析:采用 3 個數(shù)組,它們元素值含義如下:#define N 7#include <iostream>#include <iomanip>using nam

42、espace std;int main( )int i,j,t,k,ik;int aN,bN,cN;cout<<"pleaseinput Nnumbers:"<<endl;for (i=0;i<N;i+)cin>>ai; /從鍵盤上輸入 N 個元素, a0保存第一個數(shù)據(jù) cout<<"a 數(shù)組各元素的值 :"<<'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+)/排序,使ab0 ab1 、 .、 abN-1 k=i;/每輪選擇過程開始時假定abi 最小,將下標(biāo) i 保存在 k 中for (j=i+1;j<N;j+)/abk 與 abi后面的元素逐個比較if (abk>abj) k=j;/若發(fā)現(xiàn)某個 abj 小于 abk, 則將 k 修改為if (k!=i)j t=bi; bi=bk; bk=t; cout<<"b 數(shù)組各元素的值 :"<<'n'for(i=0;i<N;i+)cout&

溫馨提示

  • 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

提交評論