C++:第3章 函数

第3章  函数

单选题

  1. 若有以下函数调用语句,在此函数调用语句中实参的个数是(   A    ) 。

fun(a+b,(y=10,y),fun(n,k,d));

   A. 3      B. 4   C. 5   D. 6

  1. 以下函数调用语句中,含有的实参个数是(  A  ).

func(rec1,rec2 +1,(rec3,rec4));

   A. 3   B. 4   C. 5   D. 有语法错误

  1. 以下程序的运行结果是(   A    ) 。

#include

int func(int a,int b);

void main()

{ int k=4,m=1,p;

p=func(k,m);

cout<

p=func(k,m);

cout<

}

int func(int a,int b)

{ static int m,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

 A. 8,17     B.8,16    C. 8,20   D. 8,8

  1. 分析如下程序:

#include

int 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);

cout<

}

上面程序的输出结果是(   B    ) 。

   A. 720   B. 120   C. 24   D. 6

  1. 下列函数参数默认值定义错误的是(   C    )

   A. Fun(int x, int y=0)   B. Fun(int x = 100)

   C. Fun(int x = 0, int y)   D. Fun(int x = f( )) (假定函数f()已经定义)

  1. 在C++语言中,对函数参数默认值描述正确的是(    D   ) 。

   A. 函数参数的默认值只能设定一个

   B. 一个函数的参数若有多个,则参数默认值的设定可以不连续

   C. 函数必须设定默认值

   D. 在设定参数的默认值后,该参数后面定义的所有参数都必须设定默认值

  1. 下列带缺省值参数的函数说明中,正确的说明是(    A   ) 。

   A. int Fun(int x,int y=2,int z=3);

   B. int Fun(int x=1,int y,int z=3);

   C. int Fun(int x,int y=2,int z);

   D. int Fun(int x=1,int y,int z=3);

  1. 在函数定义前加上关键字“inline”表示该函数被定义为(   B    ) 。

   A. 重载函数   B. 内联函数   C. 成员函数   D. 普通函数

  1. 一个函数功能不太复杂,但要求被频繁调用,选用(   A    ) 。

   A. 内联函数   B. 重载函数   C. 递归函数   D. 嵌套函数

  1. 下面有关重载函数的说法中正确的是(    C   ) 。

   A. 重载函数必须具有不同的返回值类型

   B. 重载函数形参个数必须不同

   C. 重载函数必须有不同的形参列表

   D. 重载函数名可以不同

  1. 虑函数原型 void test(int a,int b=7,char z='*'),下面的函数调用中,属于不合法调用的是( C  )。

   A. test(5);   B. test(5,8);   C. test(6,'#');   D. test(0,0,'*');

  1. 以下对C++ 函数的有关描述中,正确的是(   A   ) 。

   A. C++调用函数时,传值调用只能把实参的值传给形参,形参的值不能传递给实参

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

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

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

  1. 在C++语言中函数返回值的类型是由(   C   )决定的。

   A. 调用该函数时系统临时

   B. return语句中的表达式类型

   C. 定义该函数时所指定的函数类型

   D. 调用该函数时的主调函数类型

  1. 以下程序的输出结果是(   C    ) 。

#include

int func(int a,int b)

{ return a+b;}

void main()

{ int x=6,y=7,z=8,r;

r=func(func(x,y),z--);

cout<

}

   A. 15   B. 20   C. 21   D. 31

  1. C++语言中,形参与实参之间的数据传递方式是(   C    ) 。

   A. 只能按值传递

   B. 只能按地址传递

   C. 既可以按值传递也可以按地址传递

   D. 以上说法都不对

  1. 分析以下程序:

 

#include

