POJ 3332

题意:检查输入字符串是否是浮点型。

题解:模拟= =!

View Code
 1 #include<cstdio>

 2 #include<cstring>

 3 #include<algorithm>

 4 #include<cctype>

 5 using namespace std;

 6 int main()

 7 {

 8     int T;

 9     for(scanf("%d",&T); T; T--)

10     {

11         char s[1200];

12         scanf(" %s",s);

13         if(s[0]=='+'||s[0]=='-'||isdigit(s[0]))

14         {

15             int c1=0,c2=0;

16             int i;

17             for(i=1; s[i]!='\0'; i++)

18             {

19                 if(s[i]=='.')

20                 {

21                     c1++;

22                     if(!isdigit(s[i-1])||!isdigit(s[i+1]))

23                         c1=2;

24                     if(c1>1||c2>0)

25                     {

26                         c1=2;

27                         break;

28                     }

29                 }

30                 else if(s[i]=='E'||s[i]=='e')

31                 {

32                     c2++;

33                     if(!isdigit(s[i-1]))

34                         c2=2;

35                     if(c2>1)

36                     {

37                         c1=2;

38                         break;

39                     }

40                 }

41                 else if(!isdigit(s[i]))

42                 {

43                     if(!isdigit(s[i-1])&&s[i-1]!='.'&&s[i-1]!='E'&&s[i-1]!='e')

44                     {

45                         c1=2;

46                         break;

47                     }

48                 }

49             }

50             if(!isdigit(s[i-1]))

51                 c1=2;

52             if(c1==2)

53                 puts("ILLEGAL");

54             else

55                 puts("LEGAL");

56         }

57         else

58             puts("ILLEGAL");

59     }

60     return 0;

61 }

你可能感兴趣的:(poj)