📄 lx.txt
字号:
#include "stdio.h"
#include "ctype.h"
#include "math.h"
#include "iostream.h"
#include"string.h"
#define LETTER 0
#define DIGIT 1
#define POINT 2
#define OTHER 3
#define POWER 4
#define PLUS 5
#define MINUS 6
#define ClassNo 100
#define ClassOther 200
#define EndState -1
char num[100];
int w,n,p,e,d;
int Class,i=0;
int ICON;
float FCON;
static int CurrentState;
int GetChar(void);
int EXCUTE(int,int);
int LEX(void);
int HandleOtherWord(void)
{
return ClassOther;
}
int HandleError(void)
{
printf("ERROR!\n");
return 0;
}
int GetChar(void)
{
int c;
c=num[i++];
if(isdigit(c))
{
d=c-'0';return DIGIT;
}
if(c=='.')return POINT;
if(c=='E'||c=='e')return POWER;
if(c=='+') return PLUS;
if(c=='-')return MINUS;
return OTHER;
}
//============================================
int EXCUTE(int state,int symbol)
{
switch (state)
{
case 0:switch(symbol)
{
case DIGIT:n=0;p=0;e=1;w=d;CurrentState=1;Class=ClassNo;break;
case POINT:w=0;n=0;p=0;e=1;CurrentState=3;Class=ClassNo;break;
default:HandleOtherWord();Class=ClassOther;
CurrentState=EndState;
}
break;
case 1:switch(symbol)
{
case DIGIT:w=w*10+d;break;
case POINT:CurrentState=2;break;
case POWER:CurrentState=4;break;
default:FCON=w;CurrentState=EndState;
}
break;
case 2:switch(symbol)
{
case DIGIT:n++;w=w*10+d;break;
case POWER:CurrentState=4;break;
default:FCON=w*pow(10,e*p-n);CurrentState=EndState;
}
break;
case 3:switch(symbol)
{
case DIGIT:n++;w=w*10+d;CurrentState=2;break;
default:HandleError();CurrentState=EndState;
}
break;
case 4:switch(symbol)
{
case DIGIT:p=p*10+d;CurrentState=6;break;
case MINUS:e=-1;CurrentState=5;break;
case PLUS:CurrentState=5;break;
default:HandleError();CurrentState=EndState;
}
break;
case 5:switch(symbol)
{
case DIGIT:p=p*10+d;CurrentState=6;break;
default:HandleError();CurrentState=EndState;
}
break;
case 6:switch(symbol)
{
case DIGIT:p=p*10+d;break;
default:FCON=w*pow(10,e*p-n);CurrentState=EndState;
}
break;
}
return CurrentState;
}
int LEX(void)
{
int ch;
CurrentState=0;
while(CurrentState!=EndState)
{
ch=GetChar();
EXCUTE(CurrentState,ch);
}
return Class;
}
void main()
{ printf("please input\n");
scanf("%s",num);
LEX();
// cout<<ICON<<endl;
cout<<FCON<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -