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

简答题

 


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

[C代码1]
    int  countChar(char *text)
    {
    int i,sum=0;    /*sum保存不同的英文字母数*/
    char *ptr;
    int c[26]={0);    /*数组C保存每个英文字母出现的次数*/
    /*c[0]己录字母A或a的次数,c[1]记录字母B或b的次数,依此类推*/
    ptr=______;     /*ptr初始时指向字符串的首字符*/
    while (*ptr) {
    if (isupper(*ptr) )
    c [*ptr-'A']++;
    else
    if (islower(*ptr))
    c[*ptr-'a']++;
    ______;   /*指向下一个字符*/
    }
    for(i=0;i<26; i++)
    if(______)sum++;
    return sum;
    }
[说明2]
将下面C代码2中的空缺补全后运行,使其产生以下输出。
f2:f2:f2:2
    f3:f3:1
    [C代码2]
    #include<stdio.h>
    int f1(int(*f)(int));
    int f2(int);
    int f3(int);
    int main()
    {
    printf("%d\n",f1(______));
    printf("%d\n",f1(______));
    return 0;
    }
    int f1(int(*f)(int))
    {
    int n=0;
    /*通过函数指针实现函数调用,以返回值作为循环条件*/
    while  (______)  n++;
    return n;
    }
    int f2(int n)
    {
    printf("f2:");
    return n*n-4;
    }
    int f3(int n)
    {
    printf("f3:");
    return n-1;
    }


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

答案:

text,或&text[0],或其等价形式
ptr++,或++ptr,或ptr=ptr+1,或ptr+=1
c[i],或*(c+i)
f2
f3
f(n),或(*f)(n)


解析:

本题考查了指针、数组和函数指针在C语言中的应用。

对于countChar函数,首先需要让ptr指向字符串的首字符,因此第一个空可以填写ptr = text; 或 ptr = &text[0]; 等。然后在循环中,需要逐个指向字符串中的字符,因此第二个空可以填写ptr++或++ptr等。最后,判断某个英文字母是否出现过,可以通过查看数组c中对应位置的元素是否为零来实现,因此第三个空填写c[i]。

对于C代码2,首先需要根据函数声明来确定实参应该是何种类型的函数。f1函数的声明为int f1(int(*f)(int)),表示f1需要一个指向接受一个整型参数并返回一个整型的函数的函数指针作为参数。因此,在main函数中调用f1时,需要传入符合这种定义的函数f2和f3作为实参。最后,在f1函数内部,需要通过函数指针调用传入的函数,并传入参数n获取返回值,因此最后一个空可以填写f(n)或(*f)(n)。

创作类型:
原创

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

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

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

分享考题
share