• 在oj上显示运行时错误,有大佬能帮忙看一下吗?
  • 其它

问题描述:
任意给定两个字符串str1与str2, str1与str2中可以包含任意字符。你的任务是统计字符串str2在str1中出现的次数。
如字符串str1为“asasasbbbasbas”,str2为“as”,则统计结果为5。注意如果字符串str1为“aaaaa”,字符串str2为“aaa”,则统计结果为3。
输入与输出要求:
输入两个长度不超过100的字符串,以换行符结束。输出统计次数,占一行。
程序运行效果:
dhd dhdhdfg dhd dh zx67 dhd mklodhdh↙
dhd↙
6↙
#include 
#include 
int main()
{
int i, count;
char str1[102], str2[102], s1, *s2, *str;
s1=(char)malloc(102);
s2=(char*)malloc(102);
str=(char*)malloc(102);

fgets(str1,102,stdin);
for(i=0;str1[i]!='\n';i++)//统计str1中的字符个数
{
}
str1[i]='\0';//将str1中的最后一个'\n'转化成'\0'

fgets(str2,102,stdin);
for(i=0;str2[i]!='\n';i++)//统计str2中的字符个数
{
}
str2[i]='\0';//将str2中的最后一个'\n'转化成'\0'
count=0;//count的初始化

str=str1;//将str1的字符放入str中,能够让下面操作直接用str++
while(*str!='\0')
{
   s1=str;//s1为str的当前判断字符
   s2=str2;//s2为str2的首字符
   while(*s1==*s2&&*s2!='\0')//判断两个字符串的每个字符是否相等,若相等且s2并未结束则各往后读一位字符
   {
       s1++;
       s2++;
   }
   if(*s2=='\0')//跳出while循环时s2已经结束了则满足条件
   {
       count++;//若满足条件count加一
   }
   str++;  
}
printf("%d", count);
free(s1);
free(s2);
free(str);
return 0;

}


  • Willson1991    2019-12-13 10:00:44
  • 阅读 969    收藏 0    回答 1
  • 邀请
  • 收藏
  • 分享
发送
登录 后发表评论
  • 51testing软件测试圈微信