Easier Done Than Said?

                                                                    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)


Problem Description
Password security is a tricky thing. Users prefer simple passwords that are easy to remember (like buddy), but such passwords are often insecure. Some sites use random computer-generated passwords (like xvtpzyo), but users have a hard time remembering them and sometimes leave them written on notes stuck to their computer. One potential solution is to generate "pronounceable" passwords that are relatively secure but still easy to remember.

FnordCom is developing such a password generator. You work in the quality control department, and it's your job to test the generator and make sure that the passwords are acceptable. To be acceptable, a password must satisfy these three rules:

It must contain at least one vowel.

It cannot contain three consecutive vowels or three consecutive consonants.

It cannot contain two consecutive occurrences of the same letter, except for 'ee' or 'oo'.

(For the purposes of this problem, the vowels are 'a', 'e', 'i', 'o', and 'u'; all other letters are consonants.) Note that these rules are not perfect; there are many common/pronounceable words that are not acceptable.

 
Input
The input consists of one or more potential passwords, one per line, followed by a line containing only the word 'end' that signals the end of the file. Each password is at least one and at most twenty letters long and consists only of lowercase letters.

 
Output
For each password, output whether or not it is acceptable, using the precise format shown in the example.

 
Sample Input
a
tv
ptoui
bontres
zoggax
wiinq
eep
houctuh
end
 
Sample Output
<a> is acceptable.
<tv> is not acceptable.
<ptoui> is not acceptable.
<bontres> is not acceptable.
<zoggax> is not acceptable.
<wiinq> is not acceptable.
<eep> is acceptable.
<houctuh> is acceptable.
 
题意:给你一段密码,判断这段密码是否安全,若安全则是 acceptable。
密码必须同时满足下面三个限制条件才是安全密码:1、必须包含元音字母;
2、不能包含连续的三个元音或辅音字母;
3、除了ee和oo外,任何两个连续字母如果相同,密码就不安全。
#include<stdio.h>
#include<string.h>
int main()
{
int i,flag,len,vowel;
char str[25];
while(gets(str))
{
if(!strcmp(str,"end")) break;
len=strlen(str);
vowel=0; flag=1;
for(i=0;i<=1;i++) /*特判str[0]和str[1]*/
if(str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u')
vowel++;
if(str[0]==str[1]&&str[0]!='o'&&str[0]!='e')
{
flag=0;
printf("<%s> is not acceptable.\n",str);
continue;
}
for(i=2;i<len;i++)
{
if((str[i]==str[i-1])&&(str[i]!='e'&&str[i]!='o')) /*两个连续*/
{
flag=0;
break;
}
if(str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u') /*元音字母*/
vowel++;
if((str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u')&&
(str[i-1]=='a'||str[i-1]=='e'||str[i-1]=='i'||str[i-1]=='o'||str[i-1]=='u')&&
(str[i-2]=='a'||str[i-2]=='e'||str[i-2]=='i'||str[i-2]=='o'||str[i-2]=='u')) /*三个连续元音*/
{
flag=0;
break;
}
if((str[i]!='a'&&str[i]!='e'&&str[i]!='i'&&str[i]!='o'&&str[i]!='u')&&
(str[i-1]!='a'&&str[i-1]!='e'&&str[i-1]!='i'&&str[i-1]!='o'&&str[i-1]!='u')&&
(str[i-2]!='a'&&str[i-2]!='e'&&str[i-2]!='i'&&str[i-2]!='o'&&str[i-2]!='u')) /*三个连续辅音*/
{
flag=0;
break;
}
}
if(flag&&vowel>0)
printf("<%s> is acceptable.\n",str);
else
printf("<%s> is not acceptable.\n",str);
}
return 0;
}

最新文章

  1. Windows7 忘记密码的解决办法
  2. 调整Virtual Box硬盘大小
  3. VS2008 工程只生成dll不生成lib的解决方案
  4. 使用PHP获取根域名的方法!
  5. VS 2013打开.edmx文件时报类型转换异常
  6. jquery.pagination.js分页
  7. Linux平台Cpu使用率的计算
  8. Openjudge-计算概论(A)-找和为K的两个元素
  9. 查看eclipse ADT SDK JDK版本号
  10. 谈谈git以及如何关联github
  11. 解决easyui combobox赋值boolean类型的值时,经常出现的内容显示的value而不是text的bug
  12. django的request介绍和APIView流程分析和CBV的流程分析
  13. ServiceStack 错误处理
  14. Docker未启动错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  15. 代码:css小图标
  16. 如何修改静态IP地址和动态IP地址
  17. Linux命令-用户管理命令:useradd,passwd,who,w
  18. .NET/C# 使用 Span 为字符串处理提升性能
  19. vue开发的一些设置以及技巧
  20. 用户登录失败,该用户与可信SQL Server连接无关联,错误:18452

热门文章

  1. Java Web 前端高性能优化(二)
  2. linux 访问windows共享
  3. [水题]Codeforces337A Puzzles
  4. UVALive - 3713 Astronauts
  5. Android Integer.decode()和Intger.valueof()
  6. Android 三档自定义滑动开关,禁止点击功能的实现,用默认的seekbar组件实现
  7. Emmet(前身是zen coding)介绍和使用
  8. Android:Fragment+ViewPager实现Tab滑动
  9. RPGJS 进阶分析之 如何使用RMXP导出的数据
  10. poj1160Post Office(DP)