C语言代码如下:
#include <stdio.h>
#include <string>
struct StXypoint
{
int x;
int y;
};
//获取两个字符串的相似度
void Xsd(char* p1,char* p2,char* p3,int &n)
{
int len1 = strlen(p1);
int len2 = strlen(p2);
int i,j;
bool b;
n = 0;
for (i = 0; i < len1; i++)
{
b = false;
//判断p1[i]是否在p2中
for (j = 0; j < len2; j++)
{
if (p1[i] == p2[j])
{
b = true;
break;
}
}
if (b) //如果在p2中
{
b = false;
//判断是否已经统计过
for (j = 0; j < n;j++)
{
if (p3[j] == p1[i])
{
b = true;
break;
}
}
if (!b)
{
p3[n] = p1[i];
n++;
}
}
}
}
void main()
{
char buf[4][50] = {0}; //保存输入字符
char pout[6][50] = {0}; //保存相似度字符串
int nmb[6] = {0}; //保存相似度
struct StXypoint pt[6]; //保存下标
int i,j,t;
int index = 0;
int maxindex = 0;
int maxNmb;
printf("请输入4个字符串\n");
for (i = 0; i < 4; i++)
{
scanf("%s",buf[i]);
}
//计算相似度
for(i = 0;i < 4;i++)
{
for (j = i+1; j < 4;j++)
{
Xsd(buf[i],buf[j],pout[index],nmb[index]);
pt[index].x = i;
pt[index].y = j;
index++;
}
}
//找相似度最大的
maxNmb = nmb[0];
for (i = 1; i < 6; i++)
{
if (nmb[i] > maxNmb)
{
maxNmb =nmb[i];
}
}
//遍历所有最大
for (t = 0; t < 6; t++)
{
if(nmb[t] == maxNmb)
{
i = pt[t].x;
j = pt[t].y;
printf("%s %s %d %s\n",buf[i],buf[j],nmb[t],pout[t]);
}
}
}