编写一个c语言程序,输入字符串1和字符串2,如果字符串1包含字符串2,则返回值1,不包含则返回值0
自己弄的,达不到效果,往高手帮下忙!#include"stdafx.h"charfun(charstr[20],charch[20]){inti,j=0;for(i=0;...
自己弄的,达不到效果,往高手帮下忙!
#include "stdafx.h"
char fun(char str[20],char ch[20])
{ int i,j=0;
for(i=0;str[i]!='\0',ch[i]!='\0';i++)
if(str[i]==ch[i])j++;//我想让字符串1与字符串2作比较,然后相同时j就+1,这里貌似j从来不加.返回值永远都是0
j>=1;return 1;
j<=0;return 0;
}
int main()
{ char str[20],ch[20];
int s;
printf("enter a string :");
gets(str);
printf("enter you want delete letter : ");
gets(ch);
fun(str,ch);
s=0;
printf("%d",s);
} 展开
#include "stdafx.h"
char fun(char str[20],char ch[20])
{ int i,j=0;
for(i=0;str[i]!='\0',ch[i]!='\0';i++)
if(str[i]==ch[i])j++;//我想让字符串1与字符串2作比较,然后相同时j就+1,这里貌似j从来不加.返回值永远都是0
j>=1;return 1;
j<=0;return 0;
}
int main()
{ char str[20],ch[20];
int s;
printf("enter a string :");
gets(str);
printf("enter you want delete letter : ");
gets(ch);
fun(str,ch);
s=0;
printf("%d",s);
} 展开
展开全部
//你的程烂昌序不说了,什么时候实现扫描每一个字符了?
#include "stdafx.h"
int 岁历竖fun(char str[20],char ch[20])
{
int i,j,k;
for(i=0;str[i]!=0;i++)
{
if(str[i]==ch[0])
{
k=1;
for(j=0;ch[j]!=0;j++)
{
if(str[i+j]!=ch[j])
{
k=0;
break;
}
}
}
if(k==1)
return 1;
}
return 0;
}
int main()
{
char str[20],ch[20];
int s;
printf("enter a string :");
gets(str);
printf("enter you want delete letter : ");
gets(ch);
s=fun(str,ch);
printf("%d"乎大,s);
return 0;
}
展开全部
#include<iostream>
#include <cstdio>
using namespace std;
char fun(char str[20],char ch[20])
{ int 羡销判i,j=0;
for(i=0;str[i]!='\0'&&ch[i]!='\0';i++)
if(str[i]==ch[i])j++;//我想让字符串1与字符串2作比较,然后相同时j就+1,这里貌似j从来不加.返回值永远都是0
斗虚if(j>=1)return 1;
if(j<=0)return 0;
}
int main()
{ char str[20],ch[20];
int s;
printf("enter a string :");
兄改cin>>(str);
printf("enter you want delete letter : ");
cin>>(ch);
s=fun(str,ch);
printf("%d",s);
}
更多追问追答
追问
你这里如果字符串1前面的元素跟字符串相同才返回值1,即使字符串1包含字符串2,但是字符串2的第一个元素没对照到字符串1的前面,还是返回值0
字符串1 qwert;字符串2 qw 返回值1
字符串1 qwert;字符串2 we 返回值0
追答
#include
#include
using namespace std;
char fun(char str[20],char ch[20])
{ int i,j=0;
for(i=0;str[i]!='\0'&&ch[j]!='\0';i++)
if(str[i]==ch[j])++j;//我想让字符串1与字符串2作比较,然后相同时j就+1,这里貌似j从来不加.返回值永远都是0
if(j>0)return 1;
else return 0;
}
int main()
{ char str[20],ch[20];
int s;
printf("enter a string :");
cin>>(str);
printf("enter you want delete letter : ");
cin>>(ch);
s=fun(str,ch);
printf("%d",s);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fun(str,ch)里面胡樱昌,str和ch表示的是你定义的字符裤扒串的首字母地址,是常数。你可以尝试用指针试试。还有for语句里面的"和关系"颂游是“&&”,一楼给出了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你一直在判断两个字符串的相同位置,是有问题的。
另外,系统有自带的strstr函数
另外,系统有自带的strstr函数
追问
但是我不能直接用系统自带的函数,而是用代码描述出strstr函数的原理,如果你懂,请帮忙!!
追答
int fun(const char * str, const char * ch)
{
int ret = 0, i, j;
// 判断str的每一个字符
for (i=0; str[i]; i++) {
for (j=0; ch[j]; j++) {
// 判断str[i]和ch是否一致
if (str[i+j] == 0 || str[i+j] != ch[j]) {
// 不相符退出循环
break;
}
}
if (ch[j] == 0) {
// 如果比较到ch的最后一个字符才退出循环,说明找到了
ret = 1;
break;
}
}
return ret;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询