头文件
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define MAX_SIZE 256
enum BOOL{FALSE,TRUE};
typedef struct tagOPERATE{
double Operand;
char Operator;
}OPERATE,*LPOPERATE;
void PostSrc(char *src,LPOPERATE lpOperator);
int IsDigit(char);
int isp(char ch);
int icp(char ch);
int Locate(char ch);
int getOperand(char *s,int *len,double *oprd);
double Calculate(LPOPERATE lpOperator,double x);
void SrcFunProc(char *src);
void _Proc(char*src);
以下是源文件的内容
#include"sin.h"
static char Operator[]="#(+-*/^";
static int InPriority[]={0,1,3,3,5,5,7};
static int OutPriority[]={0,10,2,2,4,4,6};
int Locate(char ch)
{
int i=0;
for(i=0;Operator[i]!='/0';i++)
if(Operator[i]==ch)
return i;
return -1;
}
int isp(char ch)
{
if('A'<=ch&&'Z'>=ch)
return 9;
else
return InPriority[Locate(ch)];
}
int icp(char ch)
{
if('A'<=ch&&'Z'>=ch)
return 8;
else
return OutPriority[Locate(ch)];
}
void _Proc(char*src)
{
char Buffer[MAX_SIZE];
char*p=src,*q=Buffer;
*q++=*p++;
while('/0'!=*p)
{
if('-'==*p&&'('==*(p-1))
{
*q++='0';
*q++='-';
p++;
}
else
*q++=*p++;
}
*q='/0';
strcpy(src,Buffer);
}
void SrcFunProc(char*src)
{
char Buffer[MAX_SIZE];
char*p=src,*q=Buffer;
while(*p!='/0')
{
switch(*p)
{
case 's': // A for sin
*q++='A';
p+=3;
break;
case 'c': // B for cos
*q++='B';
p+=3;
break;
case 'e': //C for exp
*q++='C';
p+=3;
break;
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define MAX_SIZE 256
enum BOOL{FALSE,TRUE};
typedef struct tagOPERATE{
double Operand;
char Operator;
}OPERATE,*LPOPERATE;
void PostSrc(char *src,LPOPERATE lpOperator);
int IsDigit(char);
int isp(char ch);
int icp(char ch);
int Locate(char ch);
int getOperand(char *s,int *len,double *oprd);
double Calculate(LPOPERATE lpOperator,double x);
void SrcFunProc(char *src);
void _Proc(char*src);
以下是源文件的内容
#include"sin.h"
static char Operator[]="#(+-*/^";
static int InPriority[]={0,1,3,3,5,5,7};
static int OutPriority[]={0,10,2,2,4,4,6};
int Locate(char ch)
{
int i=0;
for(i=0;Operator[i]!='/0';i++)
if(Operator[i]==ch)
return i;
return -1;
}
int isp(char ch)
{
if('A'<=ch&&'Z'>=ch)
return 9;
else
return InPriority[Locate(ch)];
}
int icp(char ch)
{
if('A'<=ch&&'Z'>=ch)
return 8;
else
return OutPriority[Locate(ch)];
}
void _Proc(char*src)
{
char Buffer[MAX_SIZE];
char*p=src,*q=Buffer;
*q++=*p++;
while('/0'!=*p)
{
if('-'==*p&&'('==*(p-1))
{
*q++='0';
*q++='-';
p++;
}
else
*q++=*p++;
}
*q='/0';
strcpy(src,Buffer);
}
void SrcFunProc(char*src)
{
char Buffer[MAX_SIZE];
char*p=src,*q=Buffer;
while(*p!='/0')
{
switch(*p)
{
case 's': // A for sin
*q++='A';
p+=3;
break;
case 'c': // B for cos
*q++='B';
p+=3;
break;
case 'e': //C for exp
*q++='C';
p+=3;
break;

这是一个使用C语言编写的公式计算器,能够处理包括基本运算符、指数、三角函数等数学运算。程序首先处理输入的字符串,将特殊函数转换为内部表示,然后采用后缀表达式方法进行计算,支持括号和优先级处理。用户可以输入包含变量x的表达式,程序会计算并输出结果。
最低0.47元/天 解锁文章
7674





