題目鏈接:https://vjudge.net/contest/335987#problem/D
代碼:
第一次寫的:一直WA1,原因是'ne'弄錯了,n、e都應該去掉。
#include<bits/stdc++.h>
using namespace std;
void connect(char s[],char c[],int len,int lan)
{
int j=0;
for(int i=len-1; i<len+lan-1; i++)
{
s[i]=c[j++];
}
}
void print(char s[],int len)
{
for(int i=0; i<len; i++)
{
printf("%c",s[i]);
}
printf("\n");
}
int main()
{
int t;
cin>>t;
while(t--)
{
char s[40],c[10];
cin>>s;
int len=strlen(s);
if(s[len-1]=='a')
{
strcpy(c,"as");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-1]=='i'||s[len-1]=='y')
{
strcpy(c,"ios");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-1]=='l')
{
strcpy(c,"les");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-1]=='n')
{
strcpy(c,"anes");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-2]=='n'&&s[len-1]=='e')
{
strcpy(c,"anes");
int lan=strlen(c);
connect(s,c,len-1,lan);
print(s,len+lan-1-1);
}
else if(s[len-1]=='o')
{
strcpy(c,"os");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-1]=='r')
{
strcpy(c,"res");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-1]=='t')
{
strcpy(c,"tas");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-1]=='u')
{
strcpy(c,"us");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-1]=='v')
{
strcpy(c,"ves");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else if(s[len-1]=='w')
{
strcpy(c,"was");
int lan=strlen(c);
connect(s,c,len,lan);
print(s,len+lan-1);
}
else
{
strcpy(c,"us");
int lan=strlen(c);
connect(s,c,len+1,lan);
print(s,len+lan);
}
}
return 0;
}
第二次寫的:一直WA1,結果是掉了w的情況。
通過這個方法習得substr函數:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
string s;
cin>>s;
int len=s.size();
if(s[len-1]=='a'||s[len-1]=='o'||s[len-1]=='u')
{
cout<<s<<"s"<<endl;
}
else if(s[len-1]=='i'||s[len-1]=='y')
{
cout<<s.substr(0,len-1)<<"ios"<<endl;//表示取出從0開始的長度爲len-1的子串
}
else if(s[len-2]=='n'&&s[len-1]=='e')
{
cout<<s.substr(0,len-2)<<"anes"<<endl;
}
else if(s[len-1]=='n')
{
cout<<s.substr(0,len-1)<<"anes"<<endl;
}
else if(s[len-1]=='l'||s[len-1]=='r'||s[len-1]=='v')
{
cout<<s.substr(0,len)<<"es"<<endl;
}
else if(s[len-1]=='t'||s[len-1]=='w')
{
cout<<s.substr(0,len)<<"as"<<endl;
}
else
{
cout<<s<<"us"<<endl;
}
}
return 0;
}