标题:[讨论]如何替换字符串?(效率)
只看楼主
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
用数据结构的图~!!!
那样的效率是最高的,但是生成图又太麻烦了哈~~

淘宝杜琨
2006-04-29 20:18
adsl0231
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2006-3-29
得分:0 
#include<stdio.h>
#include<string.h>
void main()
{
char a[20],*p,f,g;
int c,d;
printf("请输入一串字符:");
gets(a);
p=a;
printf("请输入要替换的字符:");
f=getchar();
getchar();
printf("请输入替换的字符:");
g=getchar();
d=strlen(a);
for(c=0;c<d;c++,p++)
{
if((*p)==f)
(*p)=g;
}
puts(a);
}

2006-04-29 20:20
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

如果只是输出
#include <stdio.h>
int fun(char *A,char *B);

int main(void)
{
char A[256],B[256],C[256];
char *ptrA,*ptrB,*ptrC;
char *S;
while(gets(A)==A&& gets(B)==B&&gets(C)==C)
{
ptrA=A;
ptrB=B;
ptrC=C;
int b=strlen(ptrB);
while(*ptrA)
{
if(fun(ptrA,ptrB))
{
ptrA+=b-1;
printf("%s",ptrC);
}
else
{
printf("%c",*ptrA);
}
ptrA++;
}

printf("\n");
}

return ;
}
int fun(char *A,char *B)
{
while(*A!=0&&*B!=0)
{
if(*A!=*B)return 0;
A++,B++;
}
return 1;
}


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-04-29 20:36
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 

#include <stdio.h>
#include <conio.h>

int main(void)
{
char stra[20], ca, cb;
int ia;

fgets(stra, 19, stdin); //主串
fflush(stdin);
ca = getchar(); //被替换字符
fflush(stdin); //替换字符
cb = getchar();

for (ia = 0; stra[ia] != '\0'; ia++)
{
if (stra[ia] == ca)
{
stra[ia] = cb;
}
}
puts(stra);

getch();
return 0;
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 20:59
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
楼上你看错题了

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-04-29 21:06
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
见笑了

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 21:14
nap
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-4-20
得分:0 
谢谢!
2006-04-29 21:36
nap
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-4-20
得分:0 
[讨论]时间用的还是太长

时间用的还是太长。可能函数调用时用的时间太长。
#include <stdio.h>
#include<string.h>
int fun(char *A,char *B);

int main(void)
{
char A[256],B[256],C[256];
char *ptrA,*ptrB,*ptrC;
char *S;
int b;
while(gets(A)==A&& gets(B)==B&&gets(C)==C)
{
ptrA=A;
ptrB=B;
ptrC=C;
b=strlen(ptrB);
while(*ptrA)
{
if(fun(ptrA,ptrB))
{
ptrA+=b-1;
printf("%s",ptrC);
}
else
{
printf("%c",*ptrA);
}
ptrA++;
}

printf("\n");
}

return ;
}
int fun(char *A,char *B)
{
while(*A!=0&&*B!=0)
{
if(*A!=*B)return 0;
A++;B++;
}
return 1;
}

2006-04-30 11:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-61159-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.298831 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved