niusouti.com
更多“执行完下列语句段后,i值为:() int f(int x) { return ((x>0) ? x* f(x-1):2);} int i ; i =f(f(1));”相关问题
  • 第1题:

    在下面程序横线处填上适当内容,使得程序的输出为9876。include using namespace std;te

    在下面程序横线处填上适当内容,使得程序的输出为9876。

    include <iostream>

    using namespace std;

    template<class T>

    void f(【 】)

    {

    T t;

    for (int i=0;i<n/2;i++)

    {

    t=a Ii];

    a [i]=a[n-1-i];

    a [n-1-i]=t;

    }

    }

    int main ( )

    {

    int x[]={6,7,8,9};

    f(x,4);

    for (int i=0;i<4;i++)

    cout<<x[i];

    cout<<end1;

    return 0;

    }


    正确答案:Ta[]int n
    Ta[],int n 解析:函数f的形参之一为T类型的数组a,形参之二为整型数n。

  • 第2题:

    有以下程序

    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。

  • 第3题:

    有以下程序:includeusing namespace std;int f(int,int);int main(){ int i:1,x; x=f

    有以下程序: #include<iostream> using namespace std; int f(int,int); int main() { int i:1,x; x=f(i,i+1); cout<<x<<end1; return 0; } int f(int a,int b) { int c; c = a; if(a>b) c = 1; else if(a==b) c = 0; else c = -2; return c; } 运行后的输出结果是( )。

    A.1

    B.0

    C.-1

    D.-2


    正确答案:D
    解析:本题考核对函数调用方法的掌握程度。做此类题主要是弄清楚程序每一步的目的:在主函数前面声明了整型函数f。在主函数中,调用了函数f()。实参的值分别是1和2,1传给函数f的形参a,2传给函数f的形参b,函数返回的值赋给变量x。即为输出的函数值。具体分析一下函数f()的功能:如果a大于b,则赋予c的值为1;并且跳出if-else语句。如果a不大于b,则进入elseif分支中,如果a等于b,则赋予c的值为0,并跳出以下的if-else语句。如果a不等于b,则进入else分支,执行c=-2。因为实参1,2分别传给形参a,b,所以此时ab,f()函数应执行c=-2。即最终输出应为-2。

  • 第4题:

    下面程序的结果【】。 include int f(int); void main() { int x=1,i; for (i=0; i<3;

    下面程序的结果【 】。

    include<iostream.h>

    int f(int);

    void main() {

    int x=1, i;

    for (i=0; i<3; i++)

    cout<<f(x)<<‘ ’ ;

    cout<<end1;

    }

    int f(int x){

    int y=1;

    static int z=3

    y++;

    z++;

    return (x+y+z);

    }


    正确答案:7 8 9
    7 8 9

  • 第5题:

    以下程序的输出结果是 ( )。 include using namespace std; int f(int b[],int m, in

    以下程序的输出结果是 ( )。 #include <iostream> using namespace std; int f(int b[],int m, int n) { int i,s = O; for(i = m;i<n;i+=2) s+=b [i]; return s; } int main ( ) { int x a[] = {1,2,3,4,5,6,7,8,9}; x = f(a,3,7); cout<<x<<end1; return 0; }

    A.10

    B.18

    C.8

    D.15


    正确答案:A
    解析:本题考查对数组以及数组作为函数参数的掌握程度。本题通过参数传递将数组a传给f()函数中的数组b,并由s传递返回值给主函数中的x。主函数中,x=f(a,3,7),即把数组a传给f()函数中的数组b,把3传给m,把7传给n。所以函数f()中的for循环中,是从3开始循环,经过两次循环后,实现a[3]和a[5]值的累加,并存入s中,然后返回给主函数中的x。所以x的值为10。故本题答案是A。

  • 第6题:

    有以下程序 int fa(int x) { return x*x; } int fb(int x) { return x*x*x; } int f(int (*f1)(),int (*f2)(),int x) { return f2(x)-f1(x); } main() { int i; i-f(fa, fb,2); printf("%d \n",i); } 程序运行后的输出结果是

    A.4

    B.1

    C.4

    D.8


    正确答案:C
    解析:函数f()有3个形式参数f1、f2和x,其中f1、f2是指向函数的指针变量。在main()函数中执行了函数调用“f(fa,fb,2)”,从而使f()的形式参数f1指向了fa,形式参数f2指向了fb,把实参2传给了行参变量x。函数f()中的return语句中的相当于“fb(2)-fa(2)”(fb(2)的返回值为2*2*2=8,fa(2)返回值为2*2=4)即(8-4),值为4.函数f()执行后把返回值4赋给了i,输出i的值是4.所以4个选项中C正确。

  • 第7题:

    有以下程序 int fa(int x) {return x*x;} int fb(int x) {return x*x*x;} int f(int(*f1)(),int(*f2)(),int x) { return f2(x)-f1(x);} main() {int i; i=f(fa,fb,2);pfintf(“%d\n”,i); } 程序运行后的输出结果是

    A.-4

    B.1

    C.4

    D.8


    正确答案:C
    解析:函数f()有3个形式参数f1、f2和x,其中f1、f2是指向函数的指针变量。在main()函数中执行了函数调用“f(fa,fb,2)”,从而使f()的形式参数f1指向了fa,形式参数f2指向了fb,把实参2传给了形参变量x。函数f()中的return语句相当于“fb (2)-fa(2)”(fb(2)的返回值为2*2*2=8,fa(2)返回值为2*2=4)即(8-4),值为4。函数f()执行后把返回值4赋给了i,输出i的值是4。

  • 第8题:

    有以下程序:include define f(x) x*xmain(){int i; i=f(4+4)/f(2+2); priatf("%d\n",

    有以下程序: #include <stdio.h> #define f(x) x*x main() { int i; i=f(4+4)/f(2+2); priatf("%d\n",i); } 执行后的输出结果是( )。

    A.28

    B.22

    C.16

    D.4


    正确答案:A
    解析:程序中的带参宏定义,替换展开后为i=4+4*4+4/2+2*2+2=4+16+2+4+2=28。

  • 第9题:

    有以下程序: #include 〈iestream〉 using namespace std; int f(int n) { if(n==1) return 1; else return f(n-1)+1; } int main() { int i,j=0; for(i=1;i<3;i++) j+=f(i); cout<

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:本题考查的知识点是递归函数的调用。根据程序代码逐步分析:①f(n)用来计算n+(n-1)…+1,在f(n)定义内部又调用f(n)自身,这就是递归函数。②f(n)=f(n-1)+1,因此必须先计算出f(n-1),而f(n-1)=f(n-2)+1,又必须计算f(n-2)。由此类推,直到n=1,返回后可以此计算出f(n),f(n-1),…f(1)。③第1次调用f(n)时,形参n接收的值为1,进入函数体后,由于满足“n==1”,执行return语句得到1。第2次调用f(n)时,n的值为2,不满足条件“n==1”,执行returnf(n-1)+1,在这条语句中又调用f(n-1)即f(1),从而得到f(2)的返回值为2。所以j=1+2=3。

  • 第10题:

    读程序:includef(int b[],int n){ int i,r;r=1;for(i=0;i<=n;i++)r=r*b[i];return r;}

    读程序: #include <stdio.h> f(int b[],int n) { int i,r; r=1; for(i=0;i<=n;i++) r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 上面程序的输出结果是( )。

    A.720

    B.120

    C.24

    D.6


    正确答案:B
    解析:本题考查函数的调用。函数f的功能是将b[]小的第1到n+1个数组元素的值进行相乘运算,然后返回其结果。由于实参3传给形参n,所以f的返回值为x=2*3*4=5=120。

  • 第11题:

    以下程序的执行结果是______ include int f(int b[],int n) { int i,r=l; for(i=0;

    以下程序的执行结果是______

    include<iostrearn.h>

    int f(int b[],int n)

    {

    int i,r=l;

    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<<x<<endl;

    }


    正确答案:120
    120

  • 第12题:

    请读程序: #include f(int b[],int n) { int i,r;r=1; for(i=0;i<=n;i++)r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d/n",x); } 上面程序的输出结果是()

    • A、720
    • B、120
    • C、24
    • D、6

    正确答案:B

  • 第13题:

    请读程序: include f(int b[],int n) { int i,r; r=l; for(i=0;i<=n;i++

    请读程序: # include<stdio.h> f(int b[],int n) { int i,r; r=l; for(i=0;i<=n;i++)r=r*b[i]; return r; } main() { int x a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf ("%d\n",x); } 上面程序的输出结果是 ( )

    A.720

    B.120

    C.24

    D.6


    正确答案:B

  • 第14题:

    若有以下程序: include using namespace std; int f(int x, int y) {return(y-x)*x;

    若有以下程序:

    include <iostream>

    using namespace std;

    int f(int x, int y)

    {

    return (y-x)*x;

    }

    int main()

    {

    int a=3,b=4,c=5,d;

    d=f(f(a,b) ,f(a,c) );

    cout<<d<<<end1;

    return 0;

    }

    执行后的输出结果是【 】。


    正确答案:9
    9 解析:本题考核函数的嵌套调用。在主函数中执行语句“d=f(f(a,b) ,f(a,c));”调用了3次f()函数:调用f(a,b) 得到的值为3,调用f(a,c) 得到的值为6,调用f(3,6)得到的值为9。

  • 第15题:

    有以下程序: include using namespace std; int f(int); int main() {int i;for(i=0;

    有以下程序:

    include <iostream>

    using namespace std;

    int f(int);

    int main()

    {

    int i;

    for(i=0;i<5;i++)

    cout<<f(i)<<" ";

    return 0;

    }

    int f(int i)

    {

    static int k=1;

    for(;i>0;i--)

    k+=i;


    正确答案:1 2 5 11 21
    1 2 5 11 21 解析:函数f()中定义了一个内部静态变量k,其作用域仍在定义它的函数内。但该类型变量采用静态存储分配,当函数执行完,返回调用点时,该变量并不撤销,其值将继续保留,若下次再进入该函数时,其值仍然存在。内部静态变量有隐含初值0,并且只在编译时初始化一次。

  • 第16题:

    以下程序的输出结果是 f(int b[] ,int m, int n) { int i,s=0; for (i=m; i<n; i=i+2) s=s+b [i]; return s; } main ( ) { int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf ( "%d\n", x); }

    A.10

    B.18

    C.8

    D.15


    正确答案:A
    解析:本题考核的知识点是数组名作为函数参数的应用.在malii()函数中定义了一个变量x,以及一个有9个元素的数组a,并且每个元素分别赋初值为1、2、3、4、5、6、7、8和9.执行函数调用f(a,3,7),把a的首地址赋给形参b,把3和7分别赋给形参m和n。在f()函数中,for循环执行了2次:第一次,i的值为3,相当于执行7语句“s=s+b[3]”,br3J的值就是a[3]的值4,故s的值变为4;第二次,i值为5,相当于执行了语句“s=s+b[5];”,b[5]的值6,故s的值变为10。把s作为函数值返回并赋值给x。所以,4个选项中A为所选。

  • 第17题:

    若有以下程序:include using namespace std;int f(){static int i = 0;int s = 1;s+=

    若有以下程序: #include <iostream> using namespace std; int f() { static int i = 0; int s = 1; s+=i; i++; return s; } int main() { int i,a = 0; for(i = 0;i<5;i++) a+=f(); cout<<a<<endl; return 0; } 程序运行后,输出的结果是

    A.20

    B.24

    C.25

    D.15


    正确答案:D
    解析:本题考核静态局部变量在函数中的使用。静态局部变量就是将局部变量说明为静态的。静态局部变量既有在局部域作用的特性(即变量只能在变量的作用范围内被访问),又可以永久存在(变量的值得以保留,并可继续使用)。静态局部变量只在第一次执行时初始化一次。在函数f中定义了一个静态局部变量i,它的初始值为0,还定义了一个局部变量s(它的初始值为1),用来返回计算所得值。函数f中所进行的数据加工是s+=i和i++。即每调用一次函数f,返回(i+1)的值后,i的值增1。再看主函数,在主函数main中,通过一个for语句连续调用f函数5次,并把每次调用f函数的返回值相加并存入a。最后输出a的值。在了解各函数功能以及调用关系后就可计算出a的值为15。

  • 第18题:

    下列程序的执行结果为【 】。inciudeint f(int i) { return + +i; }int g(int &i)

    下列程序的执行结果为【 】。

    inciude<iostream, h>

    int f(int i) { return + +i; }

    int g(int &i){return ++i; }

    void main()

    { int a, b;

    a=b=0;

    a+ =f(g(A) );

    b+=f(f(B) );

    cout<<%= "<<a<<", b="<<(b<<end1;

    }


    正确答案:a=3b=2
    a=3,b=2 解析:本题考查函数间引用传递的知识点。g(a)执行之后,返回值为1,a也变为1,这就是引用传递的特点。然后执行f(1),返回值为2,此时a=2+1,故a此时为3。由于f(b)不具有引用传递的特征,因此,执行后b=0+2,结果为2。

  • 第19题:

    有以下程序 include int f(int n) {if(n==1)return1; else return f(n-1)+1} voidm

    有以下程序 #include<iostream.h> int f(int n) {if(n==1)return1; else return f(n-1)+1} voidmain() {int i,j=0; for(i=l i<3;i++)=i+=f(i); cout<<j;} 程序运行后的输出结果是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B

  • 第20题:

    下列给定程序中,函数fun()的功能是:计算

    S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。

    例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:

    请改正程序中的错误,使它能得山正确的结果。

    注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <conio. h>

    include <stdio. h>

    include <math. h>

    /**************found***************/

    f (double x)

    {

    if (x==0.0 || x==2.0)

    return 0.0;

    else if (x<0.0)

    return (x-1) / (x-2);

    else

    return (x+1) / (x-2);

    }

    double fun(int n)

    {

    int i; double s=0.0,y;

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

    { y=f(1.0*i); s+=y;}

    /**************found**************/

    return s

    }

    main()

    { clrscr();

    printf ("%f\n", fun (5));

    }


    正确答案:(1)错误;(1)f(double x) 正确:double f (double x) (2)错误;return s 正确:return s;
    (1)错误;(1)f(double x) 正确:double f (double x) (2)错误;return s 正确:return s; 解析:该程序的流程是,fun()程序对f (n)项循环累加,fun()程序采用条件选择语句计算函数f(x)的值。本题错误在于未定义函数f(double x)的返回值类型。C语言规定,在未显式声明的情况下,函数返回值默认为int 型。

  • 第21题:

    include<iostream.h>

    class A

    {

    private:

    int x,y;

    public:

    void f1(int i=0,int j=0){x=i;y=j;}

    void print(){cout<<x<<" "<<y<<endl;}

    void f1(int i=0){x=i,y=0;}

    };

    void main()

    {

    A a;

    a.f1(5);

    a.print();

    }


    正确答案:
    a.f1(5);重载函数产生了二义性。应删去其中一个函数f1。

  • 第22题:

    有以下程序:include using namespace std;int f1(int x, int y){ return x>y ? x:y;}

    有以下程序: #include <iostream> using namespace std; int f1(int x, int y) { return x>y ? x:y; } int f2(int x, int y) { return x>y? y:x; } int main ( ) { int a = 4,b = 3,c = 5,d,e,f; d = f1(a,b) ; d = f1(d,c) ; e = f2 (a,b) ; e = f2(e,c) ; f = a+b+c-d-e; cout<<d<<", "<<e<<", "<<f<<end1; return 0; } 执行后的输出结果是 ( )。

    A.3,4,5

    B.5,3,4

    C.5,4,3

    D.3,5,4


    正确答案:B
    解析:本题考核函数的调用和条件运算符(?)。解此题前,先来复习一下条件运算符的运算规则。对于表达式:表达式1>?表达式2>:表达式3>,它的运算方式为:先计算表达式1的值,如果其值为真(true),则表达式2的值就是整个表达式的最终结果,否则表达式3的值就是整个表达式的值。在了解条件运算符的运算规则后,来看函数f1()和f2()。根据条件运算符的运算规则,可得到函数f1()的功能是返回两数中的较大值,函数f2()的功能足返回两数中的较小值。再分析主函数,由于a=4,b=3,d经过第1次赋值后得到值为4,即d=4。d的第2次赋值表达式为“d=f1(d,C)”,由于此时d=4、c=5,故经过两次赋值后得到d=5。同样e经过两次赋值后可得e=3。再把a=4、b=3、c=5、d=5、e=3代入表达式f=a+b+c-d-e,最后得到f=4。

  • 第23题:

    下列程序的执行结果为______。 include int f(int i) { return++i;} int g(int&i

    下列程序的执行结果为______。

    include<iostream.h>

    int f(int i) { return++i;}

    int g(int&i) {return++i;}

    void main( )

    { int a,b;

    a=b=0;

    a+=f(g(a));

    b+=f(f(b));

    cout<<"a="<<a<<",b="<<b<<endl;

    }


    正确答案:a=3b=2
    a=3,b=2 解析:本题考查函数间引用传递的知识点。g(a)执行之后,返回值为1,a也变为1,这就是引用传递的特点。然后执行f(1),返回值为2,此时a=2+1,故a此时为3。由于f(b)不具有引用传递的特征,因此,执行后b=0+2,结果为2。

  • 第24题:

    单选题
    执行完下列语句段后,i值为:()。int f(intx){return((x>0)?x*f(x-1):2);}int i;i=f(f(1));A.2
    A

    4

    B

    8

    C

    无限递归


    正确答案: C
    解析: