2.4

题目:重新编写函数suqeeze(s1, s2),将字符串 s1中任何与字符串s2中字符匹配的字符都删除

#include<stdio.h>

#define ARRLEN 20

void squeeze(char[], char []);
void getline(char []);  //读取一行数据作为字符串,\\n替换为\\0

int main()
{
	char c[ARRLEN];
	char s[ARRLEN];
	printf(\"请输入字符串s2:\");
	getline(c);
	printf(\"请输入字符串s1:\");
	getline(s);
	squeeze(s,c);
	if(s[0] == \'\\0\')
		printf(\"删除后字符串s1为空\\n\");
	else printf(\"删除后的s1字符串为%s\\n\",s);
	return 0;
}

void squeeze(char s[], char c[])
{
	int i,j;
	int k =0 ;
	for(i = 0;s[i] != \'\\0\';i++)
	{
		for(j =0;c[j] != \'\\0\';j++)
		{
			if(s[i] == c[j])
				break;
		}
		if(c[j] == \'\\0\')	//成立说明没有匹配的字符
			s[k++] = s[i];
	}
	s[k] = \'\\0\';
}

void getline( char c[])
{
	int ch;
	int i = 0;
	while((ch = getchar()) != \'\\n\')
	{
		c[i++] = ch;
	}
	c[i] = \'\\0\';
}

2.5

题目:编写函数any(s1, s2),将字符串s2中的任一字符在字符串s1中第一次出现的位置作为结果返回。如果s1中不包含s2中的字符,则返回-1

#include<stdio.h>

#define ARRLEN 20

int any(char[], char []);
void getline(char []);  //读取一行数据作为字符串,\\n替换为\\0

int main()
{
	char c[ARRLEN];
	char s[ARRLEN];
	int p;
	printf(\"请输入字符串s1:\");
	getline(s);
	printf(\"请输入字符串s2:\");
	getline(c);
	p = any(s,c);
	printf(\"第一次出现的位置为%d\\n\",p);
	return 0;
}

int any(char s[], char c[])
{
	int i,j;
	for(i = 0;s[i] != \'\\0\';i++)
	{
		for(j =0;c[j] != \'\\0\';j++)
		{
			if(s[i] == c[j])
				return i;
		}
	}
	return -1;
}

void getline( char c[])
{
	int ch;
	int i = 0;
	while((ch = getchar()) != \'\\n\')
	{
		c[i++] = ch;
	}
	c[i] = \'\\0\';
}
收藏 打印