编程题7
【问题描述】输入两个字符串(字符串长度<100),在第一个字符串中查找第二个字符串(子串),若能找到,则输出第一个字符串中包含子串的个数,并删除所有子串,输出删除子串后的字符串。
【输入形式】
输入任意字符串和子串。
【输出形式】
输出该字符串中子串的个数及删除子串后的字符串
【样例输入】
asd78fghcf78f
78f
【样例输出】
2
asdghcf 本帖最后由 jhq999 于 2021-11-14 21:35 编辑
#include <stdio.h>
int main()
{
char str={0},substr={0},tmpch=0;//cpystr={0};
int count=0,i=0,j=0,k=0;//len=0,sublen=0;
scanf("%[^\n]",str);
fflush(stdin);
scanf("%[^\n]",substr);
/*len=0;
while(str[++len]);
sublen=0;
while(substr[++sublen]);*/
for(i=0;str;i++)
{
if(str==substr)
{
for(j=1;substr;j++)
{
if ((str!=substr)||!str)
{
break;
}
}
if ('\0'==substr)
{
count++;
for (k = i+j; str; k++)
{
str=str;
}
str=str;
i--;
}
j=0;
}
}
printf("%d\n",count);
if (str)
{
printf("%s",str);
}
else
printf("NULL");
return 0;
}
asd78fghcf78f
78f
2
asdghcf 本帖最后由 learner-ray 于 2021-11-16 02:57 编辑
#include<stdio.h>
#include<string.h>
int main(void)
{
char str1 = "";
char str2 = "";
int len1, len2;
int count = 0;
int i, j, k;
char ch = 0;
printf("请输入第一个字符串:");
scanf("%s", str1);
len1 = strlen(str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
len2 = strlen(str2);
if (len2 > len1)
{
printf("不包含\n");
return 0;
}
for (i = 0; i < len1; i++)
{
if (str2 == str1)
{
for (j = 0; j < len2; j++)
{
if (str2 != str1)
{
ch = 1;
break;
}
i++;
}
if (ch == 0)
{
count++;
for (k = i - len2; k < len1 - len2; k++)
{
str1 = str1;
}
for (k = len1 - len2; k < len1; k++)
{
str1 = '\0';
}
len1 = len1 - len2;
i = i - len2;
}
i--;
}
}
printf("包含了%d个第二个字符串\n", count);
printf("删除后的字符串:%s", str1);
}
输出:
请输入第一个字符串:asd78fghcf78f
请输入第二个字符串:78f
包含了2个第二个字符串
删除后的字符串:asdghcf
页:
[1]