问题标题: 酷町堂:1488

0
0
已解决
胡景波
胡景波
中级光能
中级光能

1488   名词复数

题目描述 Description

在英语中,单数名词变为复数形式会有很多种不同的情况,比如直接加-s,-es,变y为i再加-es……现只考虑以下3种情况:
1.凡是以s、z、x、ch、sh结尾的词,在该词末尾加上后辍es构成复数;
2、以y结尾的名词,将y改变为i,再加es;
3、除以上情况以外的都直接加s。
给定n个单词,并已知这些单词的词性,'n'表示名词,'v'表示动词,如果这些词中有名词的,请输出其复数形式,如果不是名词,则原样输出。

输入描述 Input Description

输入为n+1行,第一行为给定的单词数n(n≤100);
之后的n行,每行一个单词,以及该单词的词性(n或者v)

输出描述 Output Description

输出为n行,每一行为一个单词,如果单词是名词,则输出其对应的复数形式,如果是动词,则原样输出。

样例输入 Sample Input

 

4
teacher n
teach v
box n
family n

样例输出 Sample Output

 

teachers
teach
boxes
families

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    string a;
    char b;
    int n,l=a.size();
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a>>b;
        if(a[l-1]=='s'&&b=='n'||a[l-1]=='z'&&b=='n'||a[l-1]=='x'&&b=='n'||a[l-1]=='h'&&b=='n')
        {
            cout<<a<<"es"<<endl;
        } 
        else if(a[l-1]=='y')
        {   
            if(b=='n')
            {
                a[l-1]='i';
                cout<<a<<"es"<<endl;
            }
            else
            {
                cout<<a<<endl;
            }
        }
        else if(a[l-1]!='s'&&a[l-1]!='z'&&a[l-1]!='x'&a[l-1]!='y'&&b=='n')
        {
            cout<<a<<"s"<<endl;
        }
        else
        {
            cout<<a<<endl;
        }
    }
    return 0;

12分;

请找错。


0
已采纳
康曦
康曦
中级光能
中级光能

核心:

  • if(k是动词) cout<<s<<endl;
  • else{
  • int y=单词最后一位下标;
  • if(s[y]?||s[y]?||s[y]=='x'||(s[y]?&&s[y-1]?)||(s[y]?&&s[y-1]?))
  • cout<<s<<"es"<<endl;
  • else if(s[y]?){
  • s[y]=?;
  • cout<<s<<"es"<<endl;
  • }
  • else cout<<s<<"s"<<endl;
我要回答