void main() {char ch='\\0';
char word[1000][20]; int count_word[1000]={0};
int i=0,j=0,k=0,flag=0,total=0,l=0,max,maxno;
printf(\"请输入一段英文文章,以#标志结束:\\n\"); while((ch=getchar())!='#') {
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') {
if(ch>='A'&&ch<='Z') ch+=32; flag=0;
word[i][j]=ch; j++; }
else flag=1; if(flag==1) {
total++;
word[i][j]='\\0'; count_word[i]++; for(k=0;kif(strcmp(word[i],word[k])==0) { count_word[k]++; count_word[i]=0; i--; break; } } i++; j=0; } }
printf(\"所要求的单词为:\\n\");
printf(\"----------------------------------------\"); for(l=0;l<5;l++) {
max=0; maxno=0;
for(k=0;kif (count_word[k]>max) {
maxno=k;
max=count_word[k]; }
if (max==0) break;
printf(\"\\n%-10s\
count_word[maxno]=0; }
getchar(); }
六、程序测试记录
这题为中等难度题,有一定难度!用了好久才解决。大体思想分几块还是正确的,主要是细节上,受到好多困扰,运行多次出现(或者类似的)以下界面:
单词与输入不一致,根本没有输入,出现次数都一样,后来参考资料,网上搜,发现有两个影响全局的遗漏,在判断是否为完整单词时指到下个单词字母应归0重新计数,还有就是在筛选出出现概率最大得前五个单词时,count_word[maxno]=0遗漏,后经不断调试,程序终于可以正确运行。
运行界面如下:
七、软件说明
软件功能为:对于任意输入的一段英文,可以根据这段英文中各单词出现概率的高低输出前五个单词。在运行出的界面按提示输入用户需要的英文,程序会按要求得出结果。
改进意见:还可以增加此单词出现的次数,百分率等选项,让软件服务更具体,输出界面更友好,易懂明目!