求高手编写两个c语言小程序
1.编写程序,从给定的字符串中删除一个特定的字母。2.编写程序,从给定的字符串中删除一个特定的字符串。(主要是第二个)...
1.编写程序,从给定的字符串中删除一个特定的字母。
2.编写程序,从给定的字符串中删除一个特定的字符串。(主要是第二个) 展开
2.编写程序,从给定的字符串中删除一个特定的字符串。(主要是第二个) 展开
2个回答
展开全部
第一题:
#include <stdio.h>
void main()
{
char arr[100],ch,result[100];
int i,j=0;
printf("输入字符串(1-99个字符):\n");
gets(arr);
printf("输入要删除的字符:\n");
ch=getchar();
for (i=0;arr[i]!='\0';i++)
{
if (arr[i]!=ch)
{
result[j++]=arr[i];
}
}
result[j]='\0';
printf("删除后结果:\n%s\n",result);
}
第二题
#include <stdio.h>
int find(char *str,char *sub,int start) //从start开始查找str中是否存在子串sub,存在返回子串匹配后的结束位置+1,不存在返回0
{
int i,j=0;
for (i=start;str[i]!='\0';i++)
{
if (str[i]==sub[j])
{
j++;
if(sub[j]=='\0') //匹配成功
{return i+1;}
}
else
{
return -1;
}
}
return -1;
}
void main()
{
char arr[100],sub[100],result[100];
int i,j=0,_sub;
printf("输入字符串(1-99个字符):\n");
gets(arr);
printf("输入要删除的字符:\n");
gets(sub);
for (i=0;arr[i]!='\0';)
{
_sub=find(arr,sub,i);
if (_sub==-1) //不匹配,进行赋值
{
result[j++]=arr[i++];
}
else //匹配,i向后移动到子串长度+1再进行匹配
{
i=_sub;
}
}
result[j]='\0';
printf("删除后结果:\n%s\n",result);
}
#include <stdio.h>
void main()
{
char arr[100],ch,result[100];
int i,j=0;
printf("输入字符串(1-99个字符):\n");
gets(arr);
printf("输入要删除的字符:\n");
ch=getchar();
for (i=0;arr[i]!='\0';i++)
{
if (arr[i]!=ch)
{
result[j++]=arr[i];
}
}
result[j]='\0';
printf("删除后结果:\n%s\n",result);
}
第二题
#include <stdio.h>
int find(char *str,char *sub,int start) //从start开始查找str中是否存在子串sub,存在返回子串匹配后的结束位置+1,不存在返回0
{
int i,j=0;
for (i=start;str[i]!='\0';i++)
{
if (str[i]==sub[j])
{
j++;
if(sub[j]=='\0') //匹配成功
{return i+1;}
}
else
{
return -1;
}
}
return -1;
}
void main()
{
char arr[100],sub[100],result[100];
int i,j=0,_sub;
printf("输入字符串(1-99个字符):\n");
gets(arr);
printf("输入要删除的字符:\n");
gets(sub);
for (i=0;arr[i]!='\0';)
{
_sub=find(arr,sub,i);
if (_sub==-1) //不匹配,进行赋值
{
result[j++]=arr[i++];
}
else //匹配,i向后移动到子串长度+1再进行匹配
{
i=_sub;
}
}
result[j]='\0';
printf("删除后结果:\n%s\n",result);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询