POJ 3371 Flesch Reading Ease (模拟题)2015-02-25Flesch Reading Ease:http://poj.org/problem?id=3371题目很水,就是看懂题就行。题意:给出一篇规范的文章,求其 句子数、单词数 和 音节数把这3个值代入题目给出的公式,输出其结果,保留2位小数。标记单词分隔符: 逗号(,) 和 空格( )句子分隔符:句号(.) 问号(?) 冒号(:) 分号(;) 感叹号(!)音节处理要求:(1)当单词总长度<=3时,音节数无条件+1(2) 当单词总长度>3时,单词中每出现一个元音字母(a、e、i、o、u、y),音节数+1,但是连续的(>=2)元音字母只按1个音节计算,且当单词后缀为-es、-ed和-e时,后缀的元 音字母e不列为音节数计算。但是后缀-le例外,要计算音节数。思路:没什么好说的,模拟水题,不知道为什么没人做0.0
#include <stdio.h>#include <string.h>bool is_yuan(char c){if(c == "a" || c == "e" || c == "i" || c == "o" || c == "u" || c == "y")return true;if(c == "A" || c == "E" || c == "I" || c == "O" || c == "U" || c == "Y")return true;return false;}int main(){char s[1010];int sentences = 0, words = 0, syllables = 0;while(~scanf("%s", s)){bool qian = false;int len = strlen(s);if(len <= 3){syllables++;//printf("1 ");}else{if(is_yuan(s[0])){syllables++;qian = true;//printf("%d ", 0);}for(int i = 1; i < len; i++){if(is_yuan(s[i]) && !qian){syllables++;qian = true; // printf("%d ", i);}else if(!is_yuan(s[i])){qian = false;}}if(s[len-1] == "," || s[len-1] == "." || s[len-1] == ";" || s[len-1] == "!" || s[len-1] == "?" || s[len-1] == ":"){if((s[len-2] == "e" && s[len-3] != "l" && !is_yuan(s[len-3])) || (s[len-2] == "s" && s[len-3] == "e" && !is_yuan(s[len-4])) || (s[len-2] == "d" && s[len-3] == "e" && !is_yuan(s[len-4]))){syllables--;//printf("*");}}else{if((s[len-1] == "e" && s[len-2] != "l" && !is_yuan(s[len-2])) || (s[len-1] == "s" && s[len-2] == "e" && !is_yuan(s[len-3])) || (s[len-1] == "d" && s[len-2] == "e" && !is_yuan(s[len-3]))){syllables--;//printf("#");}}}if(s[len-1] == "." || s[len-1] == ";" || s[len-1] == "!" || s[len-1] == "?" || s[len-1] == ":"){sentences++;}words++;//puts("");}//printf("%d %d %d
", syllables, words, sentences);printf("%.2f
", 206.835-1.015*words/sentences-84.6*syllables/words);return 0;}