第五章函数错题

1.函数可以嵌套调用但不能嵌套定义。

T

2.阅读程序,选择程序的运行结果()。

#include "stdio.h"
int try(int);
int main()
{
  int x;
  x=try(5);
  printf(“%d\n”, x);
}
int try(int n)
{
   if(n>0)
       return(n*try(n-2));
   else
      return(1);
}   

A.1

B.120

C.均错误

D.15

D

3.执行下面程序,正确的输出是()。

int x = 5, y = 7;
void swap ( )
{
      int z ;

      z = x ;  x = y ;  y = z ;
}
int main(void)
{
      int x = 3, y = 8;
      swap ( ) ;
      printf ("%d,%d \n", x , y ) ;

      return 0 ;
}

A.3,8

B.5,7

C.7,5

D.8,3

A

swap交换的是全局变量x,y。但是如果在main函数里定义了x,y就是局部变量,当全局变量和局部变量出现重名时, 在局部变量作用域内,全局变量失效

4.下列程序的输出结果是

void f(int v,int w)
{ int t;
  t=v; v=w; w=t;
}
int main(void)
{ int x=1, y=3, z=2;
  if(x>y)  f(x,y);
  else if(y>z)  f(y,z);
  else f(x,z);
  printf("%d,%d,%d\n", x, y, z);
  return 0;
}

A.2,3,1

B.1,3,2

C.1,2,3

D.3,1,2

B f函数不带回返回值

5.以下正确的函数声明形式是( )。

A.int func(int x , int y)

B.int func(int , int);

C.int func(int x ; int y);

D.int func(int x , y);

B

6.以下正确的说法是()。

A.形参是虚拟的,不占用内存单元

B.只有当实参与其对应的形参同名时才占用一个共同的存储单元

C.实参与其对应的形参共同占用一个存储单元

D.实参与其对应的形参各占用独立的存储单元

D

7.以下对C语言中函数的有关描述正确的是

A.C程序中有调用关系的所有函数必须放在同一个源程序文件中。

B.C函数既可以嵌套定义又可以递归调用。

C.函数必须有返回值,否则不能使用函数。

D.调用函数时只能把实参的值传送给形参,形参的值不能传送给实参。

8.以下对C语言中函数的有关描述正确的是

A.C程序中有调用关系的所有函数必须放在同一个源程序文件中

B.C函数既可以嵌套定义又可以递归调用。

C.函数必须有返回值,否则不能使用函数。

D.调用函数时只能把实参的值传送给形参,形参的值不能传送给实参。

D c函数可以递归调用,但不能嵌套定义。void函数没有返回值

9.一个递归算法必须包括()。

A.终止条件和循环部分

B.递归部分

C.终止条件和递归部分

D.循环部分

C

10.有以下函数定义:

void fun(int n, double x){......}

下列选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是( )。

A.void fun(x,n);

B.fun(x,n);

C.k=fun(10,12.5);

D.fun(int y, double m);

B D,变量x,y,重复定义了
C,fun没有返回值,无法赋值给k

11.在一个被调用函数中,关于 return 语句使用的描述,错误的是( )。

A.被调用函数中,一个 return 语句可以返回多个值给调用函数B.

被调用函数中可以不用 return 语句

C.被调用函数中可以使用多个 return 语句

D.被调用函数中,如果有返回值,就一定要有 return 语句

A

12.输出10到99之间各位数字之和为12的所有整数。要求定义和调用函数sumdigit(n)计算整数n的各位数字之和。请将函数补充完整。

运行示例:
39 48 57 66 75 84 93

#include <stdio.h>
int main(void)
{
    int i;
    int sumdigit(int n);
    for(i = 10; i <= 99; i++)
        if ( sumdigit(i) == 12 )
            printf("%d ", i);
    return 0;
}
int sumdigit(int n)
{
    int sum;
    sum = 0;
    do
    {
        sum = sum + n%10;
        n = n/10;

    }
    while(n != 0);
    return sum;
}

13.定义递归函数sum(n)计算1+2+...+n, 其中n的类型是int,函数类型是double。

 int sum( int n )
{
    int s;
    if ( n == 1)
    s = 1;
    else 
    s = n + sum( n - 1);
    return s;
}

14.阅读程序,写出程序输出结果。

下列程序将输出___

__。 #include <stdio.h>

void swap(int x, int y)

{ int t; t=x; x=y; y=t; return; }

int main(void)

{ int a=3, b=2;

swap(a, b);

printf("%d#%d#", a, b);

return 0; }

3#2#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有理想的上学人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值