变位词的为题可以通过三步的方式来解决,我们可以分别使用三个程序来实现。
第一个程序对所有字符串进行标识;
第二个程序对标识之后的文件进行排序;
第三个程序对文件进行压缩,变成每个变位词类一行的形式。
程序一:
int charcomp(char *a,char *b)
{
return *a - *b;
}//从小到大进行输出
#define WORDMAX 100
int main()
{
char word[WORDMAX],sig[WORDMAX];
while(scanf(“%s”,word)!= EOF)
{
strcpy(sig,word);
qsort(sig,strlen(sig),sizeof(char),charcomp);//排序
printf("%s %s",sig,word);//打印标识,单词本身
}
return 0;
}
程序二:调用系统sort函数进行排序即可,将相同标识符归到一起
程序三:对文件进行压缩,变成每个变位词类一行的形式
int main()
{
char word[WORDMAX],sig[WORDMAX],oldsig[WORDMAX];
int linenum = 0;
strcpy(oldsig,"");//初始化
while(scanf("%s %s",sig,word)!=EOF)
{
if(strcmp(oldsig,sig)!= && linenum > 0)//标识符不相同
{
printf("\n");//进行换行操作
}
linenum++;
printf("%s",word);
}
printf("\n");
return 0;
}