計算機概論:C/C++程式設計

 

6章 模組化的程式設計基礎:函式

 

 


授課教師:陳慶瀚

WWW : http://www.miat.ee.isu.edu.tw/cpp

E-mail : pierre@isu.edu.tw   

 


6.5 函式的傳回值

在函式原型宣告時,第一個宣告的元素就是函式的傳回值的資料型別,任何的基本資料型別(int, char, float, double...)或自訂的資料型別都可以使用,但是如果函式不傳回任何值,則我們要把資料型別宣告為void,意思是不傳回值。以下我們將陸續說明各種傳回值型別的使用方法。

void函式    

有些函式並不傳回值,這些函式必須宣告為void函式,例如範例程式6-5的函式increment()就沒有傳回值,範例程式6-6又是一個使用void函式的例子。

/*----------------------------------------------------*/

//                  範例程式6-6

//            阿拉伯數字轉大寫中文void函式

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

void DisplayUpperWord(int x);           // 函式原型宣告

void main()

{

    int x;

cout << "輸入一個0-10的整數 : ";

cin>>x;

DisplayUpperWord(x);

}

void DisplayUpperWord(int x)

{

    cout<<"你輸入的是 : ";

switch( x )

{

      case 1:

cout<<"";

break;

      case 2:

cout<<"";

break;

    case 3:

cout<<"";

break;

    case 4:

cout<<"";

break;

    case 5:

cout<<"";

break;

    case 6:

cout<<"";

break;

    case 7:

cout<<"";

break;

    case 8:

cout<<"";

break;

    case 9:

cout<<"";

break;

    case 10:

cout<<"";

break;

    default:

cout<<"無效的數值\n";

   }

}

DisplayUpperWord(int x)函式需傳入一個0-9之間的阿拉伯數字的變數值,函式內部使用switch-case語法偵測變數值並顯示對應的大寫中文。DisplayUpperWord(int x)沒有傳回值,所有在函式前的資料型別宣告為void,而函式內可以不使用return指令,當然如果要在函式最後一行加上

return;

其作用與沒有加上這一行是相同的。相反的,如果一個有傳回值的函式,則函式內一定要有return指令,隨後還要有傳回值,程式才能正確的編譯。以下我們就要看看各種

char傳回值 

以下範例展示一個傳入char參數,再傳回char變數值的函式。

/*----------------------------------------------------*/

//                  範例程式6-7

//           小寫字元轉大寫字元─char傳回值

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

char Upper(char x);  //宣告函式原型,傳入char參數,傳回值資料型別是char

void main()

{

   char x,y;

   cout << "輸入一個小寫字元 : ";

   cin>>x;

   y = Upper(x);

   cout << y<<endl;

}

 

char Upper(char x)

{

   char t;    //宣告一個區域變數t;

   t=x-32;    //將小寫字元轉為大寫字元

   return t; //將大寫字元傳回

}

bool傳回值 

bool資料型別只有兩種變數值:truefalse。使用bool傳回值可用於判斷函式執行的結果為truefalse範例程式6-8就是使用bool傳回值的函式例子。

/*----------------------------------------------------*/

//                  範例程式6-8

//                檢查字元是否為大寫─使用bool傳回值

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

bool is_upper(char c);  //宣告函式原型,傳入char參數,傳回值資料型別是bool

void main( )

{

bool b;

char  c;

cout<<"輸入一個字元 :";

cin>>c;

b = is_upper(c);  //傳回truefalse

if(b==true)cout <<"你輸入的是大寫字元";

else cout <<"你輸入的是小寫字元";

}

bool is_upper(char ch)

{

bool b = ch >= ‘A’ && ch <= ‘Z’ ; //ch介於'A''Z'之間,b=true

                              //否則b=false

    return b;

}

 

int傳回值  

/*----------------------------------------------------*/

//                  範例程式6-9

//                 計算N2─使用int傳回值

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

int square(int value);   //宣告函式原型,傳入int參數,傳回值資料型別是int

void main( )

{

int sq;

for (int k=0;k<20;k++)

{  

sq = square(k);  //呼叫square()函式,傳入整數k,將傳回值指定給sq變數

cout<<k<<"\t"<<sq<<endl;

}

}

