请问这段C++程序有什么问题?应该怎么改?
题目描述请编一个程序,可以将英语规则名词由单数变成复数。已知规则如下:(a)以辅音字母y结尾,则将y改成i,再加es;(b)以s、x、ch、sh结尾,则加es;(c)以元...
题目描述
请编一个程序,可以将英语规则名词由单数变成复数。已知规则如下:
(a)以辅音字母y结尾,则将y改成i,再加es;
(b)以s、x、ch、sh结尾,则加es;
(c)以元音字母o结尾,则加es;
(d)其他情况直接加s。
要求用键盘输入英语规则名词,屏幕输出该名词的复数形式。
输入
先输入一个整数n,表示有n个名词(n<100);
此后有n行的字符串,每个字符串表示一个名词(每个名词长度不超过20个字符)。
输出
每行输出一个名词的复数形式。
样例输入
7
false
key
gets
index
getch
ash
supercargo
样例输出
falses
keies
getses
indexes
getches
ashes
supercargoes
我的答案是:
#include<stdio.h>
int main()
{
int n,i,j;
char a[20];
scanf("%d",&n);
for(i=0;i<n;i++)
{
gets(a);
j=strlen(a);
if(a[j-2]=='y')
{
a[j-2]='i';
a[j-1]='e';
a[j]='s';
a[j+1]='\0';
printf("%s",a);
}
else if((a[j-2]=='s')||(a[j-2]=='x')||(a[j-3]=='c'&&a[j-2]=='h')||(a[j-3]=='s'&&a[j-2]=='h')||(a[j-3]=='o'))
{
a[j]='e';
a[j+1]='s';
a[j+2]='\0';
printf("%s",a);
}
else
{
a[j-1]='s';
a[j]='\0';
printf("%s",a);
}
}
return 0;
} 展开
请编一个程序,可以将英语规则名词由单数变成复数。已知规则如下:
(a)以辅音字母y结尾,则将y改成i,再加es;
(b)以s、x、ch、sh结尾,则加es;
(c)以元音字母o结尾,则加es;
(d)其他情况直接加s。
要求用键盘输入英语规则名词,屏幕输出该名词的复数形式。
输入
先输入一个整数n,表示有n个名词(n<100);
此后有n行的字符串,每个字符串表示一个名词(每个名词长度不超过20个字符)。
输出
每行输出一个名词的复数形式。
样例输入
7
false
key
gets
index
getch
ash
supercargo
样例输出
falses
keies
getses
indexes
getches
ashes
supercargoes
我的答案是:
#include<stdio.h>
int main()
{
int n,i,j;
char a[20];
scanf("%d",&n);
for(i=0;i<n;i++)
{
gets(a);
j=strlen(a);
if(a[j-2]=='y')
{
a[j-2]='i';
a[j-1]='e';
a[j]='s';
a[j+1]='\0';
printf("%s",a);
}
else if((a[j-2]=='s')||(a[j-2]=='x')||(a[j-3]=='c'&&a[j-2]=='h')||(a[j-3]=='s'&&a[j-2]=='h')||(a[j-3]=='o'))
{
a[j]='e';
a[j+1]='s';
a[j+2]='\0';
printf("%s",a);
}
else
{
a[j-1]='s';
a[j]='\0';
printf("%s",a);
}
}
return 0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询