编写一个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);

}
展开
 我来答
龍__鳳
2013-09-12 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1402万
展开全部
//你的程烂昌序不说了,什么时候实现扫描每一个字符了?

#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;
}



百度网友c281b4c
2013-09-12 · TA获得超过2293个赞
知道大有可为答主
回答量:2382
采纳率:50%
帮助的人:1043万
展开全部
#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);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1099877676lzw
2013-09-12
知道答主
回答量:1
采纳率:0%
帮助的人:1457
展开全部
fun(str,ch)里面胡樱昌,str和ch表示的是你定义的字符裤扒串的首字母地址,是常数。你可以尝试用指针试试。还有for语句里面的"和关系"颂游是“&&”,一楼给出了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
paniarch
2013-09-12 · TA获得超过288个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:147万
展开全部
你一直在判断两个字符串的相同位置,是有问题的。
另外,系统有自带的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;
   }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式