当前位置: 代码迷 >> 综合 >> ZZUIOJ--1156: 单数变复数
  详细解决方案

ZZUIOJ--1156: 单数变复数

热度:65   发布时间:2023-12-06 06:05:42.0

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;
}