記得我之前剛接觸 C 語言的時候, 對於函式相互間的呼叫與應用花了不少時間去搞懂它, 而且學會函式間的呼叫與應用, 更是邁向物件導向程式設計的基礎, 當然 ! 在物件導向中主要是以類別 class 為基礎單位, 並非在此所談論的 "函式", 不過兩者的觀念與架構模式是很類似的, 呵呵呵 ~ 很多學程式設計的人都覺得基礎是很乏味的東西, 只想一開始就涉入最新的技術, 最後只會碰得滿頭包 ! 基礎是很重要的啊 !
設計功能如下 :
從主函式連續呼叫 getchar() 三次 (資料由鍵盤輸入), 取得三個字元變數a b c, 再由函式 char findmax(char ch1,char ch2,char ch3) 將最大的字元傳回並輸出
#include<iostream>
#include<conio.h>
using namespace std;
//getchar為保留字,不可直接用來作為函式名稱
//因此函式名稱改為 getchar2()
char *getchar2()
{
char *gets;
//一定要配置記憶體位置給gets, 否則執行後果無法預測(或錯誤)!
gets=new char;
cout << endl << "請輸入一個字元(不需按Enter)-->";
*gets=getche();
return gets;
}
char *findmax(char *ch1,char *ch2,char *ch3)
{
if(*ch1>*ch2 && *ch1>*ch3) return ch1;
if(*ch2>*ch3 && *ch2>*ch1) return ch2;
return ch3;
}
int main()
{
char *ch1,*ch2,*ch3;
ch1=new char;ch2=new char;ch3=new char;
ch1=getchar2();
ch2=getchar2();
ch3=getchar2();
//在 findmax( ) 函式前加上 * 取值
//這樣輸出的字元尾部才不會出現亂碼
cout << endl << "傳回最大字元-->" << *(findmax(ch1,ch2,ch3)) << endl;
system("pause");
return 0;
}
==================================
下面這個範例與上面的程式有同工異曲之處, 請耐心解析看看其功能為何 ?
#include<iostream>
using namespace std;
char *getfstring() //函式getfstring()
{
char *gets;
//一定要配置記憶體位置給gets,否則執行後果無法預測!
gets=new char;
cout << "請輸入一個字串-->";
//cin >> gets; //如果使用 cin,輸入空白格時將無法讀取空白格後的字元
// 改用 cin.getline(),這裏設最大長度為255,可自行更改數值
cin.getline(gets,255);
return gets;
}
int main()
{
cout << endl << "傳回字串-->" << getfstring() << endl;
system("pause");
return 0;
}
沒有留言:
張貼留言