POJ 3371 Flesch Reading Ease 无聊恶心模拟题

题目:http://poj.org/problem?id=3371

无聊恶心题,还是不做的好,不但浪费时间而且学习英语。

不过为了做出点技术含量,写了个递归函数。。。

还有最后判断es,ed,le时只判断小写,因为想多了还错了一次。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <ctype.h>
 4 
 5 bool is_sy(char c)
 6 {
 7     if(c > 'y' || c < 'A')return 0;
 8     if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'y' || is_sy(c+32))
 9         return 1;
10     return 0;
11 }
12 
13 int main()
14 {
15     char s[100];
16     int st = 0, sy = 0, wd = 0;
17     while(scanf("%s", s) != EOF)
18     {
19         wd++;
20         int len = strlen(s);
21         if(s[len-1] == '.' || s[len-1] == '?' || s[len-1] == ':' || s[len-1] == ';' || s[len-1] == '!')
22             st++;
23         while(!isalpha(s[len-1]))
24             len--;
25         if(len <= 3)sy++;
26         else
27         {
28             if(is_sy(s[0]))sy++;
29             for(int i = 1; i < len; i++)
30                 if(is_sy(s[i]) && !is_sy(s[i-1]))sy++;
31             if(s[len-2] == 'e' && !is_sy(s[len-3]) && (s[len-1] == 's' || s[len-1] == 'd'))sy--;
32             if(s[len-1] == 'e' && !is_sy(s[len-2]) && s[len-2] != 'l')sy--;
33         }
34     }
35     printf("%.2f\n", 206.835 - 1.015 * (1.0*wd/st) - 84.6 * (1.0*sy/wd));
36     return 0;
37 }
Oo0O0oO

 

posted @ 2013-10-13 15:57  Anti-Magic  阅读(208)  评论(0编辑  收藏  举报