早教吧 育儿知识 作业答案 考试题库 百科 知识分享

统计词长度,C++求解答描述假定一篇文章由若干词组成,单词之间通过英语的逗号、句点或空格间隔.想统计不同长度的单词数量,按由短到长的顺序输出不同长度的单词数量,并输出所有单词的

题目详情
统计词长度,C++求解答
描述
假定一篇文章由若干词组成,单词之间通过英语的逗号、句点或空格间隔.想统计不同长度的单词数量,按由短到长的顺序输出不同长度的单词数量,并输出所有单词的平均长度(按除式表示).
(注意:忽略标点符号和空格).
例如,一串单词:
I am a student.
这里,长度为1的单词有2个,长度为2的有1个,长度为7的有1个,所有单词的长度之和为11,于是,输出为:
(1,2)
(2,1)
(7,1)
11/4
前面若干行以小括号表示,左边的数值表示单词长度,右边的数值表示该长度的单词个数.
输入
单词序列,其间由空格、逗号或句点间隔.
输出
按长度由短到长输出不同长度单词的个数,并输出平均长度
样例输入
I am a student.
样例输出
(1,2)
(2,1)
(7,1)
11/4
▼优质解答
答案和解析
#include 
using namespace std;
int isa(char c)
{
 return ('A' <= c&&c <= 'Z')||('a' <= c&&c <= 'z');
}
int main()

 char w[10000];    //设输入最长不超过10000个字符
 int  c[51] = { 0 };   //设最长的词不超过50个字母
 int curl = 0;
 int i, s = 0,t=0;
 cin.getline(w, 10000);
 for (i = 0; i {
  if (isa(w[i] ))
  {
   curl++;
  }
  else
  {   
   c[curl]++;  
   curl = 0;
  }
 }
 for (i = 1; i <= 50; i++)
 {
  if (c[i])
  {
   s += i*c[i];
   t += c[i];
   cout << '(' << i<<',' << c[i] << ')' << endl;
  }
 }
 cout << s <<'/'<< t << endl;
 return 0;
}

i am a student
(1,2)
(2,1)
(7,1)
11/4
请按任意键继续. . .

看了 统计词长度,C++求解答描述...的网友还看了以下: