c语言统计26个英文字母各出现个数,网上答案汇总与分析——【输入一串英文,统计各单词出现的个数】...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#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中共有单词的总数。

}

}

//-----------------------------------------------------------------------------//

}

97581c44c34638acc874c8226d40daa6.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值