软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2012年上半年程序员考试下午真题试题(案例分析)
考试中心《2012年上半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2012年上半年
试题题型【分析简答题】
试题内容

阅读以下说明和C函数,填补C函数中的空缺(1)~(6),将解答写在答题纸的对应栏内。
【说明】
函数numberOfwords(char message[])的功能是计算存储在message字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过20时仅输出其前20个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。
假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似don't形式的词,单词之后都为空格或标点符号。
函数中判定单词的规则是:
(1)一个英文字母串是单词;
(2)一个数字串是单词;
(3)表示名词所有格的撇号(')与对应的单词看作是一个单词。
除上述规则外,其他情况概不考虑。
例如,句子“The 1990's witnessed many changes in people's concepts of conservation.”中有10个单词,输出如下:
      The
      1990's
       witnessed
       many
       changes
       in
       people's
       concepts
       of
       conservation
函数numberOfwords中用到的部分标准库函数如下表所述。


【C函数】
       int numberOfwords (char message[])
       {
       char wordbuffer[21], i=0;    /* i用作wordbuffer的下标 */
                       (1)  pstr;
                      int ps[26]={0};    /* ps[0]用于表示字母'A'或'a'的频数 */
        /* ps[1]用于表示字母'B'或'b'的频数,依此类推 */
                      int wordcounter=0;
                     
                      pstr=message;
                      while (*pstr)  {
                               if( (2) (*pstr))  {/* 调用函数判定是否为一个单词的开头字符 */
                               i=0;
                               do{/* 将一个单词的字符逐个存入wordbuffer[],并进行字母计数 */
                                        wordbuffer[i++]=*pstr;
                                        if (isalpha (*pstr))  {
                                                  if( (3) (*pstr)) ps[*pstr-'a']++;
                                                  else  ps[*pstr-'A']++;
                                        }
                                         (4) ;    /* pstr指向下一字符 */
                               }while   (i<20 && (isalnum(*pstr)||*pstr=='\''));

if (i>=20)  /* 处理超长单词(含名词所有格形式) */
                while (isalnum (*pstr)||*pstr=='\'')  { pstr++; }
         
           (5) ='\0';    /* 设置暂存在wordbuffer中的单词结尾 */
wordcounter++;    /* 单词计数 */
                  puts (wordbuffer);    /* 输出单词 */
                  }
                    (6) ;    /* pstr指向下一字符 */
          }
          return wordcounter;
}


相关试题

推荐文章
合作网站内容