C语言实验——删除指定字符
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。
输入
第一行是一个字符串,不超过100个字符;
第二行是一个字符。
输出
删除指定字符后的字符串。
示例输入
sdf$$$sdf$$
$
示例输出
sdfsdf
///规范格式 注释 和 “&”
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#define zone 100
using namespace std;
typedef char elemtype;
typedef struct
{
elemtype *arr;
int len;
int listsize;
} List;
void Delete(List &l)///删除重复元素
{
int i,j,flo=1;
for (i=2; i<=l.len; i++)
{
for (j=1; j<=flo; j++)
{
if (l.arr[i] == l.arr[j])
{
break;
}
}
if (j==flo+1)
{
flo++;
l.arr[flo]=l.arr[i];
}
}
l.len=flo;
}
void Creat(List &l)
{
l.arr=new elemtype[zone];
if (!l.arr) exit(-1);
l.len=0;
l.listsize=zone;
}
void Insert(List &l,int n)///插入 n 个数据
{
int i;
for (i=1; i<=n; i++)
{
scanf("%d",&l.arr[i]);
}
l.len=n;
}
void print(List &l)///输出表(注意变化)
{
int i;
///cout<<l.arr<<endl;
///cout<<l.len<<endl;
for (i=0; i<l.len; i++)
{
cout<<l.arr[i];
if (i!=l.len-1) cout<<" ";
}
cout<<endl;
}
void exchange(List &l,int m)/// 逆序; 三次逆序
{
int i,t,x=0;
for(i=1; i<=l.len/2; i++)
{
t=l.arr[i];
l.arr[i]=l.arr[l.len+1-i];
l.arr[l.len+1-i]=t;
}
for (i=1; i<=(l.len-m)/2; i++)
{
t=l.arr[i];
l.arr[i]=l.arr[l.len-m+1-i];
l.arr[l.len-m+1-i]=t;
}
for (i=l.len-m+1; x<=(m-1)/2; i++)
{
t=l.arr[i];
l.arr[i]=l.arr[2*l.len-m+1-i];
l.arr[2*l.len-m+1-i]=t;
x++;
}
}
int Find(List &l,int key,int i,int j)///二分查找
{
int mid;
while (i<=j)
{
mid=(i+j)/2;
if (l.arr[mid] == key)
{
return mid;
}
if (l.arr[mid] > key)
{
j=mid-1;
}
else
{
i=mid+1;
}
}
return -1;
}
void inall(List &l,List &l2,List &l3)///将l,l2归并到l3
{
int i;
int len1=l.len,len2=l2.len;
int L1=1,L2=1,L3=1;
while(len1!=0&&len2!=0)
{
if (l.arr[L1] <= l2.arr[L2])
{
l3.arr[L3]=l.arr[L1];
L3++;
L1++;
len1--;
}
else if (l.arr[L1] > l2.arr[L2])
{
l3.arr[L3]=l2.arr[L2];
L3++;
L2++;
len2--;
}
}
if (len1!=0)
{
for (i=L1; i<=l.len; i++)
{
l3.arr[L3]=l.arr[i];
L3++;
}
}
else if (len2!=0)
{
for (i=L2; i<=l2.len; i++)
{
l3.arr[L3]=l2.arr[i];
L3++;
}
}
l3.len=l.len+l2.len;
}
void Delet(List &l,char *x)
{
int i,j;
for (i=0; i<l.len; i++)
{
if (l.arr[i] == x[0])
{
for (j=i; j<l.len; j++)
{
l.arr[j]=l.arr[j+1];
}
l.len--;
i--;///回到第一个元素判断
}
}
}
int main()
{
char s[3];
List l;
Creat(l);
scanf("%s",l.arr);
l.len=strlen(l.arr);
scanf("%s",s);
Delet(l,s);
print(l);
return 0;
}