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 }