提取两数组共有的字符输出(不能有重复字符串)

题目

x[ ]=mcdabhaad
y[ ]=mavbmmcbn
求出:z[]=mab,即是把相同的部分给提取出来放到另外一个数组中输出

代码

#include 
#include 
#define max 100
int main() {
	char a[max],b[max],c[max],d[max];
	printf("请输入a字符串:");
	gets(a);
	printf("请输入b字符串:");
	gets(b);
	int i=0,j,k=0;
	//将a,b共有的字符串送到c里存储 
	while(a[i]!='\0') {
		j=0;
		while(b[j]!='\0') {
			if(a[i]==b[j])	c[k++] = a[i];
			j++;
		}
		i++;
	}
	
	i=1,k=0;
	d[k++] = c[0];
	//去除c中重复的字符串使用d存储 
	while(c[i]!='\0') {
		j=0;
		while(d[j]!='\0'&&c[i]!=d[j])	j++;
		if(j==strlen(d))	d[k++] = c[i];
		i++;
	}
	
	for(i=0;i<k;i++)	printf("%c",d[i]);

	return 0;
}

考试版

//x[ ]=mcdabhaad
//y[ ]=mavbmmcbn
//求出:z[]=mab,即是把相同的部分给提取出来放到另外一个数组中输出
#include "stdio.h"
void main(){
	char x[20]={"mcdabhaad"};
	char y[20]={"mavbmmcbn"};
//	gets(x);
//	gets(y);
	char a[20];
	int i=0,j,n=0,flag;
	while(x[i]!='\0'){
		j=0;
		flag =0;
		while(y[j]!='\0'){
			if(x[i]==y[j]){
				flag = 1;
				break;
			}
			j++;
		}
		if(flag){
			for(j=n-1;j>=0;j--){
				if(x[i]==a[j])	flag=0;
			}
			if(flag) a[n++]	= x[i];
		}
		i++;
	}
	puts(a);
}

你可能感兴趣的:(#,C,语言学习,#,C,语言机试)