更多“假设有一个函数声明: int max1(int a, int b) {return a > b? a: b;} 则为了提高程序运行效率,应该将它声明为()”相关问题
  • 第1题:

    若已经声明了函数原型“void fun(int a,double b=0.0);”,则下列重载函数声明中正确的是( )。

    A.void fun(int a=90,double b=0.0);

    B.int fun(int a,double B);

    C.void fun(double a,int B);

    D.bool fun(int a,double b=0.0);


    正确答案:C
    解析:此题考查的是函数重载。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。选项A)中参数表相同,返回类型也相同,所以错误。选项B),选项D)中相同参数表,不同返回类型所以错误。

  • 第2题:

    已知一函数的形参说明为int arr[5][6],则与此等效的形参说明为

    A.int arr[][]

    B.int[5][]

    C.int*a[6]

    D.int(*a)[6]


    正确答案:D
    解析:二维数组可以看作是一维数组的扩展。选项D表示的是一个一维数组,里面每个元素是一个指针,而指针肯定指向某个地址,从而完成二维数组的扩展。考生要注意选项C中*和[]的运算优先级。

  • 第3题:

    有以下程序

    int fa(int x){return x*x;}

    int fb(int x){return x*x*x;}

    int f(int(*fl)(),int(*f2)(),int x}

    {return f2(x)-f1(x);}

    main()

    {int i;i=f(fa,fb,2);printf("%d\n",i);}

    程序运行后,输出结果是【 】。


    正确答案:4
    4 解析:在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。在f中执行f2(x)-f1(x),实际上是执行了fb(2)-fa(2),故执行i=(fa,fb,2)后i的龇23-22=4。

  • 第4题:

    有以下程序:includeusing namespace Std;inta;int fun();int main(){ externinta; in

    有以下程序: #include <iostream> using namespace Std; int a; int fun(); int main() { extern int a; int b; a = 100; b = fun(); cout<<b<<end1; return 0; } int fun() { extern int a; return (10*A); } 其程序运行后的输出结果是( )。

    A.100

    B.10

    C.1000

    D.10000


    正确答案:C
    解析:本题考核外部变量的使用。先来了解外部变量:外部变量用关键词extern表示。由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。对于外部变量而言,“定义变量”和“说明变量”是两个不同的概念。定义a为外部变量是告诉编译程序,a是一个外部变量,并要求系统为a分配一个固定的永久存储空间。a的值在整个程序的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释放。外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。在此程序中,在第二行定义了一个外部变量a,主函数给外部变量赋的初始值为100,当调用函数fun()时,外部变量a的值传到函数fun()中,因此函数所返回的值为100*10=1000。

  • 第5题:

    有如下的运算符重载函数定义:double operator+(int i,int k){return double(i+k);}但定义有错误,对这个错误最准确的描述是( )。

    A.#NAME?

    B.两个int型参数的和也应该是int型,而这里将+的返回类型声明为double

    C.没有将运算符重载函数声明为某个类的友元

    D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符


    正确答案:D
    解析:此题考查的是运算符的重载。c++语言规定,不能作为非成员函数重载的运算符有=、[]、()、->以及所有的类型转换运算符,故选项A)错误;运算符重载对返回值类型没有限制,故选项B)错误;C++并不强制要求非成员重载的运算符一定是某个类的友元,所以选项C)错误:题目中重载的“+”运算符的两个参数都是int类型,而C++已经提供了求两个血型数据之和的运算符+,编译器无法区分应该调用哪一个,所以应该选择选项D)。

  • 第6题:

    请将以下程序中的函数声明语补充完整。 include int【】 main(){int x,y,(*p)(); sccanf("

    请将以下程序中的函数声明语补充完整。

    include<stdio.h>

    int【 】

    main()

    { int x,y,(*p)();

    sccanf("%d%d",&x,&y);

    p=max;

    printf(%d\n",(*p)(x,y));

    }

    int max(int a,int b)

    {return(a>b?a:b);}


    正确答案:max(int aint b)
    max(int a,int b) 解析:在C语言中,除了主函数外,对于用户定义的函数都遵循“先定义,后使用”的规则,若把函数定义放在调用之后,应该在调用之前对函数进行说明(或称为函数原型说明)。
    函数的说明形式为:
    类型名 函数名(参数类型1,参数类型2……)
    本题是通过max()函数来求出a和b中较大的数,由于max()函数的位置在main()函数之后,想要在main()函数中调用max()函数,就必须先在main()函数之前对max()函数进行说明,因为当在所有函数外部、被调用之前说明函数时,在对函数进行说明的语句后面所有位置上都可以对该函数进行调用。所以,在横线上应该填上被调函数的说明语句即 max(int a,int b) 。

  • 第7题:

    对下列程序的描述正确的是()。include using namespace std;int fuc(int,int);int mai

    对下列程序的描述正确的是( )。 #include <iostream> using namespace std; int fuc(int,int); int main(){ cout<<fuc(1,10)<<endl; return 0; } int fuc(int x,int y){ return x*x+y*y; }

    A.该函数的定义和调用方式都是错误的

    B.该函数的定义和调用方式都是正确的

    C.该函数调用方式正确,但函数定义错误

    D.函数定义正确,但函数调用方式错误


    正确答案:B
    解析:函数定义时要给出函数类型、函数名、函数参数表和函数体。fuc()都做到了,该函数的定义和调用方式都是正确的。

  • 第8题:

    有以下程序 include int fun(int a, int b) { if(b==0) return a;

    有以下程序 #include <stdio.h> int fun(int a, int b) { if(b==0) return a; else return(fun(-a,-b)); } main() { printf("%d\n",fun(4,2)); } 程序的运行结果是______。

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。本题考查的是函数递归调用。首先当a=4,b=2时,调用fun(4,2),不满足条件b==0,继续调用fun函数;此时a=3,b=1,即调用fun(3,1),不满足条件b=0,继续调用fun函数;此时a=2,b=0,满足条件b=0,返回a的值2。

  • 第9题:

    下列函数的运行结果是()。includeint add(int a,int b);void main(){extern int x,y

    下列函数的运行结果是( )。 #include<iostream.h> int add(int a,int b); void main() { extern int x,y; cout<<add(x,y)(<endl; ) int x(20),y(5); int add(int a,intB) { int s=a+b; return s; }

    A.25

    B.30

    C.20

    D.15


    正确答案:A
    解析: 由主函数main入手,定义外部变量x和y,调用函数add。因为x,y为外部变量,所以“int x(20),y (5);”的赋值在add也是有效的,即add函数的运算结果为25。

  • 第10题:

    下面函数的运行结果是( )。 include using namespace std; class A{ pu

    下面函数的运行结果是( )。 #include <iostream> using namespace std; class A{ public: A(){} int Min(int a,int b){return a<b? a:b;} int Min(int a,int b,int c){ if(a<b)return a<c? a:c; else return b<c? b:c; } ~A(){} }; void main(){ A a; cout<<a.Min(1,2,3)<<a.Min(2,0); }

    A.10

    B.12

    C.30

    D.32


    正确答案:A
    解析:函数的重载调用。首先调用3个参数返回最小值1,再调用2个参数返回最小值0。

  • 第11题:

    下列函数的运行结果是()。includeint add(int a,int b);void main(){extem int x,y;

    下列函数的运行结果是( )。 #include<iostream.h> int add(int a,int b); void main() { extem int x,y; cout<<add(x,y)<<endl; } int x(20),y(5); int add(int a,int b) { int s=a+b; return s; )

    A.25

    B.30

    C.20

    D.15


    正确答案:A

  • 第12题:

    有如下的运算符重载函数定义:double operator+(int i,int k){return double (i+ k);}但定义有错误,对这个错误最准确的描述是( )。

    A.“+”只能作为成员函数重载,而这里的“+”是作为非成员函数重载的

    B.两个int型参数的和也应该是int型,而这里将“+”的返回类型声明为double

    C.没有将运算符重载函数声明为某个类的友元

    D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符


    正确答案:D

  • 第13题:

    有如下类声明: class MyBASE { int k: public; void set(int n){k=n;} int get() const{return k;} }; class MyDERIVED: protected MyBASE { protected: int j; public: void set(int m, int n){MyBASE::set(m);j=n;} int get() const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B

  • 第14题:

    下列函数的功能是【 】。include int Func(int a,int b) {if (a>b) return 1; else if

    下列函数的功能是【 】。

    include<iostream. h>

    int Func(int a,int b)

    {

    if (a>b) return 1;

    else if(a==b) return 0;

    else return -1;

    }


    正确答案:比较两个整数a和b的大小若a>b则返回1若a等于b则返回0否则返回-1。
    比较两个整数a和b的大小,若a>b则返回1,若a等于b,则返回0,否则返回-1。

  • 第15题:

    阅读下面程序: include using namespace std; int fun(int a,int b) {int c;c = a *

    阅读下面程序:

    include <iostream>

    using namespace std;

    int fun( int a, int b)

    {

    int c;

    c = a * b;

    return c;

    }

    int main ( )

    {

    int a = 3, b = 5, c = 4, x = O;

    x = fun( fun( a, b ), c );

    cout<<x<<end1;

    return 0;

    }

    其运行结果是【 】。


    正确答案:60
    60 解析:本题主要考察C++中函数的调用和变量作用域的问题。主函数中嵌套调用fun()函数,并将计算结果赋给变量x。而对于嵌套内fun()函数,其实参与形参名称相同,函数体内部的局部变量c也与主函数内的变量c名称相同,但由于形参与实参在存储区域里分别占有不同的内存空间,因此互相之间没有任何干扰。函数fun()的作用是返回形参a和b的乘积。由此可以得到函数嵌套调用的计算结果为: x=fun(fun(a,B) ,C) =(a*B) *c=3*4*5=60。即程序输出为60。

  • 第16题:

    有如下类声明: class MyBASE{ int k; public: void set(iht n){k=n;} int get()coast{return k;} }; class MyDERIVED:pnoted My BASE { protected: int j; public: void set(int m,int n){MyBASE::set(m);j=n;} int get()const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:protected派生:pnvate->不可见;protected->private;public->protected。

  • 第17题:

    有如下类声明: class MyBASE{ int k; public: void set(int n){k=n;} int get( )const{return k;} }; class MyDERIVED:protected MyBASE{ protected: intj; public: void set(int m,int n){MyBASE::set(m);j=n;} int get( )const{return MyBASE::get( )+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:在保护派生的单继承中,基类的公有数据成员和成员函数在派生类中成为保护成员。

  • 第18题:

    若有以下函数首部: int fun(double x[10],int *n) 则下面针对此函数的函数声明语句中正确的是( )。

    A.int fun(double x, int *n);

    B.int fun(double, int);

    C.int fun(double *x, int n);

    D.int fun(double*, int*);


    正确答案:D
    解析:本题中的fun函数有两个参数,一个类型是double型一维数组,另—个是int型指针。而在C语言中,一维数组用作函数参数和该数组元素的指针类型是等价的。所以本题的正确答案是选项D。

  • 第19题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。

    【函数2.1说明】

    递归函数sum(int a[], int n)的返回值是数组a[]的前n个元素之和。

    【函数2.1】

    int sum (int a[],int n)

    {

    if(n>0) return (1);

    else (2);

    }

    【函数2.2说明】

    有3个整数,设计函数compare(int a,int b,int c)求其中最大的数。

    【函数2.2】

    int compare (int a, int b, int c )

    { int temp, max;

    (3) a:b;

    (4) temp:c;

    }

    【函数2.3说明】

    递归函数dec(int a[],int n)判断数组a[]的前n个元素是否是不递增的。不递增返回 1,否则返回0。

    【函数2.3】

    int dec( int a[], int n )

    {

    if(n<=1) return 1;

    if(a[0]<a[1]) return 0;

    return (5);

    }


    正确答案:(1)a[n-1]+sum(an-1)或者a[0]+sum(a+1n-1); (2)return 0; (3)temp=(a>b)? (4)max=(temp>c)? (5)dec(a+1n-1);
    (1)a[n-1]+sum(a,n-1)或者a[0]+sum(a+1,n-1); (2)return 0; (3)temp=(a>b)? (4)max=(temp>c)? (5)dec(a+1,n-1); 解析:本题考查C语言函数和一些基本运算。
    下面我们分别来分析这几个函数。在函数2.1中,题目要求用此递归函数求数组前 n个元素之和。递归函数的特点是在函数体中不停地调用函数本身,只是将其函数的参数范围改变。题目中要求我们求数组前n个元素之和,我们可以这样理解,即前n个元素之和等于第n个元素加上前n-1个元素之和,现在的问题转化成如何求前n-1个元素之和。同样的道理,可以将求前n-1个元素之和转化成求前n-2个元素之和,直到这个数小于0。从函数2.1的代码中可以知道,在计算以前,首先判断n与0的关系,如果n小于0,说明数组中无元素,因此,返回0值;如果n大于等于0,说明数组中有元素,应该返回的结果是第n个元素加上前n-1个元素之和,而前n-1个元素之和是调用函数本身来计算的。因此,第(1)空和第(2)空的答案分别是a[n-1)+sum(a,n-1),return()。
    在函数2.2中,题目要求我们在三个数中取最大数,在数学中,我们从三个数中取最大数时,一般是首先拿其中两个数比较,取较大的数再与第三个数比较,再取其较大的数,这个数就是三个数中的最大数。从函数2.2的代码中知道,三个数a、b、c,两个整型变量temp与max。根据求三个数中最大数的数学过程和函数中已给出的代码可知,第(3)空处语句应该为temp=(a>b)?a:b,求得a、b中较大数并存放在变量temp中。第(4)空处语句为max=(temp>c)?temp:c。
    在函数2.3中,题目要求判断数组a[]的前n个元素是否是不递增的。不递增返回1,否则返回0。要判断前n个元素是否是不递增的,需要判断前n-1个元素是否是不递增的,以及第n个元素与第n-1个元素的关系。此处与函数2.1一样,用的都是递归函数,只是出口不同,在函数2.1中,只要数组中没有元素了,递归结束,这里只要第n个元素大于第n-1个元素,则返回0,递归结束。又由if(a[0]a[1])语句可知,在每次调用函数时,都将其数组中的第一个元素与第二个元素比较来作为递归的出口,如果结果为假,就说明数组的前面两项的关系是不递增的,在下次调用中不用再考虑第一项。因此第(5)空应该是dec(a+1,n-1)。

  • 第20题:

    将下面程序补充完整。 include using namespace std; class Base{ public: 【 】fun(){r

    将下面程序补充完整。

    include <iostream>

    using namespace std;

    class Base{

    public:

    【 】 fun(){return 0;} //声明虚函数

    };

    class Derived:public Base{

    public:

    x,y;

    void SetVal(int a,int b){}

    int fun(){return x+y;}

    };

    void 【 】 SetVal(int a,int b){x=a;y=b;} //类Derived成员函数

    void main(){

    Derived d;

    cout<<d.fun()<<endl;

    }


    正确答案:virtual int Derived::
    virtual int Derived:: 解析:virtual int用于声明虚函数;Derived::用于指定类Derived成员函数。

  • 第21题:

    有以下程序includeusing namespace std;int a;int fun();int main(){extern int a;in

    有以下程序 #include<iostream> using namespace std; int a; int fun(); int main() { extern int a; int b; a=100; b=fun(); cout<<b<<endl; return 0; } int fun() { extern int a; return(10*a); } 其程序运行后的输出结果是( )。

    A.100

    B.10

    C.1000

    D.10000


    正确答案:C

  • 第22题:

    有以下程序include using namespace std;int a;int fun ();int main (){extern int a

    有以下程序#include <iostream>using namespace std;int a;int fun ();int main (){ extern int a; int b; a = 100; b = fun(); cout<<b<<end1; return 0;}int fun{){ extern int a; return (10*a ;} 其程序运行后的输出结果是

    A.100

    B.10

    C.1000

    D.10000


    正确答案:C
    解析:本题考核变量的作用域、生存周期和存储类别(自动、静态、存储器,外部)。先来了解外部变量:外部变量用关键字extern表示。由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。对于外部变量而言,“定义变量”和“说明变量”是两个不同的概念。定义a为外部变量是告诉编译程序, a是一个外部变量,并要求系统为a分配一个固定的永久存储空间。a的值在整个程序的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释放。外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。在此程序中,在第二行定义了一个外部变量a,主函数main给外部变量赋的初始值为100,当调用函数fun()时,外部变量a的值传到函数fun()中,因此函数所返回的值为100*10=1000。

  • 第23题:

    对下列程序的描述中,正确的是()。includeusing namespace std;int Fun(int,int);int m

    对下列程序的描述中,正确的是( )。 #include<iostream> using namespace std; int Fun(int,int); int main() { cout<<Fun(5,50)<<end1; return 0; } int Fun(int x,int y) { return x*x+y*y; }

    A.该函数定义正确,但函数调用方式错误

    B.该函数调用方式正确,但函数定义错误

    C.该函数的定义和调用方式都是正确的

    D.该函数的定义和调用方式都是错误的


    正确答案:C
    解析:函数定义时要给出函数类型、函数名、函数参数表和函数体。本程序的Fun()都做到了,所以此函数的定义也是正确的。该函数的定义和调用方式都是正确的。

  • 第24题:

    已知一个函数的定义如下:double fun(int x,double y){⋯⋯}则该函数正确的函数原型声明为()

    • A、double fun(intx,doubley)
    • B、fun(int x,doubley)
    • C、double fun(int,double);
    • D、fun(x,y);

    正确答案:C