用C语言编了下面一个的程序:用一个字符数组保存着一个英文句子,要求:1 删除该英文句子的前导空格、后导空格。并删除句子中多余的空格(单词之间只留一个空格);2 统计该句子中,单词出现的频率;3 查找并替换某个单词。#include<math.h>#include<stdio.h>#include<string.h>main(){int k,m=1,n=1,i;char str[80];printf("input a string:"); /*输入一英文句子*/gets(str);count_words(str[80]);find(str[80]);fab(str[80]);getch();k=0;while(str[k]=='')k++;str[k]=str[0]; /*去句子中的前导空格*/str[k]!='';k=strlen(str);do{k--;}while(str[k]=='');str[k+1]='\0'; /*去句子中的后导空格*/if(str[m]==''&&str[m-1]!=''&&str[n]=''&&str[n+1]!=''&&m<n)str[m+1]=str[n+1];printf("the changed sentence is:%s",str); /*去句子中多余空格*/}int count_words(char str[]) /*定义一求某单词数目的函数*/{int i,num,k;num=count_words(str);printf("input a word str[0]:"); /*输入某个单词*/gets(str);for(i=1;i<k;i++){for(num=0;num<k;num++)if(strcmp(str[0],str[i])==0)return num;elsebreak; /*求句子中某单词频率*/}getch();}int find(char str[80]) /*定义一查找某单词的函数*/{int n,i,k;char str0;printf("input the word which is needed to be found str0:"); /*输入要查找的单词*/gets(str);for(i=1;i<k;i++){if(strcmp(str0,str[i])==0)return str[i];elseprintf("there is no this word in this sentence:");} /*查找句子中某个单词*/getch();}int fab(char str[80]) /*定义一替换某单词的函数*/{int i,n;char str0,strk;printf("input the word strk which is used to exchange the former word str0:"); /*输入替代的单词*/gets(str);n=fabs(strlen(str0)-strlen(strk));if(strlen(str0)>strlen(strk))return str[i]=str[i+n];elsereturn str[i+n]=str[i]; /*替换句子中某个单词*/getch();}但是出现了错误,不知道怎么去修改,大家帮帮忙吧!谢谢拉!

热心网友

你的count_words函数用到了递归,在用递归时没有退出条件,该函数可能成为一个死循环