阅读以下说明和C代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说明1】 下面的函数countCharq(char*text)统计字符串text中不同的英文字母数和每个英文字母出现的次数(英文字母不区分大小写)。 【C代码1】 in

admin2014-05-07  22

问题 阅读以下说明和C代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
【说明1】
    下面的函数countCharq(char*text)统计字符串text中不同的英文字母数和每个英文字母出现的次数(英文字母不区分大小写)。
【C代码1】
    int  countChar(char  *text  )
    {
    int i,sum=0;/*sum保存不同的英文字母数*/
    char*ptr;
int c[2 6]={0};/*数组C保存每个英文字母出现的次数*/
/*c[0]记录字母A或a的次数,c[1]记录字母B或b的次数,依此类推*/
ptr= (1 );
/*ptr初始时指向字符串的首字符*/
while(*ptr){
    if(isupper(*ptr))
    c[*ptr-’A’]++;
    else
    if(islower(*ptr))
    C[*ptr-’a’]++;
( 2);/*指向下一个字符*/
for(i=0;i<2 6;i++)
  if((3))sum++;
return sum;
}
【说明2】
    将下面C代码2中的空缺补全后运行,使其产生以下输出
    f2:f2:f2:2
    f3:f3:1
【C代码2】
#include
int fl(int(*f)(int));
int f2(int);
int f3(int);
int main()
{
    printf("%d\n",fl((4)));
    printf(”%d\n”,fl((5)));
    return 0;
}
int fl(int(*f)(int))
{
int n=0;
/*通过函数指针实现函数调用,以返回值作为循环条件*/
    while  (    (6 )  )  n++;
    retUrn n;
    }
    int f2(int n)
    {
    printf("f2:  ");
    return n*n-4;
    }
    int f3(int n)
    {
    printf("f3:  ");
    return n-1;
    }

选项

答案(1)text,或&text[0],或其等价形式 (2)ptr++,或++ptr,或ptr=tr+1,或ptr+=1 (3)c[i],或*(c+i) (4)f2 (5)f3 (6)f(n),或(*f)(n)

解析 本题考查数据指针、运算逻辑和函数指针的应用。
    首先应认真分析题目中的说明,然后确定代码结构和各变量的作用。
    在函数countChar(char*text]~中来统计字符串text中不同的英文字母数和每个英文字母出现的次数。用来表示计数值的数组元素c需要与英文字母对应起来,方式为c[0]记录字母A或a的次数,c[1]记录字母B或b的次数,依此类推,因此i=英文字母‘A’ (英文字母为大写)或i=英文字母-‘a’(英文字母为小写)。
    数据指针是指向数据的指针变量。数据指针ptr用来表示。text中的每一个字符,初始时ptr指向第一个字符,因此空(1)处应填入“text"或其等价方式,(2)处的作用是随循环控制逐个指出text中的后续字符,因此空(2)处应填入“ptr++”或其等价方式。
    显然,若c的值不为0则表示字符‘A’+i或‘a’+i出现了,反之,则表示字符‘A’+i或‘a’+i未出现,因此在计算字符种类时只要判断c是否为0即可,因此空(3)处应填入“c”或其等价形式。
    函数指针是指向函数的指针变量。根据代码2的声明“int fl(int(*f)(int));”可知调用函数f1时,实参应该是函数名或函数指针,且函数名或函数指针指向的函数应有一个整型参数,返回值为整型,而f2和f3都是符合这种定义类型的函数。
    C代码2中,在main函数中两次调用了函数f1,分析运行结果可知,是先以f2为实参调用f1,然后以f3为实参调用f1,因此空(4)和(5)分别填入“f2”或“f3”或它们的等价形式,在空(6)处应填入“f(n)”或其等价形式来实现最后对f2和f3的调用。
    while  (    (6 )  )  n++;
    retUrn n;
    }
    int f2(int n)
    {
    printf("f2:  ");
    return n*n-4;
    }
        
    int f3(int n)
    {
    printf("f3:  ");
    return n-1;
    }
转载请注明原文地址:https://kaotiyun.com/show/pnjZ777K
0

最新回复(0)