单选题有以下程序:#include main(){ int x[]={8,2,6,12,5,15},f1,f2; int *p=x; f1=f2=x[0]; for(;p {  if(f1  if(f2>*p)f2=*p; } printf("%d,%d",f1,f2);}程序的运行结果是(  )。A 15,2B 15,15C 2,15D 8,8

题目
单选题
有以下程序:#include main(){ int x[]={8,2,6,12,5,15},f1,f2; int *p=x; f1=f2=x[0]; for(;p {  if(f1  if(f2>*p)f2=*p; } printf("%d,%d",f1,f2);}程序的运行结果是(  )。
A

15,2

B

15,15

C

2,15

D

8,8


相似考题
参考答案和解析
正确答案: A
解析:
本题求数组的最大值和最小值,首先把数组x首地址的值赋给指针p,故*p初始值为8,而p是地址值,p+1相当于数组中下一元素的地址,在for循环,是求数组x对应的最大值和最小值,f1为最大值,f2为最小值。因此输出为15和2。答案选择A选项。
更多“单选题有以下程序:#include main(){ int x[]={8,2,6,12,5,15},f1,f2; int *p=x; f1=f2=x[0]; for(;p {  if(f1  if(f2*p)f2=*p; } printf("%d,%d",f1,f2);}程序的运行结果是(  )。A 15,2B 15,15C 2,15D 8,8”相关问题
  • 第1题:

    有以下程序

    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。

  • 第2题:

    有如下程序: include using namespace std; class base { public:virtual void f1(){

    有如下程序: #include<iostream> using namespace std; class base { public: virtual void f1() { cout<<"F1Base"; } virtual void f2() { cout<<"F2Base "; } }; class derive : public base { void f1 ( ) { cout<<"F1Derive"; } void f2( int x ) { cout<<"F2 Derive"; } }; int main () { base objl, * p; derive obj2; p = & obj2; p -> f1(); p -> f2(); return 0; } 执行后的输出结果是( )。

    A.F1Derive F2Base

    B.F1Derive F2Derive

    C.F1Base F2Base

    D.F1Base F2Derive


    正确答案:A
    解析:本题主要考察C++中虚函数机制及其继承过程中的要点。虚函数在基类中加关键词virtual声明,在派生类中重新定义。如果派生类没有覆盖虚函数,则程序执行中将会执行基类的虚函数版本。本题程序中,建立了基类base,其内函数voidf1()和voidf2()均被声明为虚函数,并在调用时会显式地发出声明。派生类derive利用public方式继承基类base,并覆盖其基类base中的虚函数f1()。对于base中的虚函数f2(),由于派生类derive中的同名函数f2()中带有参数intx,因此被编译器认为是函数重载,而不作虚函数覆盖处理,所以实际上派生类derive中包含两个f2()函数,一个不带参数,调用时执行基类base中的f2()函数版本,一个带参数intx,调用时执行重载后的版本。本题主函数中,定义了基类对象。obj1和基类指针*p,同时定义了派生类对象。obj2。p指向obj2时,“p->n()”函数调用执行派生类覆盖后的版本,输出F1Derive;“p->f2()”由于不带参数,因此执行未经派生类覆盖的函数版本,即基类base中的f1()函数版本。

  • 第3题:

    下列程序运行后的输出结果是( )。includeusing namespace std;void f1(int&x) { x++; }void f2(int x) { ++x; }int main(){int x=10,y=12;f1(x);f2(y);cout< return 0;}

    A. 22

    B.23

    C.24

    D.程序有误


    参考答案:B

  • 第4题:

    有以下程序 int f1[int x.int y){ return x>y?x:y; } int f2(int x, int y){ returrnx>y?y:x; } main ( ) { int a=4,b=3, c=5, d=2, e, f, g; e = f2(f1(a,b}, f1(c,d)); f=f1(f2(a,b), f2(c,d);; g = a+b+c+d-e-f; printf("%d,%d,%d\n",c,f,g); } 程序运行后的输出结果是

    A.4,3,7

    B.3,4,7

    C.5,2,7

    D.2,5,7


    正确答案:A
    解析:本题考查的是函数的综合应用.程序开头定义了两个函数f1()、f2(),每个函数都只有一条语句,在f1()中是“如果x>y则返回x否则返回广,即返回两个参数中较大的那一个,C()则正好相反,返回较小的.主函数的语句e=f2(f1(a,b),f1(c,d));是使用两次调用n()函数的返回值作为f2()函数的参数,并将n()的返回值赋给变量e.a、b中较大的数是a为4,c.d中较大的数是c为5,4和5中较小的数是4,所以结果e=4.同理可以推出f=3,那么g=a+b+c+d-e-f=4+3+5+2-4-3=7。所以,4个选项中选项A符合题意。

  • 第5题:

    有以下程序 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。

  • 第6题:

    以下程序的输出结果是()。includeint fun(int n,int *s){ int f1,f2;if(n==0||n==1)*s=

    以下程序的输出结果是( )。 #include<stdio.h> int fun(int n,int *s) { int f1,f2; if(n==0||n==1) *s=1; else { fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } } void main() { int x; fun(6,&x); printf("\n%d" ,x);}

    A.7

    B.13

    C.9

    D.10


    正确答案:B
    解析:n=0或n=1是递归的终止条件。然后利用已知值逐步递推求出未知值。注意:通过传送地址值,在被调用函数中直接改变调用函数中的变量的值。

  • 第7题:

    C 程序写运行结果。

    class A

    {

    public:

    void f1()

    {

    printf("A::f1\r\n");

    }

    virtual void f2()

    {

    printf("A::f2\r\n");

    }

    void callfunc()

    {

    printf("A::callfunc\r\n");

    f1();

    f2();

    }

    };

    class B :public A

    {

    public:

    void f1()

    {

    printf("B::f1\r\n");

    }

    void f2()

    {

    printf("B::f2\r\n");

    }

    void callfunc()

    {

    printf("B::callfunc\r\n");

    f1();

    f2();

    }

    };

    int main()

    {

    B *pB=new B;

    pB->callfunc();

    A *pA=pB;

    pA->callfunc();

    return 0;

    }


    正确答案:
     

  • 第8题:

    有如下程序includeusing namespace std;class base{public:virtual void f1(){cout<<

    有如下程序 #include<iostream> using namespace std; class base { public: virtual void f1() { cout<<"F1Base"; } virtual void f2() { cout<<"F2Base"; } }; class derive:public base { void f1() { cout<<"F1 Derive"; } void f2(int x) { cout<<"F2 Derive"; } }; int main() { base obj1,*p; derive obj2; p=& obj2; p->f1(); p->f2(); return (); ) 执行后的输出结果是( )。

    A.F1Derive F2Base

    B.F1Derive F2Derive

    C.F1Base F2Base

    D.F1Base F2Derive


    正确答案:A

  • 第9题:

    有以下程序:includeiht fun(iht n,int*p){int f1,f2;if(n==1||,n==2)*p=1;else{fun(n-

    有以下程序: #include<stdio.h> iht fun(iht n,int*p) { int f1,f2; if(n==1||,n==2)*p=1; else { fun(n-1,&f1);fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n",s); } 程序的运行结果是______。

    A.2

    B.3

    C.4

    D.5


    正确答案:A
    解析: 本题考查的重点是理解递归函数。fun()为递归函数,递归结束条件时n为1或2,从而fun(3,&s)得fun(2,&s)+fun(1,&s)=1+1=2,因此选项A是正确的。

  • 第10题:

    有以下程序: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。

  • 第11题:

    以下程序的输出结果是( )。 include void main() {int f,f1,f2,i; f1=0;f2=1; printf("%

    以下程序的输出结果是( )。 include<stdio.h> void main() {int f,f1,f2,i; f1=0;f2=1; printf("%d%d",f1,f2); for(i=3;i<=5;i++) {f=-f1+f2,printf("%d",f); f2=f1;f1=f; } printf("\n"); }


    正确答案:0 1 112
    0 1 112 解析:在主函数中定义了整型变量f1和f2,并把其值赋为0和1,在屏幕上输出。然后在第一次运行for循环语句时,变量f的值等于1,把其值输出,把变量f1的值0赋给变量f2,变量f的值1赋给n,在执行第二次for循环语句时,变量f的值等于1,把此值输出。然后再把变量f1的值1赋给变量f2,变量f的值1赋给f1,在执行第三次for循环语句时,变量f的值等于2,把此值输出。所以程序运行后的结果为0 1 112。

  • 第12题:

    单选题
    设y1(x)是方程y′+P(x)y=f1(x)的一个解,y2(x)是方程y′+P(x)y=f2(x)的一个解,则y=y1(x)+y2(x)是方程(  )的解。
    A

    y′+P(x)y=f1(x)+f2(x)

    B

    y+P(x)y′=f1(x)-f2(x)

    C

    y+P(x)y′=f1(x)+f2(x)

    D

    y′+P(x)y=f1(x)-f2(x)


    正确答案: A
    解析:
    根据题意可知,y1′+P(x)y1=f1(x),y2′+P(x)y2=f2(x)。两式相加得(y1′+y2′)+P(x)(y1+y2)=f1(x)+f2(x)。则可发现y=y1+y2是方程y′+P(x)y=f1(x)+f2(x)的解。

  • 第13题:

    有以下程序

    #include<stdi0.h>

    void fun(int n,int*p)

    ( int f1,f2;

    if(n==1|| n==2)*p=1;

    else

    { fun(n-1,&f1);fun(n-2,&f2);

    *p=f1+f2;

    }

    }

    main

    { int s;

    fun(3,&s);printf("%d",s);

    }

    程序的运行结果是( )。

    A.2

    B.3

    C.4

    D.5


    正确答案:A
    在函数fun中对参数n的值进行判断,如果其值等于1或2,则*p=1,否则,函数fun进行递归调用fun(n.1,&f1);fun(13.2,&f2);*p=n+f2;在主函数调用fun函数时传递给参数n的值为3,fun函数又递归用了两次自身fun(2,&n);fun(1,&f1);所以n和f2的值都为1,通过指针P的引用,变量S的值为2。

  • 第14题:

    有以下程序 int f1(int x,int y){return x>y?x:y; } int f2(int x,int y){return x>y?y:x; } main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),n(c,d));f=f1(f2(a,b),n(c,d)); g=a+b+c+d-e-f; printf("%d,%d,%d\n",e,f,g); } 程序运行后的输出结果是______。

    A.4,3,7

    B.3,4,7

    C.5,2,7

    D.2,5,7


    正确答案:A

  • 第15题:

    有如下程序: include using namespace std; int main(){ int f, f1=0, f2=1; for(int

    有如下程序:

    #include<iostream>

    using namespace std;

    int main(){

    int f, f1=0, f2=1;

    for(int i=3; i<=6; i++) {

    f=f1+f2;

    f1=f2; f2=f;

    }

    cout<<f<<end1;

    return 0;

    }

    运行时的输出结果是( )。

    A) 2

    B) 3

    C) 5

    D) 8

    A.

    B.

    C.

    D.


    正确答案:C
    解析:在主函数中for循环语句执行4次,第一次循环结束时,变量f的值等于1,f1的值等于1,f2的值等于1;第二次循环结束时,变量f的值等于2,f1的值等于1,f2的值等于2;第三次循环结束时,变量f的值等于3,f1的值等于2,f2的值等于3;第四次循环结束时,变量f的值等于5,f1的值等于3,f2的值等于5;结束循环。

  • 第16题:

    有以下程序 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正确。

  • 第17题:

    有以下程序 int f1 (int x,inty){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; pintf("%d,%d,%d\n",e,f,g); } 程序运行后的输出结果是 ______。

    A.4,3,7

    B.3,4,7

    C.52,7

    D.2,5,7


    正确答案:A
    解析:函数f1的功能是返回两个数中比较的值,f2的功能是返回两个数中比较小的值。

  • 第18题:

    有以下程序: 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正确。

  • 第19题:

    有以下程序: int f1(doubleA){return a*a;} int f2(int x,int y) {double a,b; a=f1(x); b=f1(y); return a+b; } main() {double w; w=f2(2.1,4.0); } 程序执行后,变量w的值是( )。

    A.20.21

    B.20

    C.20.0

    D.0.0


    正确答案:C

  • 第20题:

    下列程序的输出结果是( )。 int fl(int x,int y){return x>y?x:y;) int f2(int x,int y){return x>y?y:x;} main { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf("%d,%d,%d\n",e,f,g);}

    A.4,3,7

    B.3,4,7

    C.5,2,7

    D.2,5,7


    正确答案:A
    根据函数的定义可知,如果x>Y成立,则函数f1返回x的值,函数f2返回y的值。所以fl(a,b)=4,n(c,d)=5,f2(a,b)=3;,f2(c,d)=2,故e=f2(4,5)=4,f=f1(3,2)=3,g=4+3斗5+2-4-3=7。

  • 第21题:

    下列程序的输出结果是( )。

    int f1(int x,inty){return x>y?x:y;}

    int f2(int x,inty){return x>y?y:x;}

    main()

    {int a=4,b=3,c=5,d=2,e,f,g;

    e=f2(f1(a,B) ,f1(c,D) );

    f=f1(f2(a,B) ,f2(c,D) );

    g=a+b+C+d-e-f;

    phntf("%d,%d,%d\n",e,f,g);

    }

    A.4,3,7

    B.3,4,7

    C.5,2,7

    D.2,5,7


    正确答案:A
    解析:根据函数int f1(int x,int y){return x>y?x:y;}和int馒(int x,int y){retum x>y?y:x;}的定义可知,如果x>y成立,则函数n返回x的值,函数C返回y的值。所以 n(a, B=4,n(c,d)=5,C(a, B=3,f2(c,d)=2,故e=f2(4,5)=4, f=n(3,2)=3,g=4+3+5+2-4-3=7。

  • 第22题:

    下列程序的输出结果是( )。 int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main( ) { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1 (a,b),f1 (c,d)); f=f1 (f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf("%d,%d,%d\n,e, f,g); }

    A.4,3,7

    B.3,4,7

    C.5,2,7

    D.2,5,7


    正确答案:A
    解析:根据函数intf1(int,inty){returnx>y?x:y}和intf2(intx,inty){returnx,>y?y:x;}的定义可知,如果x>y成立,则函数n返回x的值,函数f2返回y的值。所以f1(a,b)=4,f1(c,d)=5,f2(a,b)=3,f3(c,d)=2故e=f2(4,5)=4,f=f1(3,2)3,g=4+3+5+2-4-3=7。

  • 第23题:

    有以下程序

    #include<stdio.h>

    void fun(int n,int *p)

    {

    int f1,f2;

    if(n==1||n==2) *p=1;

    else

    {

    fun(n-1,&f1); fun(n-2,&f2);

    p=f1+f2;

    }

    }

    main()

    {

    int s;

    fun(3,&s); printf(“%d\n”,s);

    }

    程序运行的结果为( )。

    A.2

    B.3

    C.4

    D.5


    正确答案:A