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

 

你可能感兴趣的:(reading)