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);
}
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