C语言编程实现,将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母
答案:4信息版本:手机版
解决时间 -05-20 06:14
已解决
-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楼
-05-19 18:50
#include
intChangeString(char*pInStr,char*pOutStr)
{
intpos=0,change=0;
boolt;
chara[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(intn=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++;
}
return0;
}
intmain()
{
chara[100],b[100];
scanf("%s",a);
ChangeString(a,b);
printf("%s\n",b);
return0;
}
2楼
-05-19 17:35
#include
#include
intChangeString(char*pInStr,char*pOutStr)
{
strcpy(pOutStr,pInStr);
boolbChange=false;
intiCnt=-1;
do
{
bChange=false;
iCnt=0;
while(*(pOutStr+iCnt)!='\0')
{
++iCnt;
}
iCnt--;
for(inti=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';
}
intj;
for(j=3;*(pCur+j)!='\0';++j)
{
*(pCur+j-2)=*(pCur+j);
}
*(pCur+j-2)='\0';
bChange=true;
break;
}
}
}while(bChange);
return0;
}
intmain()
{
char*pInStr="aaaaaaaaacc";
charpOutStr[1024]="";
if(0==ChangeString(pInStr,pOutStr))
{
printf("In:%s\n",pInStr);
printf("Out:%s\n",pOutStr);
}
}
3楼
-05-19 16:32
按你说的题意是没法做到的,是不是文字描述不对?“替换为改小写字母在字母表中的下一个字母”,是替换为字母表中下一个字母的大写?
再看看别人怎么说的。
4楼
-05-19 15:06
代码如下:
#include
#include
intChangeString(char*pInStr,char*pOutStr)
{
strcpy(pOutStr,pInStr);
boolbChange=false;
intiCnt=-1;
do
{
bChange=false;
iCnt=0;
while(*(pOutStr+iCnt)!='\0')
{
++iCnt;
}
iCnt--;
for(inti=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';
}
intj;
for(j=3;*(pCur+j)!='\0';++j)
{
*(pCur+j-2)=*(pCur+j);
}
*(pCur+j-2)='\0';
bChange=true;
break;
}
}
}while(bChange);
return0;
}
voidmain()
{
char*pInStr="aaaaaaaaacc";
charpOutStr[1024]="";
if(0==ChangeString(pInStr,pOutStr))
{
printf("In:%s\n",pInStr);
printf("Out:%s\n",pOutStr);
}
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯
c语言中用后三个字母替换 C语言编程实现 将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母...