程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 2015級C++第4周項目 函數

2015級C++第4周項目 函數

編輯:C++入門知識

2015級C++第4周項目 函數


【項目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>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved