C语言,字符串,单数变复数

输入一个名词英语单词,按照英语语法规则把单数变成复数。规则如下:(1)以辅音字母y结尾,变y为i,再加es;(2)以s,x,ch,sh结尾,则加es;(3)以元音o结尾,... 输入一个名词英语单词,按照英语语法规则把单数变成复数。规则如下: (1) 以辅音字母y结尾,变y为i,再加es; (2) 以s, x, ch, sh结尾,则加es; (3) 以元音o结尾,则加es; (4) 其他情况加上s。
输入一个字符串,仅含小写字母,长度不超过20。
Output
输出其对应的复数形式。
#include<stdio.h>
#include<string.h>
int main()
{
int i;
char word[31];
scanf("%s",word);
i=strlen(word);
if(word[i-1]=='y')
{
word[i-1]='i';
word[i]='e';
word[i+1]='s';
}
else if(word[i-1]=='s'||word[i-1]=='x')
{
word[i]='e';
word[i+1]='s';
}
else if(word[i-1]=='h')
{
if(word[i-2]=='s'||word[i-2]=='c')
{
word[i]='e';
word[i+1]='s';
}
}
else if(word[i-1]=='o')
{
word[i]='e';
word[i+1]='s';
}
else
word[i]='s';

puts(word);
}
我的代码,

为什么输出的答案会变复数后随机加其他东西。
展开
 我来答
侦探章邯
推荐于2016-11-14 · TA获得超过579个赞
知道小有建树答主
回答量:830
采纳率:0%
帮助的人:608万
展开全部

x修改后:

#include<stdio.h>
void main()
{
   int n,k=0;
   char a[20];
   printf("输入一个字符串\n");
   scanf("%s",a);
   for(n=0;a[n]!='\0';n++)//a[n]!='\0'
   {
       if(a[n]<='Z'&&a[n]>='A')
       {
           k=k+1;
           a[n] = a[n]+32;
           printf("%c",a[n]);
       }
       if(a[n]<='z'&&a[n]>='a')
       {
           k=k+1;
           a[n] = a[n]-32;
           printf("%c",a[n]);
       }
       else
       {
           printf("%c",a[n]);
       }
   }  
 
   printf("更改个数%d\n",k);
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式