【項目1-求最大公約數】
(1)輸入兩個數,並求出其最大公約數
#include
using namespace std;
//自定義函數的原型(即函數聲明)
int main()
{
int a,b,g;
cin>>a>>b;
g=gcd(a,b);
cout<<"最大公約數是: "<
(2)在上面程序基礎上,增加函數gcds函數的聲明和定義,實現求4數最大公約數的功能
<code class="hljs cpp"><code class="hljs cs">int gcds(int x,int y,int z,int w) //調用gcd()求四數的最大公約數 { }</code></code>
提示:
①既然gcd函數已經實現了求兩數最大公約數的功能,gcds可以調用gcd分別求出兩對的最大公約數,再求最大公約數的最大公約數;
②修改main函數,以完成對新新定義的函數的測試。
(3)利用單步調試工具,step into到函數內部觀察程序的運行,掌握進入到函數“內部”觀察其運行情況的方法。
【項目2-太樂了】
話說sin和cos是一對夫婦。一天,sin去聽相聲了,cos在家。過了一會,有人敲門,cos開門一看,是一個不認識的多項式函數。cos問:你是誰啊?他說:我是你的老公sin啊。cos說:你不是去聽相聲了嗎?怎麼成這幅摸樣了?sin說:是啊,太樂了!
故事講完了。下面是sin函數的泰勒展式:
(注:x取弧度值,而非角度值)
用sin泰勒展式編寫程序,求出sin(π/2)和sin(56°)的值,精度要求達到小數點後6位(即當最後一項的絕對值小於0.00001時,累加結束,求絕對值的函數也可以自定義函數myabs實現)。
下面是程序模板,請完成自定義函數的聲明和定義,並將main函數中下劃線部分補充完整。
<code class="hljs cpp"><code class="hljs cpp">#include <iostream> using namespace std; const double pi=3.1415926; int main( ) { cout<<"sin(π/2)的值為"<<mysin(pi code="" return=""></mysin(pi></iostream></code></code>
提示1: 實際上,C++的數學庫(
#include
)中已經提供了sin和cos函數,一般解題中我們直接調用即可,而本題要求自定義函數實現,為區別起見,分別起名為mysin和mycos。
提示2: 程序的輸出應該為:
sin(π/2)的值為1
sin(56°)的值為0.829038
【項目3-隨機數函數應用於游戲】
(1)猜數字游戲
隨機產生一個1000內的數字,要求用戶猜測這個整數。輸入一個猜測想的整數,判斷是否與產生的隨機數相等,由屏幕顯示判斷結果。如果猜得不對,給出“大了”或“小了”的提示,直到猜出這個數為止。(可以再加一個要求,猜了幾次才得到正確結果。)
(2)小學生算術能力測試系統
設計一個程序,用來實現幫助小學生進行算術運算練習,它具有以下功能:提供10道加、減、乘、除四種基本算術運算的題目,每道題中的操作數是隨機產生的,且操作數不超過2位數的正整數;練習者根據顯示的題目輸入自己的答案,程序自動判斷輸入的答案是否正確並顯示出相應的信息。最後顯示做對了幾道題。
【項目4-程序分析】
寫出下面程序的運行結果,並解析其運行機制。請描述其執行流程及相關變量的變化過程,可以配合圖示完成,在博客中上傳畫出的圖。
(1)
<code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp">#include<iostream> using namespace std; void fun(int k) { if(k>0) fun(k-1); cout<<k; code="" int="" return="" w="5;"></k;></iostream></code></code></code>
(2)
<code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp">#include <iostream> using namespace std; void recur(char); int main() { recur('0'); } void recur(char c) { cout<<c; code=""></c;></iostream></code></code></code></code>
(3)
<code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp">#include<iostream> using namespace std; int fun2(int a,int b) { int c; c=a*b%3; return c; } int fun1(int &a,int &b) { int c; a+=a; b+=b; c=fun2(a,b); return c*c; } int main() { int x=11,y=19; cout<<fun1(x,y)<<endl; code="" return=""></fun1(x,y)<<endl;></iostream></code></code></code></code></code>
(4)理解函數的默認參數:運行程序,利用調試功能,觀察變量和函數參數的值,結合課堂講解,品味默認參數的作用。
<code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs rsl">#include <iostream> using namespace std; const double pi=3.1415926; float area(float r=6.5);//指定r的默認值為6.5 float volume(float h,float r=6.5); //指定r的默認值為6.5 int main( ) { cout<<area()<<endl; 10.4="" 6.5="" code="" float="" return=""></area()<<endl;></iostream></code></code></code></code></code></code>
① 去掉第4行的“=6.5”試試,出錯的原因是__________;
② 將第14行改為“float area(float r=6.5)”,出錯的原因是________;
③ 將第5行“float h,float r=6.5”改為“float h=1,float r”,出錯的原因是___;
④ 將第5行改為“float volume(float h=0,float r=6.5)”,帶來的改變將是__________
【項目5-用遞歸方法求解】
(1)編寫遞歸函數求出n的階乘(自定義main函數,調用定義的遞歸函數)
(2)寫出求1*3*…*n的遞歸式,並編寫出遞歸函數求解。
(3)編程序,用遞歸函數求出兩個數的最大公約數。(包括編main函數,調用定義的遞歸函數)
(4)編制遞歸函數fib(int n)返回第n個Fibnacci數,以此輸出Fibnacci序列的第20個數。
<code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs cpp"><code class="hljs rsl"><code class="hljs cpp">#include <iostream> using namespace std; int fib(int n); int main(){ cout<<fib(20)<<endl; code="" int="" return=""></fib(20)<<endl;></iostream></code></code></code></code></code></code></code>