规则:
1.必须至少包含一个元音字母。a e i o u
2.不能包含三个连续元音或者连续辅音字母。
3.不能包含两个连续字母,除了‘ee‘和‘oo‘。
PS:字母个数(1<= N <=20).
#define _CRT_SECURE_NO_DEPRECATE #include <stdio.h> #include <stdlib.h> #include <string.h> int is_vowel(char strIn) { if(strIn == ‘a‘ || strIn == ‘e‘ ||strIn == ‘i‘ || strIn == ‘o‘ || strIn == ‘u‘) return 1; else return 0; } void main() { while(1) { char strIn[21] = {‘\0‘}; char strTemp[21] = {‘\0‘}; //字符缓存,用于判断是否连续出现相同字符 char temp; int count = 0; //统计连续相同字母个数 int count2 = 0; //统计连续的元音或者辅音字母个数 int vowelFlag = 0; //是否元音的标志位 int lastIsVowel = 0; //上一个字母是否是元音的标志位 0 不是 1 是 int sign = 0; //是否含有元音标志位 int resultFalg = 1; int len; //保存输入的字符串的长度 gets(strIn); len = (int)strlen(strIn); //先判断是否是结束查询标志 if(strcmp(strIn, "end") == 0) return; temp = strIn[0]; count = 1; count2 = 1; vowelFlag = is_vowel(strIn[0]); lastIsVowel = is_vowel(strIn[0]); //查找是否包含元音字母,如果遇到连续3个元音字母,辅音字母或者连续2个除了‘ee‘‘oo‘之外的相同字母,则判断为不可接受,并退出循环 for(int i = 0; i < len; i++) { if(sign == 0) sign = is_vowel(strIn[i]); //如果出现相同的字母 if(i > 0 && temp == strIn[i]) { count++; if(count == 2) { if(temp != ‘e‘ && temp != ‘o‘) { resultFalg = 0; //不可接收,跳出循环 break; } } } //如果出现三个连续元音或连续三个辅音 if(i > 0) { vowelFlag = is_vowel(strIn[i]); if(vowelFlag == lastIsVowel) { count2++; if(count2 >= 3) { resultFalg = 0; //不可接收,跳出循环 break; } } else { count2 = 1; lastIsVowel = vowelFlag; } } temp = strIn[i]; count = 1; } if(sign == 1 && resultFalg != 0) { printf("<%s> is acceptable.", strIn ); printf("\n"); } else { printf("<%s> is not acceptable.", strIn ); printf("\n"); } } }
时间: 2024-11-09 03:08:57