而且我感觉到这道题目散发出一阵杀气。好象不是想象中的那么简单。
----------------解决方案--------------------------------------------------------
晕...再次的描述居然和开头的是不差一个字符的...貌似还不能理解你的问题...
实在我想不出你的问题了...我服了...请赐教:)
----------------解决方案--------------------------------------------------------
我是来让大家赐教的,我不知道啊,就是希望讨论个结果出来。我重新的描述不是说清楚了吗?同样一对str1和str2、函数不具备随即性、是两次或多次不相关的运行,那么,在什么情况下运行结果不一样?
----------------解决方案--------------------------------------------------------
唯一能想到的就是函数写错了...
----------------解决方案--------------------------------------------------------
当然前提是函数无错呢?
----------------解决方案--------------------------------------------------------
如果这是一个试题或者书上的练习,那么,我可以断定你的表述是有问题,没有正确表述原题。如果你是的写的程序有这种问题,那么请你贴上原码,请不要试图用文字来表述你的问题,因为你本来就对你自己的问题没有一个正确的认识才上论坛上问的,所以,不能保证你对问题的表述是原汁原味的。
----------------解决方案--------------------------------------------------------
int Counts(char *str_p,char *str_s,int len_p,int len_s)
{ int i,j,k,flag,counts=0;
flag=len_s-len_p;
for(i=-1;i<flag;)
{
i++;j=i;k=0;
while(*(str_s+j)==*(str_p+k))
if(k==len_p-1)
{ counts++;break;}
else
{ j++;k++;}
}
return counts;
}
----------------解决方案--------------------------------------------------------
请给出错的例子,虽然这个函数写得很差,但是我还是看不出你说的那种情况.
----------------解决方案--------------------------------------------------------
理论上他不会出现楼主所说的情况啊!
虽然这个funtion很烂
----------------解决方案--------------------------------------------------------
所以我说1+1在算错的情况下不等于2么。 楼主你的程序是错误的。 首先整理一下你的代码: int Counts(char *str_p,char *str_s,int len_p,int len_s) { int i,j,k,flag,counts=0; flag=len_s-len_p; for(i=-1;i<flag;) { i++; j=i; k=0; while(str_s[j]==str_p[k]) // 注意这里,没有判断字符串结束的结束条件,k<len_p { if(k==len_p-1) // 还有这里,如果你的len_p为字符串的长度,那么这里少判断了最后一个字符。姑且当你的len_p为字符串占用空间的大小好了... { counts++; break; } j++; //原来这里的else是没有必要的,因为if条件满足时有break k++; } } // 这里原来少一个花括号的,不过去掉了 "else{" 之后就刚刚好... return counts; } 楼主煞费苦心,难道只为了让我们帮你改一个程序?还是真的有奇妙的不可理解的现象存在?想起候老大的那句:源码之前,了无秘密...看来说得非常有道理。 我这里完全说错了...不要理会我的胡言乱语...
[此贴子已经被作者于2005-2-25 22:24:05编辑过]
----------------解决方案--------------------------------------------------------