int square(int value)

{

return (value*value);  //傳回整數的value*value

}  

 

long Return Type   

有些運算的值域非常大,使得int整數型態的變數無法涵蓋可能的運算結果,例如16位元的整數只能涵蓋–32,768 (–215)32,767 (215– 1)32位元的整數則可以涵蓋2,147,483,647 (231– 1) –2,147,483,648 (–231),如果上述的值域範圍還不夠,我們可以宣告長整數long範例程式6-9就展示一個用來計算2N的函式的範例。

/*----------------------------------------------------*/

//                  範例程式6-9

//                 計算2N的函式使用long傳回值

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

long  powerof2(int value);   //宣告函式原型,傳入int參數,傳回值資料型別是long

void main( )

{

int p;

for (int k=0;k<20;k++)

{  

p = powerof2(k); //呼叫函式,傳入整數k,將傳回值指定給sq變數

cout<<k<<"\t"<<p<<endl;

}

}

long powerof2(int value)

{

//計算2N = 2*2*2*......*2(N2)

//28 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 256   

long seed=1; //設定連乘的初始值

for (int t=0; t<value; t++)

{

  seed = seed*2;   //迭代連乘

    }

return seed;

}

float傳回值

絕大多數的科學和工程計算都不可避免的使用浮點數,範例2-10

/*----------------------------------------------------*/

//                  範例程式6-10

//           計算兩點所構成直線的斜率─使用float傳回值

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

//宣告函式原型,傳入4int參數(兩點座標),傳回值資料型別是float

float  slope(int x1, int y1, int x2, int y2); 

void main( )

{

    float m;

int x1=5,y1=4,x2=8,y2=12;

m = slope(x1,y1,x2,y2); //呼叫函式,傳入兩點座標,將傳回值指定給m變數

cout<<"slope = "<<m<<endl;

}

float  slope(int x1, int y1, int x2, int y2)

{

//計算m =  

float s = float(y2-y1)/float(x2-x1);

return s;

}

 

double傳回值

如果需要雙精準度浮點數的計算,我們可以把函式的傳回值宣告為double,如範例程式6-11

/*----------------------------------------------------*/

//                  範例程式6-11

//           計算sin值─使用double傳回值

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

#include <math.h>  

const double dPi=3.14159265359;  //宣告一個全域型態的常數

//宣告函式原型,傳入以degree為單位的整數角度值,傳回值資料型別是double

double mysine(int angle);

void main()

{

int j;

double dsine;

for (j=0;j<=90;j++)

{  

dsine = mysine (j);  

cout<<"sin("<<j<<") = "<<dsine<<endl;

   }

}

double mysine (int degree)

{

double d;

//將度度量轉為徑度量,呼叫內建sin函式,傳回值指定給d

d = sin((dPi/180.0)*degree);

return d;

}  

 

計算機概論:C/C++程式設計

義守大學電機系 陳慶瀚 
2001.12.17

 

