注意:isdigit()函数只能判断字符型是否是数字
#include <iostream>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
using namespace std;
int check(int k,char s)
{
switch(k)
{
case 1:
if(s=='+'||s=='-') return 2;
if(isdigit(s)) return 3;
return -1;
case 2:
if(isdigit(s)) return 3;
return -1;
case 3:
if(isdigit(s)) return 3;
if(s=='.') return 4;
if(s=='e'||s=='E') return 6;
return -1;
case 4:
if(isdigit(s)) return 5;
return -1;
case 5:
if(isdigit(s)) return 5;
if(s=='\0') return 0;
if(s=='e'||s=='E') return 6;
return -1;
case 6:
if(s=='+'||s=='-') return 7;
if(isdigit(s)) return 8;
return -1;
case 7:
if(isdigit(s)) return 8;
return -1;
case 8:
if(isdigit(s)) return 8;
if(s=='\0') return 0;
return -1;
default:
return -1;
}
}
int main()
{
char a[256],b[256];
gets(a);
int l=strlen(a);
int i=0;
while(i<l&&a[i]==' ')
i++;
int j=l-1;
while(j>=0&&a[j]==' ')
j--;
int k=0;
for(;i<=j;i++)
b[k++]=a[i];
b[k]='\0';
int s=1;
for(int x=0;x<=strlen(b);x++)
{s=check(s,b[x]);
if(s==-1)
break;
}
if(s==0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}