1156: 单数变复数
时间限制: 1 Sec 内存限制: 128 MB提交: 4471 解决: 2854
[状态] [讨论版] [提交] [命题人:admin]
题目描述
输入一个名词英语单词,按照英语语法规则把单数变成复数。规则如下:
(1) 以辅音字母y结尾,变y为i,再加es;
(2) 以s, x, ch, sh结尾,则加es;
(3) 以元音o结尾,则加es;
(4) 其他情况加上s。
输入
输入一个字符串,仅含小写字母,长度不超过20。
输出
输出其对应的复数形式。
样例输入 Copy
butterfly
样例输出 Copy
butterflies
代码
#include <stdio.h>
#include <limits.h>
#include <string.h>int main()
{int i,k=0,c=0, n;char s[1100];gets(s);//遇到回车结束k=strlen(s);//求字符串长度if(s[k-1]=='y')//判断为那种类型,再变形,(1) 以辅音字母y结尾,变y为i,再加es;{s[k-1]='i';s[k]='e';s[k+1]='s';s[k+2]='\0';//遇到/0时读取字符串结束,所以加个停止符号}else if(s[k-1]=='s'||s[k-1]=='x'||(s[k-2]=='c'&&s[k-1]=='h')||(s[k-2]=='s'&&s[k-1]=='h'))//(2) 以s, x, ch, sh结尾,则加es;{s[k]='e';s[k+1]='s';s[k+2]='\0';}else if(s[k-1]=='o')//(3) 以元音o结尾,则加es;{s[k]='e';s[k+1]='s';s[k+2]='\0';}else//(4) 其他情况加上s。{s[k]='s';s[k+1]='\0';}puts(s);//输出字符串并伴有回车return 0;
}