| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1501 人关注过本帖
标题:字符串配对~
只看楼主 加入收藏
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
收藏
 问题点数:0 回复次数:19 
字符串配对~

编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数
。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:
as,则应输出6。
#include"stdio.h"
#include"string.h"
#include"conio.h"
#define M 80
#define N 10
int fun(char m[M],char n[N])
{int i,j,t,z,cont=0;
char k[N]; \\定义新的数组,用来存放截取的字符串
t=strlen(n);
j=strlen(m);
for(i=0;i<j;i++)
{z=0; \\还原k[]的下标值
{for(i=i;i<i+t&&i+t<j;i++) \\依次截取与N[]等长的一段存放在K[]中
{k[z++]=m[i];
k[z]='\0';}
if(!strcmp(k,n)) \\若K与N相同,则CONT自加1
cont++;}
}
return cont;}

void main()
{char m[M],n[N];
int z;
printf("intput 1:\n");
gets(m);
printf("intput 2:\n");
gets(n);
z=fun(m,n);
printf("cont=%d\n",z);
\\当红字部分改为printf("cont=%d\n",fun);时却提示有错误

getch();}
为什么我的程序不能得到想要的效果,到底哪个地方出了问题,请路过的帮忙看下,感谢!!!
现在编程序真郁闷没有一个是不出错的~麻烦大家了~

搜索更多相关主题的帖子: 字符 配对 
2007-11-20 21:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
看KMP去.
不过MS才两个字符的模式串,不用这么麻烦.直接遍历搜索就够了.

倚天照海花无数,流水高山心自知。
2007-11-20 22:06
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
收藏
得分:0 
何为KMP      何为MS~   何为遍历搜索~

凤凰涅磐,欲火重生.
2007-11-20 22:09
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
KMP:快速模式匹配
MS:貌似
遍历搜索:
i=0;
while(str[i+1]!='\0')
{
if(str[i]==t[0]&&str[i+1]==t[1])
{
i+=2;
count++;
}
else
{
i++;
}
}

倚天照海花无数,流水高山心自知。
2007-11-20 22:12
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
收藏
得分:0 
是我看错题目了~不好意思~
如果要求匹配的长度不为了2而为非固定的数呢~
我就是按这种思路编的程序~还是帮忙看下啊~

凤凰涅磐,欲火重生.
2007-11-20 22:19
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
那就做匹配吧.

倚天照海花无数,流水高山心自知。
2007-11-20 22:24
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
收藏
得分:0 

我的思路就是一个串一个串匹配的,可能与你们的匹配方式不同,就是这样才出来问题~
也不晓得问题出在哪了


凤凰涅磐,欲火重生.
2007-11-20 22:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

for(i=0;i<j;i++)
{
z=0;
{
for(i=i;i<i+t&&i+t<j;i++)
{
k[z++]=m[i];
k[z]='\0';
}
if(!strcmp(k,n))
{
count++;
}
}
}


倚天照海花无数,流水高山心自知。
2007-11-20 22:33
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
k[z++]=m[i];
k[z]='\0';
这两句我也弄不明白

倚天照海花无数,流水高山心自知。
2007-11-20 22:36
ondy
Rank: 1
等 级:新手上路
威 望:1
帖 子:88
专家分:0
注 册:2007-9-4
收藏
得分:0 

BF算法中有一个 i-j+1 的叫什么给忘了。。你可以查下


2007-11-20 22:39
快速回复:字符串配对~
数据加载中...
 
   



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

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