#include <stdio.h>
#include <string.h>
int Div(char temp[256],char word[256][256])//划分单词
{
int n=0,i=0,j=0;
while(temp[i]!='\0')
{
if(temp[i]!=' ')
{
word[n][j++]=temp[i++];
}
else if(temp[i]==' ')//说明有一个单词
{
word[n][j]='\0';
j=0;
i++;
n++;
}
if(temp[i-1]==' '&&temp[i]==' ')//若有两个连续空格,则稍加处理一下
{
i++;
n--;
}
}
word[n][j]='\0';
return n;
}
int ZiMu(char word[256][256],int n,char ch[256])//查找不同单词中的相同字母
{
int i=0,j=0,k=0,m=0,p,q,mark;//mark是标记是否重复记录
for(i=0;i<=n;i++)
{
mark=0;
for(p=0;word[i][p]!='\0';p++)//从第一个单词分别与后面其它单词,一次类推
{
for(j=i+1;j<=n;j++)
{
for(k=0;word[j][k]!='\0';k++)
{
if(word[i][p]==word[j][k])
{
for(q=0;q<m;q++)//这个循环是为了使数组ch中字母不重复记录
{
if(word[i][p]==ch[q])
mark=1;//已经找到过该字母
}
if(mark==0)
{
ch[m++]=word[i][p];
}
}
}
}
}
}
return m;
}
void main()
{
char str[256],ch[256];
char word[256][256];
int i,m=0,n=0;
printf("请输入一个字符串:\n");
gets(str);
n=Div(str,word);
printf("共有%d个单词\n",n+1);
for(i=0;i<=n;i++)
printf("%s ",word[i]);
printf("\n");
m=ZiMu(word,n,ch);
if(m==0)
{
printf("没有重复字母!即 no!\n");
}
else
{
printf("全部单词中重复的字母如下:");
for(i=0;i<m;i++)
{
printf("%c ",ch[i]);
}
printf("\n");
}
}
/*程序已完成且VC6.0下运行成功,感觉应该完全符合你的要求,要是有什么问题,可以问我,我也是懂得一点,呵呵,你参考一下吧*/
温馨提示:答案为网友推荐,仅供参考