資源簡介
采用c語言實現的四則運算器源代碼,使用了棧和遞歸,支持括號。國內某知名游戲公司復試題目

代碼片段和文件信息
//?alWrom.cpp:?implementation?of?the?CalWrom?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“alWrom.h“
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CalWrom::CalWrom()
{
m_pFarther?=?NULL;
m_pChild?=?NULL;
m_fResult?=?0.0f;
}
CalWrom::~CalWrom()
{
}
/************************************************************************/
/*?函數:LevelCmp
/*?說明:比較兩個操作符的優先級
/*?參數:
/* a:操作符1
/* b:操作符2
/*?返回值:如果a的優先級大于b,返回1
/* ???如果a的優先級等于b,返回0
/* ???如果a的優先級小于b,返回-1
/************************************************************************/
int?CalWrom::LevelCmp(char?const?achar?const?b)
{
int?i;
char?albl;
for?(i=0;i {
if?(a?==?LEVEL_TABLE[i][0])
{
al?=?LEVEL_TABLE[i][1];
}
if?(b?==?LEVEL_TABLE[i][0])
{
bl?=?LEVEL_TABLE[i][1];
}
}
if?(al?>?bl)
{
return?1;
}
else?if?(al? {
return?-1;
}
else
{
return?0;
}
}
/************************************************************************/
/*?函數:Calculate
/*?說明:輸入兩個數和一個操作符,根據操作符計算兩個數的結果
/*?參數:
/* f1:運算式左端數據
/* cOper:操作符
/* f2:運算式右端數據
/*?返回值:返回計算結果
/************************************************************************/
float?CalWrom::Calculate(float?f1char?cOperfloat?f2)
{
// printf(“%.2f%c%.2f\n“f1cOperf2);
switch(cOper)
{
case?‘+‘:
return?f1?+?f2;
case?‘-‘:
return?f1?-?f2;
case?‘*‘:
return?f1?*?f2;
case?‘/‘:
return?f1?/?f2;
default:
break;
}
return?0.0f;
}
/************************************************************************/
/*?函數:IsOperator
/*?說明:判斷一個字符是否為操作符
/*?參數:
/* c:需要判斷的字符
/*?返回值:如果c是操作符返回true
/* ???如果c不是操作符返回false
/************************************************************************/
bool?CalWrom::IsOperator(const?char?c)
{
if?(c?==?‘+‘
||c?==?‘-‘
||c?==?‘*‘
||c?==?‘/‘
||c?==?‘(‘
||c?==?‘)‘
)
{
return?true;
}
return?false;
}
/************************************************************************/
/*?函數:IsData
/*?說明:判斷一個字符是被一個數據包含,由于數據可以式float,
/* ?因此.也屬于數據類型
/*?參數:
/* c:需要判斷的字符
/*?返回值:如果c是數據返回true
/* ???如果c不是數據返回false
/************************************************************************/
bool?CalWrom::IsData(const?char?c)
{
if?((c?>=?‘0‘?&&?c?<=?‘9‘)
||c?==?‘.‘)
{
return?true;
}
return?false;
}
/************************************************************************/
/*?函數:AddOperator
/*?說明:外部向本蠕蟲推入一個運算符,需要進行相應處理
/*?參數:
/* cOper:被推入的操作符
/*?返回值:無
/************************************************************************/
void?CalWrom::AddOperator(const?char?cOper)
{
if?(cOper?==?‘(‘)
{
//第一次收到左括號,開創一個新的計算蠕蟲作為括號內的表達式計算器
if?(m_pChild?==?NULL)
{
m_pChild?=?new?CalWrom;
m_pChild->m_pFarther?=?this;
// printf(“創建一個蠕
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????I.A....??????8072??2008-11-05?20:15??Calculator\alWrom.cpp
????I.A....??????4821??2008-11-06?21:30??Calculator\alWrom.h
????I.A....???????497??2008-11-05?20:15??Calculator\Calculator.cpp
????I.A....??????4886??2008-11-05?20:15??Calculator\Calculator.dsp
????I.A....???????545??2008-11-05?20:15??Calculator\Calculator.dsw
????I.A....??????1232??2008-11-05?20:15??Calculator\ReadMe.txt
????I.A....???????297??2008-11-05?20:15??Calculator\StdAfx.cpp
????I.A....???????811??2008-11-05?20:15??Calculator\StdAfx.h
????I.A.SHR???????429??2008-11-05?20:15??Calculator\vssver2.scc
????I.A....???????356??2008-11-05?20:15??Calculator\WormStack.cpp
????I.A....??????1655??2008-11-06?21:29??Calculator\WormStack.h
????I..D...?????????0??2008-11-06?21:30??Calculator
-----------?---------??----------?-----??----
????????????????23601????????????????????12
- 上一篇:VC++注冊碼加密源程序含注冊機、解密機
- 下一篇:vc++編寫的界面源代碼
評論
共有 條評論