1.删除除字母以外的其他字符
/*Description
给定一个字符串,长度不超过100,删除其中除大小写字母以外的其它字符。
Input
测试数据有多组,第一行的正整数T表示测试数据的组数。每组测试数据包含一行
字符串。
Output
对于每组测试数据,删除其中除大小写字母以外的其它字符,每组输出占一行。
Sample Input
2
aB,. ;po ][ kk
sd23gh87
Sample Output
aBpokk
sdgh*/
#define N 5
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct LNode{
char c;
struct LNode *next;
}*LinkList,LNode;
int main()
{
LNode *L[N];//指向单链表的指针数组
int n,i,j,m;
char c,ch;
scanf("%d",&n);
LinkList head,p1,p2;
for(i = 0;i < n;i++)
{
m = 0;
if(i == 0)
ch = getchar();//接收回车键
scanf("%c",&c);
head = (LinkList)malloc(sizeof(LNode));
while(c != '\n')
{
m++;
p1 = (LinkList)malloc(sizeof(LNode));
p1->c = c;
if(m == 1) head->next = p1;
else p2->next = p1;
p2 = p1;
scanf("%c",&c);
}
p2->next = NULL;
L[i] = head;
}
for(i = 0;i < n;i++)
{
head = L[i];
p1 = head;
while(p1->next != NULL)
{
p2 = p1->next;
if(!isalpha(p2->c))
{
p1->next = p2->next;
}
else
{
p1 = p1->next;
}
}
head = head->next;
while(head)
{
printf("%c",head->c);
head = head->next;
}
printf("\n");
}
}
看到删除操作第一个想到的就是单链表,要注意的问题就是在输入字符的时候要注意用getchar接收一下多余的回车键(没有调试可真难)
2.删除指定字符
/*Description
给定一个字符串,长度不超过100,删除某个指定的字符。
Input
测试数据有多组,每组测试数据单独占两行,第一行是一个字符串,包含不超过100个字符。第二行是一个单独的字符。从第一行给出的字符串中删除第二行指定的字符。
Output
对于每组测试数据,输出删除指定字符后的字符串,每组输出单独占一行。
Sample Input
aabbccbcdd
b
good morning
o
Sample Output
aacccdd
gd mrning*/
#define N 20
#define M 2
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
char c;
struct LNode *next;
}*LinkList,LNode;
int main()
{
int i,n;
char c,ch,c1;
LinkList p[M];
LinkList head,p1,p2;
for(i = 0;i < M;i++)
{
n = 0;
if(i != 0) c1 = getchar();//为了接受回车键
scanf("%c",&c);
head = (LinkList)malloc(sizeof(LNode));
while(c != '\n')
{
n++;
p1 = (LinkList)malloc(sizeof(LNode));
p1->c = c;
if(n == 1) head->next = p1;
else p2->next = p1;
p2 = p1;
scanf("%c",&c);
}
p2->next = NULL;
scanf("%c",&ch);//输入要删除的字符
p1 = head;
while(p1->next != NULL)
{
p2 = p1->next;
if(p2->c == ch)
p1->next = p2->next;
else
p1 = p1->next;
}
p[i] = head;
}
for(i = 0;i < M;i++)//开始输出
{
head = p[i];
p1 = head->next;
while(p1)
{
printf("%c",p1->c);
p1 = p1->next;
}
printf("\n");
}
}
这个回车键真是让人sad的存在