c语言,找出某个数出现的位置

用C语言:
先要求随意输入一段数,假如是“ABCDEFSZFEFSODEF”。
要求找出指定字符出现次数与位置,例如"EF"具体出现的次数和出现的位置。

要求得到的结果是:
次数:3
位置:5,10,15

~~~~~~~~~~~~~~
希望可以给CODE

第1个回答  2009-11-02
你这个哪里是指定字符出现的位置?明明就是指定字符串出现的位置。
首先先判断第二个字符串的长度
然后在第一个字符串里面循环截取长度为第二个字符串长度的字符串,存到临时字符串里。
比较临时字符串和第二个字符串是否相同,相同则记录找到次数并记录位置,不相同则继续循环。

如此即可。
第2个回答  2009-11-02
#include"stdio.h"
int Length(char *s)
{
int count=0;
while(*s++!='\0')
count++;

return count;
}

void Find(char*t,char*p)
{
int n=Length(t);
int m=Length(p);
int k=0,i,j,find;
if(n<m)
{
printf("a的长度小于b的,无法查找!\n");
return;
}

for(i=0;i<n;i++)
{ find=1;
for(j=0;j<m;j++)
{
if(t[i+j]!=p[j])
{find=0; break;}
}

if(find)
printf("%d \n",i+1);
}

}

main()
{
char a[50];
char b[50];
printf("输入字符串a:\n");
scanf("%s",&a);
printf("输入要查找的字符串b:\n");
scanf("%s",&b);
Find(a,b);
}
其余细节自己改改本回答被提问者采纳
第3个回答  2009-11-02
已测试通过。
#include "stdio.h"
#include "string.h"
void main()
{
printf("\nPlease enter a string: ");
char strTotal[50];
gets(strTotal);
printf("\nPlease enter the string you want to find:");
char strFind[50];
gets(strFind);
if (strlen(strFind) > strlen(strTotal))
{
printf("\n\"%s\"dose not exist in \"%s\"", strFind, strTotal);
return;
}
char strNew[50] = {'\0'};
int nNum = strlen(strFind);
int nTime = 0;
int nLocate[50] = {-1};
for (int i = 0; i < 50; i++)
{
nLocate[i] = -1;
}
int nTotalLen = strlen(strTotal);
for (i = 0; i < nTotalLen; i++)
{
int k = 0;
int nlenNewString = (i + nNum) < 50 ? i + nNum : 50;
for (int j = i; j < nlenNewString; j++)
{
strNew[k++] = strTotal[j];
}
strNew[k] = '\0';
if (strcmp(strNew, strFind) == 0)
{
nLocate[nTime] = i + 1;
nTime++;
}
}
printf("\nthe time is %d",nTime);
printf("\nthe locate is:");
for (i = 0; i < 50; i++)
{
if (nLocate[i] == -1)
{
break;
}
printf("%d ",nLocate[i]);
}
printf("\n");
}
相似回答
大家正在搜