C语言题目,求大神解答~!!!
答案:2 悬赏:80 手机版
解决时间 2021-02-16 02:20
- 提问者网友:缘字诀
- 2021-02-15 18:20
从键盘输入字符串 s1=″abcdabcdef″和字符串 s2=″cde″,编写函数,运用指针,若字 符串 s2 是字符串 s1 的子串, 找到字符串 s2 在字符串 s1 中的起始位置 (若 s1 中有多个 s2, 则找到第一个子串的起始位置) ,否则给出提示信息。
最佳答案
- 五星知识达人网友:野慌
- 2021-02-15 18:55
这是一个字符串检索问题:
//在S字符串中检索子串T(模式匹配)
int Index(char *S, char *T){
int i,j,lenS,lenT;
for(lenS=0;S[lenS];++lenS);
for(lenT=0;T[lenT];++lenT);
i=1;j=1;
while(i<=lenS&&j<=lenT){ //i不超过S范围,j不超过T范围,且S剩余长度不小于T剩余长度
if(S[i-1]==T[j-1]){ ++i;++j; }//匹配,一起后移
else {i=i-j+2;j=1;if(i>lenS-lenT+1)break;}//不匹配,回溯
}
if(j>lenT) return i-lenT;//成功匹配,或 return i-j+1;
return 0;//没找到子串,返回0
}这里用的算法是简单的模式匹配。
//在S字符串中检索子串T(模式匹配)
int Index(char *S, char *T){
int i,j,lenS,lenT;
for(lenS=0;S[lenS];++lenS);
for(lenT=0;T[lenT];++lenT);
i=1;j=1;
while(i<=lenS&&j<=lenT){ //i不超过S范围,j不超过T范围,且S剩余长度不小于T剩余长度
if(S[i-1]==T[j-1]){ ++i;++j; }//匹配,一起后移
else {i=i-j+2;j=1;if(i>lenS-lenT+1)break;}//不匹配,回溯
}
if(j>lenT) return i-lenT;//成功匹配,或 return i-j+1;
return 0;//没找到子串,返回0
}这里用的算法是简单的模式匹配。
全部回答
- 1楼网友:过活
- 2021-02-15 20:31
#include
#include
int main()
{
int a,b,c;
double x1,x2,num;
scanf("%d %d %d",&a,&b,&c);
num=b*b-4*a*c;
if(num<0)
{
printf("no answer\n");
}
else if(num==0)
{
num=sqrt(num);
x1=(-b+num)/(2*a);
printf("%.4lf\n",x1);
}
else
{
num=sqrt(num);
x1=(-b+num)/(2*a);
x2=(-b-num)/(2*a);
printf("%.4lf %.4lf\n",x1,x2);
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