练习 2-4 squeeze(s1, s2),将字符串s1 中任何与字符串s2 中字符匹配的字符都删除。

C语言程序设计(第二版) 练习2-4 个人设计

练习 2-4 squeeze(s1, s2),将字符串s1 中任何与字符串s2 中字符匹配的字符都删除。

代码块:

方法1

#include 
#include 
void squeeze(char s[], char t[]);
int main()
{
    char a[]="how are you";
    char b[]="ou";
    squeeze(a, b);
    printf("%s\n", a);
    system("pause");
    return 0;
}
void squeeze(char s[], char t[])
{
    int i, j, k;
    for (j=0; t[j]!='\0'; j++){
        for (i=k=0; s[i]!='\0'; i++){
            if (s[i]!=t[j])
                s[k++]=s[i];
        }
        s[k]='\0';
    }
}

方法2

#include 
#include 
#include 
void input(char s1[], char s2[]);             //定义输入函数
void squeeze(char s1[], char s2[]);           //定义squeeze函数
int main()
{
	char str1[100], str2[100];
	input(str1, str2);                        //调用输入函数
	squeeze(str1, str2);                      //调用squeeze函数
	system("pause");
	return 0;
}
/*输入函数*/
void input(char s1[], char s2[])
{
	printf("Please enter string 1: ");
	gets(s1);
	printf("Please enter string 2: ");
	gets(s2);
}
/*squeeze函数*/
void squeeze(char s1[], char s2[])
{
	int i, j, k, t;
	char n[100];
	/*for循环内判断是否有相同字符,如果没有,把字符赋值新的字符数组*/
	for (i=0, k=0; s1[i]!='\0'; i++){
		for (j=0, t=0; s2[j]!='\0'; j++)
			if (s1[i]==s2[j]){
				t++;
				break;
			}
		if (t==0)
			n[k++]=s1[i];
	}
	n[k]='\0';
	printf("New string: ");
	puts(n);
}

如果程序设计有错误或更简洁的方法,欢迎并感谢您指正出示,谢谢!

你可能感兴趣的:(c语言程序设计第二版课后答案)