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

阅读以下说明和C程序,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。
【说明】
    函数areAnagrams(char *fstword, char *sndword)的功能是判断fstword和sndword中的单词(不区分大小写)是否互为变位词,若是则返回1,否则返回0。所谓变位词是指两个单词是由相同字母的不同排列得到的。例如,“triangle”与“integral”互为变位词,而“dumbest”与“stumble”不是。
    函数areAnagrams的处理思路是检测两个单词是否包含相同的字母且每个字母出现的次数也相同。过程是先计算第一个单词(即fstword中的单词)中各字母的出现次数并记录在数组counter中,然后扫描第二个单词(即sndword中的单词)的各字母,若在第二个单词中遇到与第一个单词相同的字母,就将相应的计数变量值减1,若在第二个单词中发现第一个单词中不存在的字母,则可断定这两个单词不构成变位词。最后扫描用于计数的数组counter各元素,若两个单词互为变位词,则counter的所有元素值都为0。
    函数areAnagrams中用到的部分标准库函数如下表所述。


【C函数】
int areAnagrams (char *fstword, char *sndword)
{
    int index;
    int counter [26]={0};  /* counter[i]为英文字母表第i个字母出现的次数,
    'A'或'a'为第0个,'B'或'b'为第1个,依此类推 */
    if  (  (1)  )        /* 两个单词相同时不互为变位词 */
        return  0;
    while(*fstword)  {     /* 计算第一个单词中各字母出现的次数 */
        if (isalpha (*fstword))  {
            if (isupper  (*fstword))
                counter  [*fstword -'A']++;
            else
                counter  [*fstword  -'a']++;
             (2) ;      /* 下一个字符 */
        }
    }
    while (*sndword)  {
        if  (isalpha (*sndword))   {
            index= isupper  (*sndword) ? *sndword -'A': *sndword -'a';
            if (counter [index] )
                        counter [index] --;
            else
                         (3) ;
        }
         (4) ;    /* 下一个字符 */
    }
    for (index = 0;  index<26;  index++)
        if  (  (5)  )
            return 0;
    return 1;
}


相关试题

推荐文章
合作网站内容