刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

阅读以下说明和C程序,填补代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
函数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(______)  
 /*两个单词相同时不互为变位词*/ 

    return 0; 

    while (*fstword){
   /*计算第一个单词中各字母出现的次数*/ 

    if
(isalpha(*fstword)){ 

    if (isupper
(*fstword)) 

    counter [*fstword
-'A']++; 

    else 

    counter
[*fstword-'a']++; 

    ______;  
 /*下一个字符*/ 

    } 

    } 

    while (*Sndword){ 

    if (isalpha
(*sndword)) { 

    index=isupper
(*sndword)?* sndword -'A':*sndword-'a'; 

    if(counter
[index]) 

    counter [index]--;


    elSe 

    ______; 

    } 

    ______;  
 /*下一个字符*/ 

    } 

    for (index=0;index<26; index++) 

    if(______) 

    return 0; 

    return 1; 

    }

使用微信搜索喵呜刷题,轻松应对考试!

答案:

strcmp(fstword,sndword)=0,或其等价形式
fstword++,或其等价形式
return 0
sndwotd++,或其等价形式
counter [index],或counter [index]!=0,或其等价形式

解析:

本题考查的是对C语言程序的理解与填空能力。根据题目描述和给出的代码片段,我们可以对每一个空进行逐一分析并填充。

空(1):此处的目的是判断两个字符串是否相同,如果相同则它们不可能是变位词。因此,应使用strcmp函数来比较两个字符串,如果它们相等(即返回值为0),则不是变位词。所以空(1)应填写为:strcmp(fstword,sndword)=0或其等价形式。

空(2):在第一个while循环中,我们需要逐个处理第一个单词中的字符。因此,我们需要将指针移动到下一个字符的位置,即使用fstword++或其等价形式。

空(3):如果在处理第二个单词时,发现某个字符在第一个单词中没有出现,那么这两个单词不是变位词。此时应该直接返回0表示不是变位词。所以空(3)应填写为:return 0。

空(4):与空(2)类似,在处理第二个单词时,我们需要将指针移动到下一个字符的位置,即使用sndword++或其等价形式。

空(5):在最后的for循环中,我们需要检查counter数组中的每个元素是否都为0。如果某个元素的值不为0,那么这两个单词不是变位词。所以空(5)应填写为:counter[index]或counter[index]!=0或其等价形式。

创作类型:
原创

本文链接:阅读以下说明和C程序,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]函数areAnagram

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share