c语言中用后三个字母替换,C语言编程实现,将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母...

C语言编程实现,将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母

答案:4  信息版本:手机版

解决时间 2020-05-20 06:14

已解决

2020-05-19 13:42

将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母,大写字母和其他字符不处理,仍然保留。要求最终输出的字符串中不再存在任何连续出现3次的小写字母。

int ChangeString(char *pInStr,char *pOutStr)

int 0:处理成功 -1:出现异常

例如

pInStr= "lIdddjilfff";

pOutStr= "lIejilg";

pInStr= "aaaabazzzAs";

pOutStr= "babaaAs";

pInStr= "aaaaaaaaacc";

pOutStr= "d";

全部回答

1楼

2020-05-19 18:50

#include 

int ChangeString(char *pInStr,char *pOutStr)

{

int pos=0,change=0;

bool t;

char a[100],b[100],*instr=a,*outstr=b;

while(true)

{

*(instr+pos)=*(pInStr+pos);

if(*(pInStr+pos)=='\0')

break;

pos++;

}

while(true)

{

change=0;

pos=0;

for(int n=0;*(instr+n)!='\0';n++)

{

t=false;

if(*(instr+n)>='a' && *(instr+n)<='z')

{

if(*(instr+n+1)!='\0' && *(instr+n+2)!='\0')

{

if(*(instr+n)==*(instr+n+1) && *(instr+n)==*(instr+n+2))

{

if(*(instr+n)=='z')

*(outstr+pos)='a';

else

*(outstr+pos)=*(instr+n)+1;

pos++;

n+=2;

t=true;

change=1;

}

}

}

if(t==false)

{

*(outstr+pos)=*(instr+n);

pos++;

}

}

*(outstr+pos)='\0';

pos=0;

while(true)

{

*(instr+pos)=*(outstr+pos);

if(*(outstr+pos)=='\0')

break;

pos++;

}

if(change==0)

break;

}

pos=0;

while(true)

{

*(pOutStr+pos)=*(instr+pos);

if(*(instr+pos)=='\0')

break;

pos++;

}

return 0;

}

int main()

{

char a[100],b[100];

scanf("%s",a);

ChangeString(a,b);

printf("%s\n",b);

return 0;

}

2楼

2020-05-19 17:35

#include 

#include 

int ChangeString(char *pInStr,char *pOutStr)

{

strcpy(pOutStr, pInStr);

bool bChange = false;

int iCnt = -1;

do

{

bChange = false;

iCnt = 0;

while (*(pOutStr + iCnt) != '\0')

{

++iCnt;

}

iCnt--;

for (int i = 0; i 

{

char *pCur = pOutStr + i;

if (*pCur != '\0'

&& *(pCur + 1) != '\0'

&& *(pCur + 2) != '\0'

&& *pCur == *(pCur + 1)

&& *(pCur + 1) == *(pCur + 2)

&& *pCur <= 'z'

&& *pCur >= 'a')

{

if (*pCur != 'z')

{

++*pCur;

}

else

{

*pCur = 'a';

}

int j;

for (j = 3; *(pCur + j) != '\0'; ++j)

{

*(pCur + j - 2) = *(pCur + j);

}

*(pCur + j - 2) = '\0';

bChange = true;

break;

}

}

} while(bChange);

return 0;

}

int main()

{

char* pInStr= "aaaaaaaaacc";

char pOutStr[1024]= "";

if (0 == ChangeString(pInStr, pOutStr))

{

printf("In : %s\n", pInStr);

printf("Out : %s\n", pOutStr);

}

}

3楼

2020-05-19 16:32

按你说的题意是没法做到的,是不是文字描述不对?“替换为改小写字母在字母表中的下一个字母”,是替换为字母表中下一个字母的大写?

再看看别人怎么说的。

4楼

2020-05-19 15:06

代码如下:

#include

#include

int ChangeString(char *pInStr,char *pOutStr)

{

strcpy(pOutStr, pInStr);

bool bChange = false;

int iCnt = -1;

do

{

bChange = false;

iCnt = 0;

while (*(pOutStr + iCnt) != '\0')

{

++iCnt;

}

iCnt--;

for (int i = 0; i 

{

char *pCur = pOutStr + i;

if (*pCur != '\0'

&& *(pCur + 1) != '\0'

&& *(pCur + 2) != '\0'

&& *pCur == *(pCur + 1)

&& *(pCur + 1) == *(pCur + 2)

&& *pCur <= 'z'

&& *pCur >= 'a')

{

if (*pCur != 'z')

{

++*pCur;

}

else

{

*pCur = 'a';

}

int j;

for (j = 3; *(pCur + j) != '\0'; ++j)

{

*(pCur + j - 2) = *(pCur + j);

}

*(pCur + j - 2) = '\0';

bChange = true;

break;

}

}

} while(bChange);

return 0;

}

void main()

{

char* pInStr= "aaaaaaaaacc";

char pOutStr[1024]= "";

if (0 == ChangeString(pInStr, pOutStr))

{

printf("In : %s\n", pInStr);

printf("Out : %s\n", pOutStr);

}

}

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值