当代商报记者高允亮:C语言高手请进!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 04:19:30
1.这里有求子串位置的算法,怎么写成C语言可以上机运行啊?
int Index(SString S,SString T,int pos)
{i=pos;j=1;
while(i<=S[0] && j<=T[0])
{if(S[i]==T[j]){++i;++j;}
else{i=i-j+2;j=1;}
}
if(j>T[0])return 0;
}
2.求子串的算法,怎样写C程序运行啊?
Status SubString(SString &Sub,SString S,int pos,int len)
{if(pos<1‖pos>S[0]‖len<0‖len>S[0]-pos+1)
return ERROR;
Sub[1..len]=S[pos..pos+len-1];
Sub[0]=len;return OK;
}
做出来可以运行出结果的,再加50分!
加上主函数及必要的结构体变量定义,写出完整的C程序.
能运行出结果的,追加100分!急需高手的帮忙啊,我还有好几个算法,不懂怎么写全程序运行呢!
谢谢三楼的_me,不过我没有运行出来.

1. 求子串位置的算法
不用什么算法,直接用C语言里面的strstr即可。
原型:
char *strstr(const char *s1, const char *s2);

如果一定要自己写的话,这样:
int Index(char *haystack, char *needle, int *pos)
{
char *p = haystack;
char *p1, *p2;

if ( !*needle )
return((char *)haystack);

while(*p)
{
p1 = p;
p2 = (char *) needle;

while( *p1 && *p2 && (*p1++==*p2++) );

if (!*p2)
{
*pos = p - haystack;
return *pos;
}

p++;
}

return -1;
}

2. 求子串的算法
char *SubString(char *subStr, int iPos, int iLen)
{
char *srcStr = buffer;
if( srcStr==NULL )
return NULL;

if( iPos<1 || iPos>(int)strlen(srcStr) || iLen<1 )
return NULL;
if( iLen>(int)strlen(srcStr)-iPos+1 )
iLen = (int)strlen(srcStr)-iPos+1;

strncpy(subStr, &buffer[iPos-1], iLen);
subStr[iLen] = '\0';

return subStr;
}

strchr(查找字符串中第一个出现的指定字符)
相关函数
index,memchr,rinex,strbrk,strsep,strspn,strstr,strtok
表头文件
#include<string.h>
定义函数
char * strchr (const char *s,int c);
函数说明
strchr()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。
返回值
如果找到指定的字符则返回该字符所在地址,否则返回0。
范例
#include<string.h>
main()
{
char *s="0123456789012345678901234567890";
char *p;
p=strchr(s,'5');
printf("%s\n",p);
}
执行
56789012345678901234567890

strstr(在一字符串中查找指定的字符串)
相关函数
index,memchr,rindex,strchr,strpbrk,strsep,strspn,strtok
表头文件
#include<string.h>
定义函数
char *strstr(const char *haystack,const char *needle);
函数说明
strstr()会从字符串haystack 中搜寻字符串needle,并将第一次出现的地址返回。
返回值
返回指定字符串第一次出现的地址,否则返回0。
范例
#include<string.h>
main()
{
char * s="012345678901234567890123456789";
char *p;
p= strstr(s,"901");
printf("%s\n",p);
}
执行
901234567890123456789

写个main函数也调试不出来
它还有好多条件都没有给出来,如SString S这里的SString 是什么?这个也是要写的pos是什么?也没有写出来。

写个main函数 在里面调用就行了