问题标题: 酷町堂:1488

0
0
侯雨宸
侯雨宸
初级守护
初级守护

1488   名词复数

经验值:800 时间限制:1000毫秒

题目描述 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

 

 

 

0分代码:

#include <bits/stdc++.h>
using namespace std;
string s,a; 
int main(){
    int n;
    cin>>n;
    while(n--){
        cin>>s>>a;
        if(a=="v"){
            cout<<s<<endl;
        }
        if(s[s.size()-1]=='s'||s[s.size()-1]=='z'||s[s.size()-1]=='x'||s[s.size()-2]=='c'&&s[s.size()-1]=='h'||s[s.size()-2]=='s'&&s[s.size()-1]=='h'){
            cout<<s<<"es";
        }else if(s[s.size()-1]=='y'&&a=="n"){
            s.erase(s.size()-1,1);
            cout<<s<<"ies";
        }else{
            cout<<s<<"s";
        }
        cout<<endl;
    }
    return 0;
}

哪里错了???


0
0
我要回答