数据结构-作业5 函数

一. 单选题(共35题,100分)

  1. (单选题)对以下程序,正确的说法是_______.
    sub (char x,char y)
    { int z; z=x%y; return z; }
    void main( )
    { int g=5,h=3,k;
    k=sub(g,h);
    printf(“%d\n”,k); }
    A. 实参与其对应的形参类型不一致,程序不能运行
    B. 程序中没有错误,可以正常运行
    C. 被调函数缺少数据类型说明,程序不能运行
    D. 主函数中缺少对被调函数的说明语句,程序不能运行
    我的答案: B:程序中没有错误,可以正常运行;正确答案: B:程序中没有错误,可以正常运行;
    2.8分
  2. (单选题)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______.
    A. 传递方式由用户指定
    B. 地址传递
    C. 由实参传给形参,再由形参传回实参
    D. 单向值传递
    我的答案: D:单向值传递;正确答案: D:单向值传递;
    2.8分
  3. (单选题)下面程序的输出是_______.
    #include <stdio.h>
    int m=13;
    int fun2(int x, int y)
    { int m=3;
    return(x*y-m);
    }
    void main()
    { int a=7, b=5;
    printf(“%d\n”,fun2(a,b)/m);
    }
    A. 7
    B. 2
    C. 10
    D. 1
    我的答案: B:2;正确答案: B:2;
    2.8分
  4. (单选题)若主调用函数类型为double,被调用函数定义中没有进行函数类型说明,而return语句中的表达式类型为float型,则被调函数返回值的类型是_______。
    A. int 型
    B. 由系统当时的情况而定
    C. float 型
    D. double 型
    我的答案: A:int 型;正确答案: A:int 型;
    2.8分
  5. (单选题)以下叙述中,不正确的是_______.
    A. 使用float b定义的外部变量存放在内存中的动态存储区
    B. 使用static float c定义的内部变量存放在内存中的静态存储区
    C. 使用static float a定义的外部变量存放在内存中的静态存储区
    D. 使用float d定义的内部变量存放在内存中的动态存储区
    我的答案: A:使用float b定义的外部变量存放在内存中的动态存储区;正确答案: A:使用float b定义的外部变量存放在内存中的动态存储区;
    2.8分
  6. (单选题)若函数调用时用数组名作为函数参数,以下叙述中,不正确的是_______.
    A. 实参将其地址传递给形参,结果等同于实现了参数之间的双向值传递
    B. 在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸数组
    C. 实参与其对应的形参分别占用不同的存储空间
    D. 实参与其对应的形参共占用同一段存储空间
    我的答案: C:实参与其对应的形参分别占用不同的存储空间;正确答案: C:实参与其对应的形参分别占用不同的存储空间;
    2.8分
  7. (单选题)以下程序的输出结果是_______.
    #include <stdio.h>
    void fun()
    { static int a=0;
    a+=2;
    printf(“%d”,a); }
    void main()
    { int cc;
    for(cc=1;cc<4;cc++) fun( );
    printf(“\n”); }
    A. 2222
    B. 246
    C. 2468
    D. 222
    我的答案: B:246;正确答案: B:246;
    2.8分
  8. (单选题)C语言中,若未说明函数的类型,则系统默认该函数的类型是_______。
    A. long型
    B. double型
    C. int型
    D. float型
    我的答案: C:int型;正确答案: C:int型;
    2.8分
  9. (单选题)以下程序的输出结果是________.
    #include <stdio.h>
    int a,b;
    void fun()
    { a=100; b=200; }
    void main()
    { int a=5,b=7;
    fun();
    printf(“%d%d\n”,a,b); }
    A. 200100
    B. 100200
    C. 75
    D. 57
    我的答案: D:57;正确答案: D:57;
    2.8分
  10. (单选题)若函数调用时参数为基本数据类型的变量(俗称简单变量),以下叙述正确的是_______.
    A. 实参将数据传递给形参后,立即释放原先占用的存储单元
    B. 实参与其对应的形参分别占用不同的存储单元
    C. 只有当实参与对应的形参同名时才共占存储单元
    D. 实参与其对应的形参共占存储单元
    我的答案: B:实参与其对应的形参分别占用不同的存储单元;正确答案: B:实参与其对应的形参分别占用不同的存储单元;
    2.8分
  11. (单选题)以下程序的输出结果是_________.
    #include <stdi0.h>
    fun(int x,int y,int z)
    { z=xx+yy;}
    void main()
    { int a=31;
    fun(5,2,a);
    printf(“%d”,a); }
    A. 31
    B. 0
    C. 29
    D. 无定值
    我的答案: A:31;正确答案: A:31;
    2.8分
  12. (单选题)以下函数func()的功能是:使具有n个元素的一维数组b的每个元素的值都增加2,划线处应填入__.
    func(int b[ ],int n)
    { int ;
    for(i=0;i<n;i++)
    __________; }
    A. b[i]+=2
    B. b[i]++
    C. b[i++]
    D. b[i+=2]
    我的答案: A:b[i]+=2;正确答案: A:b[i]+=2;
    2.8分
  13. (单选题)调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是_______.
    A. 实参将其值传递给形参,调用结束时形参再将其值回传给实参
    B. 实参将其地址传递给形参,并释放原先占用的存储单元
    C. 实参将其值传递给形参,调用结束时形参并不将其值回传给实参
    D. 实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
    我的答案: C:实参将其值传递给形参,调用结束时形参并不将其值回传给实参;正确答案: C:实参将其值传递给形参,调用结束时形参并不将其值回传给实参;
    2.8分
  14. (单选题)在以下叙述中,不正确的选项是_______。
    A. C语言程序总是从main( )函数开始执行
    B. C程序是函数的集合,在这个函数集中包括标准函数和用户自定义函数
    C. 在C语言程序中,函数的定义不能嵌套,但函数的调用可以嵌套
    D. 在C语言程序中,被调用的函数必须在main( )函数中定义
    我的答案: D:在C语言程序中,被调用的函数必须在main( )函数中定义;正确答案: D:在C语言程序中,被调用的函数必须在main( )函数中定义;
    2.8分
  15. (单选题)下面函数的功能是______。
    sss(s, t)
    char s[ ], t[ ];
    { int i=0;
    while((s[i])&&(t[i])&&(t[i]== s[i])) i++;
    return (s[i]-t[i]);}
    A. 比较两个字符串的大小
    B. 求字符串的长度
    C. 将字符串s复制到字符串t中
    D. 将字符串s接续到字符串t中
    我的答案: A:比较两个字符串的大小;正确答案: A:比较两个字符串的大小;
    2.8分
  16. (单选题)下列程序执行后输出的结果是_______.
    #include<stdio.h>
    int f(int a)
    {int b=0;
    static c=3;
    a=c++,b++;
    return(a); }
    void main()
    {int a=2,i,k;
    for(i=0;i<3;i++)
    k=f(a++);
    printf(“%d\n”,k); }
    A. 0
    B. 5
    C. 3
    D. 4
    我的答案: B:5;正确答案: B:5;
    2.9分
  17. (单选题)在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是:_______.
    A. auto
    B. extern
    C. static
    D. register
    我的答案: C:static;正确答案: C:static;
    2.9分
  18. (单选题)设有如下函数定义:
    int f(char s[ ])
    { int i=0;
    while(s[i++]!=‘\0’);
    return (i-1); }
    如果在主程序中用下面的语句调用上述函数,则输出结果为_______.
    printf(“%d\n”,f(“goodbey!”));
    A. 8
    B. 6
    C. 9
    D. 3
    我的答案: A:8;正确答案: A:8;
    2.9分
  19. (单选题)有如下函数调用语句 func(rec1,rec2+rec3,rec4,
    rec5);该函数调用语句中,含有的实参个数是_______.
    A. 4
    B. 5
    C. 有语法错误
    D. 3
    我的答案: A:4;正确答案: A:4;
    2.9分
  20. (单选题)如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量_______.
    A. 为局部变量,只在该复合语句中有效
    B. 为局部变量,只在该函数内有效
    C. 为全局变量,在本程序文件范围内有效
    D. 定义无效,为非法变量
    我的答案: A:为局部变量,只在该复合语句中有效;正确答案: A:为局部变量,只在该复合语句中有效;
    2.9分
  21. (单选题)请读程序:
    #include<stdio.h>
    f(char s[ ])
    { int i,j;
    i=0;j=0;
    while( s[j]!= ‘\0’) j++;
    return (j-i); }
    void main()
    {printf(“%d\n”,f(“ABCDEF”));}
    上面程序的输出结果是_______.
    A. 0
    B. 6
    C. 8
    D. 7
    我的答案: B:6;正确答案: B:6;
    2.9分
  22. (单选题)C语言中,凡未指定存储类别的局部变量的隐含存储类别是____ ___.
    A. extern
    B. static
    C. register
    D. auto
    我的答案: D:auto;正确答案: D:auto;
    2.9分
  23. (单选题)对于C语言的函数,下列叙述中正确的是_____.
    A. 函数的定义和调用都不能嵌套
    B. 函数的定义和调用都可以嵌套
    C. 函数的定义不能嵌套,但函数调用可以嵌套
    D. 函数的定义可以嵌套,但函数调用不能嵌套
    我的答案: C:函数的定义不能嵌套,但函数调用可以嵌套;正确答案: C:函数的定义不能嵌套,但函数调用可以嵌套;
    2.9分
  24. (单选题)以下函数fun形参的类型是_______.
    fun( float x)
    { float y;
    y=3*x-4;
    return y; }
    A. int
    B. float
    C. void
    D. 不确定
    我的答案: B:float;正确答案: B:float;
    2.9分
  25. (单选题)以下说法中正确的是_______.
    A. C语言程序总是从main()函数开始执行
    B. C语言程序中的main()函数必须放在程序的开始部分
    C. C语言程序总是从第一个定义的函数开始执行
    D. 在C语言程序中,要调用的函数必须在main()函数中定义
    我的答案: A:C语言程序总是从main()函数开始执行;正确答案: A:C语言程序总是从main()函数开始执行;
    2.9分
  26. (单选题)下面程序的输出是_______.
    int fun3(int x)
    {static int a=3;
    a+=x;
    return(a); }
    void main()
    {int k=2,m=1,n;
    n=fun3(k);
    n=fun3(m);
    printf(“%d\n”,n); }
    A. 4
    B. 9
    C. 6
    D. 3
    我的答案: C:6;正确答案: C:6;
    2.9分
  27. (单选题)以下叙述中,不正确的是_______.
    A. 若同一文件中全局变量和局部变量同名,则全局变量在局部变量作用范围内不起作用
    B. 在同一C程序文件中,不同函数中可以使用同名变量
    C. 在main函数体内定义的变量是全局变量
    D. 形参是局部变量,函数调用完成即失去意义
    我的答案: C:在main函数体内定义的变量是全局变量;正确答案: C:在main函数体内定义的变量是全局变量;
    2.9分
  28. (单选题)C语言规定,除主函数外,程序中各函数之间___.
    A. 既允许直接递归调用也允许间接递归调用
    B. 不允许直接递归调用也不允许间接递归调用
    C. 允许直接递归调用不允许间接递归调用
    D. 不允许直接递归调用允许间接递归调用
    我的答案: A:既允许直接递归调用也允许间接递归调用;正确答案: A:既允许直接递归调用也允许间接递归调用;
    2.9分
  29. (单选题)以下函数调用语句中含有实参个数为_______.
    func((exp1,exp2),(exp3,exp4,exp5));
    A. 5个
    B. 1个
    C. 2个
    D. 4个
    我的答案: C:2个;正确答案: C:2个;
    2.9分
  30. (单选题)请读程序:
    #include <stdio.h>
    f(int b[ ], int n)
    { int i, r=1;
    for(i=0; i<=n; i++) r=r*b[i];
    return r; }
    void main()
    { int x, a[]={ 2,3,4,5,6,7,8,9};
    x=f(a, 3);
    printf(“%d\n”,x); }
    上面程序的输出结果是_______.
    A. 6
    B. 720
    C. 24
    D. 120
    我的答案: D:120;正确答案: D:120;
    2.9分
  31. (单选题)有如下程序
    int func(int a,int b)
    { return(a+b); }
    void main()
    { int x=2,y=5,z=8,r;
    r=func(func(x,y),z);
    printf(“%d\n”,r); }
    该程序的输出结果是________.
    A. 12
    B. 15
    C. 13
    D. 14
    我的答案: B:15;正确答案: B:15;
    2.9分
  32. (单选题)请读程序:
    #include <stdio.h>
    f(int b[ ], int n)
    { int i, r=0;
    for(i=0; i<=n; i++) r=r+b[i];
    return r;
    }
    void main()
    {
    int x, a[]={ 2,3,4,5,6,7,8,9};
    x=f(a, 3);
    printf(“%d\n”,x); }
    上面程序的输出结果是_______.
    A. 5
    B. 14
    C. 9
    D. 20
    我的答案: B:14;正确答案: B:14;
    2.9分
  33. (单选题)在C语言中,全局变量的存储类别是_______.
    A. register
    B. void
    C. static
    D. extern
    我的答案: C:static;正确答案: C:static;
    2.9分
  34. (单选题)有如下函数调用语句 func(rec1,rec2+rec3,(rec4, rec5));该函数调用语句中,含有的实参个数是______.
    A. 4
    B. 5
    C. 3
    D. 有语法错误
    我的答案: C:3;正确答案: C:3;
    2.9分
  35. (单选题)C语言中规定函数的返回值的类型是由_______.
    A. 调用该函数时系统临时决定
    B. 调用该函数时的主调用函数类型所决定
    C. 在定义该函数时所指定的类型所决定
    D. return语句中的表达式类型所决定
    我的答案: C:在定义该函数时所指定的类型所决定;正确答案: C:在定义该函数时所指定的类型所决定;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值