謝孟媛 dvd -
情趣用品 -
飛鳥遊戲 -
遊戲基地 -
PATEK PHILIPPE -
xyz資訊工作坊 -
xyz軟體王 -
英文老師 -
沛納海 -
xyz軟體下載倉庫 -
基測試題 -
CARTIER 卡地亞 -
林晟數學 -
PIAGET -
費洛蒙情定 -
xyz -
軟體大補帖 -
高國華補習班 -
game淘 -
ps2台片 -
wii超級瑪莉攻略 -
情定費洛蒙 -
wii價格2011 -
xbox 360台片 -
tvgame360 -
愛馬仕 -
春藥專賣店 -
ps3價錢 2011 -
ps2遊戲王 -
wii遊戲片專賣店 -
百達翡麗 PATEK PHILIPPE -
壯陽藥品哪買 -
海賊王 -
春藥王 -
xyz軟體下載倉庫 -
壯陽食物 -
xbox360 -
催情藥 -
TISSOT 天梭 -
ps2遊戲燒錄 -
威而剛哪裡買 -
一夜情婦 -
xbox 360台片專賣 -
國中基測題庫 -
無雙遊戲網 -
xyz軟體王 -
ps2遊戲片80元 -
基測 -
xyz軟體王下載 -
GUCCI 古馳 -
南一題庫網 -
COACH -
LOUIS VUITTON -
wii超級瑪莉 -
wii價格2011 -
魔法老師 -
催情藥專賣店 -
國小翰林題庫網 -
wii遊戲片專賣店 -
遊戲天堂 -
寶格麗 -
金榜之路 -
wii遊戲片80元 -
xbox 360遊戲片 -
wii遊戲載點 -
人類費洛蒙情定 -
xbox 360台片專賣 -
催情王 -
xyz軟體之家 -
ps2遊戲片80元 -
情色小站 -
微風廣場 -
情慾之夜 -
民視文化 -
xbox360 -
蔻馳 -
ps2遊戲燒錄 -
ps3遊戲片 -
龍騰高中題庫 -
ps3台片 -
威而剛 -
ps3價錢 2011 -
軟體王下載 -
蕭邦 CHOPARD -
龍騰 -
催情藥 -
威而剛哪裡買 -
基測題目 -
HERMES 愛馬仕 -
情定費洛蒙 -
ps2台片 -
ps3遊戲片 -
wii瑪莉兄弟遊戲 -
江詩丹頓 Vacheron Constantin -
wii超級瑪莉 -
wii遊戲片在ho99小舖 -
春藥王 -
歷屆基測試題 -
窮人軟體 -
威而柔哪裡買 -
蕭邦 -
翰林題庫網 -
一夜情婦 -
wii遊戲下載 -
xbox 360遊戲 -
壯陽食物 -
ps2遊戲片 -
sogo百貨 -
台灣情色網 -
xyz軟體王下載 -
lv2011官方網 -
wii遊戲片專賣店 -
xbox 360價錢 -
歐米茄 -
雷達錶 RADO -
xyz資訊工坊 -
儒林補習班 -
壯陽藥品 -
xyz軟體王 -
窮人遊戲 -
ps2遊戲下載 -
ps3台片 -
德周 -
sogo百貨 -
費洛蒙情定 -
壯陽藥品哪買 -
催情王 -
春藥哪裡買 -
lv2011夏季新款 -
情趣用品 -
中友百貨 -
史萊姆的第一個家 -
情色論壇 -
萬寶龍 MONT BLANC -
萬國 -
ps2遊戲下載 -
春藥哪裡買 -
xyz資訊工作坊 -
龍騰文化 -
太平洋百貨 -
軟體王 -
xbox 360台片專賣 -
ps3遊戲片在ho99小舖 -
壯陽藥 -
xyz軟體銀行 -
xbox360台片 -
魔法24 -
wii遊戲片80元 -
XYZ資訊工坊 -
CARTIER -
春藥網 -
壯陽 -
xyz 軟體補給站 -
微風廣場 -
lv2011新款型錄 -
xbox 360遊戲 -
費洛蒙 -
卡地亞 -
wii遊戲下載 -
窮人天碟 -
春藥專賣店 -
gucci2011專賣店旗艦店 -
迪奧 -
CHANEL -
xyz軟體大本營 -
xbox 360遊戲片在ho99小舖 -
台北郵購網 -
BURBERRY 巴寶莉 -
伯爵 -
遠東百貨 -
陳希 -
費洛蒙mx -
時間廣場 -
漢神百貨 -
情色論壇 -
傳政 -
軟體 -
寶格麗 BVLGARI -
名牌包俱樂部 -
時間廣場 -
威而柔 -
wii瑪莉兄弟遊戲 -
lv名牌包專賣店 -
xyz軟體大本營 -
威而柔哪裡買 -
伯爵 PIAGET -
xyz軟體銀行 -
ps3遊戲下載 -
wii超級瑪莉歐 -
無名套裝 -
xyz軟體下載倉庫 -
江詩丹頓 -
林晟 -
ps3遊戲片在ho99小舖 -
威而剛 -
費洛蒙mx -
xyz軟體之家 -
HERMES -
林晟超理解數學 -
謝孟媛 -