该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
void main()
{
char english[200]={'\0'}; //即要输入的英文。
char allwords[50][50]={'\0'}; //每一个单词,即输入的英文中按空格划分成的每一个单词。
int i,j, q,p=0, k=0,t,m, num[50]; // 通过p值的变化判断连续三个0的出现,num用来统计各不相同的单词的个数。 k、t为allwords[k][j]下标,m用来统计allwords的不相同单词的总数。
//-----------------------------------------------------------------------------//
for ( i=0; i<50; i++) num[i]=1; //将每一个单词的数值初始化为1。
//-----------------------------------------------------------------------------//
gets(english); //输入英文。
//-----------------------------------------------------------------------------//
for ( i=0; english[i]!='0'||english[i+1]!='0'||english[i+2]!='0'; ) //当【连续3个0】出现时跳出
{
while( english[i]==' ' ) i++; //如果遇到空格,则跳到它的下一位。
t=0; //用于do—while循环的控制。
do
{
allwords[k][t]=english[i]; //将英文的各个位的字母分段赋给各层allwords。即最后是按空格划分的每一个单词都依次赋给allwords。
i++, t++;
if ( english[i]=='0' && english[i+1]=='0' && english[i+2]=='0' ) p=1; //通过把p的值变为1,作为连续三个0出现标记。
} while ( english[i]!=' '&& p==0 ); //当english[i]不为空格且【连续】三个0为出现,一、两个0出现不影响。
k++,i++;
if( p==1 ) break; //连续三个0出现,跳出for循环。
else continue; //连续三个0未出现,则继续for循环。
}
//-----------------------------------------------------------------------------//
for(i=0;i
{
for(j=i+1;j
if( strcmp (strlwr(allwords[i]), strlwr(allwords[j]) )==0 && num[i]!=0 ) //类似allwords[0]与all我认识[1][2][3][4]……
{ num[j]=0; //num用来将重复的单词的个数设置为0。
num[i]++; //用来将相同的单词数加1。如:allwords[0]与allwords[1][2]相同,则将[0]的单词数加2,[1][2]的单词数设置为0
} //设置为0主要是为了在输出时不将其输出。。
}
//-----------------------------------------------------------------------------//
for(i=0;i
{
if( num[i]!=0 ) //接上循环,如果发现[1][2]对应的单词数为0,则不将其输出。。
{
printf( "%-20s %2d\n",allwords[i],num[i] );
//循环输出allwords中单词数不为0的项,k指allwords中共有单词的总数。
}
}
//-----------------------------------------------------------------------------//
}