| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 487 人关注过本帖
标题:大哥请指点!
只看楼主 加入收藏
lwn
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-8-22
收藏
 问题点数:0 回复次数:8 
大哥请指点!
int findStr(char *str,char *substr)
{ int i,j,len1,len2,cnt=0,flag;
len1=strlen(str);
len2=strlen(substr);
for(i=0;i<len1;i++)
{ for(j=0;j<len2;j++)
if(str[i+j]==substr[j]) flag=1;
else {flag=0;break;}
if(flag==1) cnt++;
}
return cnt;
}
该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。
请问一小下第一个For是怎么循环的啊?我怎么感觉最后的cnt值翻了一倍啊!
搜索更多相关主题的帖子: 统计 return 字符串 大哥 
2006-08-23 08:04
lwn
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-8-22
收藏
得分:0 
自己顶,我是刚学C语言,小菜鸟一个!谢谢了!

学不好C语言,就娶不上媳妇了!
2006-08-23 08:05
lwn
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-8-22
收藏
得分:0 
帮忙啊!

学不好C语言,就娶不上媳妇了!
2006-08-23 08:45
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

asd asasdfg asd as zx67 asd mklo

到底有几个?


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-08-23 09:01
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

你这代码格式缩进不规范,规范点,理解起来也容易些


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-08-23 09:03
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

第一個for 用來對 str1 進行位移量的吧.

我寫了下面的這個:
int subCount(char * str1, char * str2)
{
int dw = 0;
int sublen = strlen(str2);
while(*str1)
{
if(strncmp(str1, str2, sublen) == 0)
{
dw++;
str1+=sublen-1;
}
else
str1++;
}
return dw;
}


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-23 09:07
lwn
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-8-22
收藏
得分:0 

楼上的我的指针不怎么会哎!
你能告诉我,我的那个程序有问题吗?程序是怎么循环的,先谢谢你了!


学不好C语言,就娶不上媳妇了!
2006-08-23 09:14
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

for(i = 0; i < len1; i++)
{
for(j = 0; j < len2; j++)
{
if(str[i + j] == substr[j])
flag = 1;
else
{
flag = 0;
break;
}
}
if(flag == 1)
cnt++;
}
------------------
別介意, 上面是你的程式部分, 我把它規範的縮進了

從 i = 0 到 len1,
執行第二個循環 (通過它來改變 flag 值)
如果 flag 值爲 1, 表示找到了一個子串, cnt 自增一下, 記錄個數
循環結束...

我覺得你應該問的不是第一個循環, 而主要是第二個循環...


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-23 09:22
lwn
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-8-22
收藏
得分:0 
对,我想问的是第二个循环!我明白了,谢谢楼上的大姐啊!
for(i=0;i<len1;i++)
{ for(j=0;j<len2;j++)
if(str[i+j]==substr[j])
flag=1;
else
{flag=0;break;}
if(flag==1) cnt++;
}
这个式子的功能和你的那个:
for(i = 0; i < len1; i++)
{
for(j = 0; j < len2; j++)
{
if(str[i + j] == substr[j])
flag = 1;
else
{
flag = 0;
break;
}
}
if(flag == 1)
cnt++;
}
功能一样吗?我怎么感觉上面的那个还是不正确啊!你的是对的!

学不好C语言,就娶不上媳妇了!
2006-08-23 09:56
快速回复:大哥请指点!
数据加载中...
 
   



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

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