void fun(int num){cout<

void fun(char ch){cout<<(ch+1)<

int main(){

fun('A');

return 0;

}   

以上程序的输出结果是(    B   ) 。

   A. 65   B. 66   C. A   D. B

  1. 一个函数为void f(int x, char y = ‘a’),另一个函数为void f(int,int),则它们(    B  ) 。

   A. 不能在同一程序块中定义

   B. 可以在同一个程序块中定义并可重载

   C. 可以在同一个程序块中定义,但不可以重载

   D. 以上说法均不正确

  1. 以下正确的描述是(  B )。

    A. 函数的定义可以嵌套,函数的调用不可以嵌套

    B. 函数的定义不可以嵌套,函数的调用可以嵌套

    C. 函数的定义和函数的调用均可以嵌套

    D. 函数的定义和函数的调用均不可以嵌套

  1. 函数定义为Fun(int &i),变量定义n = 100,则下面调用正确的是(   C    ) 。

   A. Fun(20)   B. Fun(20 + n)   C. Fun(n)   D. Fun(&n)

  1. 当一个函数无返回值时,函数的类型应为(   B    ) 。

   A. 任意   B. void   C. int   D. char

  1. 在每个C++程序中都必须包含有这样一个函数,该函数的函数名为   (A)。

A. main           B. MAIN           C. name           D. function

  1. 下面的哪个保留字不能作为函数的返回类型?( C )。

A. void           B. int              C. new             D. long

  1. 下面的函数声明中,哪一个是“void  BC(int  a , int  b);”的重载函数?( B )    

A. int  BC(int  a , int  b)             B.  void  BC(int  a , char  b)

C. float  BC(int  a , int  b , int  c=0)   D.  void  BC(int  a , int  b=0)

  1. int Func(int,int);不可与下列哪个函数构成重载( B )

A.int Func(int,int,int);

B.double Func(int,int);

C.double Func(double,double);

D.double Func(int,double);

  1. 在下面的函数声明中,存在着语法错误的是( D )。

A. void  BC(int  a , int)           B. void  BD(int , int)

C. void  BE(int , int=5)            D. int  BF(int  x ; int  y)

  1. 设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是( C )

A.int m = max(22,max(59,70)); B.int m = max(max(22,59),70);

C.int m = max(22,59,70);      D.int m = max(59,max(22,70));

  1. 在下列关于C++函数的叙述中,正确的是(  C    )

A.每个函数至少要有一个参数 B.每个函数都必须返回一个值

C.函数在被调用之前必须先声明 D.函数不能自己调用自己

 

程序阅读题

1、

#include  

void  Swap( int &a, int & b);

void main()

{

int x( 10 ), y( 7 );

cout<<"x="<

Swap( x , y );

cout<<"x="<

}

void Swap(int & a, int & b)

{ int  temp; temp = a ; a=b ; b=temp ; }

运行结果:

x=10,y=7

x=7,y=10

 

2、

#include  

int add(int a, int b);

void main()

{

extern int x, y;

cout<

x/=y;

cout<

}

int x(50),y(100);

int add(int a, int b)

{ int s=a+b ; return s; }

运行结果:

150

100

3、

#include
int func(int a)
{
int b=0;
static int c=4;
b++; c--;
return(a+b+c);
}
void main( )
{
int a=2;
for(int j=0;j<2;j++)
cout< }

输出结果为:6  6

4、

# include

void  WF(int  x , int  y)  {

x=x+y;

y=x+y;

cout <<"subs:"<<"x,y="<

}

void main( )

{ int x=8,y=15;

cout  <<"main:"<<"x,y="<

WF(x,y);

x=2*x;

cout  <<"main:"<<"x,y="<

WF(x,y);

cout  <<"main:"<<"x,y="<

}

输出结果为:

main:x,y=8,15

subs:x,y=23,38

main:x,y=16,15

subs:x,y=31,46

main:x,y=16,15

编程题

  1. 编写程序,采取主函数调用isprime()函数的形式,输出10-100之间的素数。

#include

bool isprime(int n)

{

int i;

for(i=2;i

{if(n%i==0) return false;

    }

return true;

}

void main()

{

for(int i=10;i<=100;i++)

{

if(isprime(i))

cout<

}

}

2、编写程序求下面表达式的值:

 

#include

double multiple(int n)

{

int i;

double p=1;

for(i=1;i<=n;i++)

{

p*=i;

}

return p;

}

void main()

{

int n,m;

double k;

cout<<"输入正整数n=";

cin>>n;

cout<<"输入小于或等于"<

cin>>m;

k=multiple(n)/(multiple(m)*multiple(n-m));

cout<<"k="<

}

 

 

 

 

 

你可能感兴趣的:(C++习题,c++)