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

题解:模拟= =!

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 }