itgle.com

仔细阅读下面程序,请给出运行结果( )。#include#includeint f1(int x){return x*x;}int f2(int x){return x*x*x;}main( ){int x=3,y1,y2,y3,y4;int(*f)( );f=f1;y1=(*f)(x);y2=f1(x);f=f2;y3=f(x);y4=f2(x);printf(“y1=%d,y2=%d,y3=%d,y4=%d\n”,y1,y2,y3,y4);}A.y1=9,y2=9,y3=27,y4=27 B.y1=3

题目
仔细阅读下面程序,请给出运行结果( )。#include#includeint f1(int x){return x*x;}int f2(int x){return x*x*x;}main( ){int x=3,y1,y2,y3,y4;int(*f)( );f=f1;y1=(*f)(x);y2=f1(x);f=f2;y3=f(x);y4=f2(x);printf(“y1=%d,y2=%d,y3=%d,y4=%d\n”,y1,y2,y3,y4);}

A.y1=9,y2=9,y3=27,y4=27
B.y1=3,y2=9,y3=27,y4=9
C.y1=3,y2=3,y3=9,y4=9
D.y1=3,y2=9,y3=9,y4=27

相似考题
参考答案和解析
答案:A
解析:
题中y2和y4是直接函数调用,毫无疑问是9和27,关键在于f=f1是将函数指针f指向了函数f1,因此y1=(*f)(x)本质是调用了函数f1,其结果与直接调用y2=f1(x)相同,y3同理。
更多“仔细阅读下面程序,请给出运行结果( )。#include#includeint f1(int x){return x*x;}int f2(int x){return x*x*x;}main( ){int x=3,y1,y2,y3,y4;int(*f)( );f=f1;y1=(*f)(x);y2=f1(x);f=f2;y3=f(x);y4=f2(x);printf(“y1=%d,y2=%d,y3=”相关问题
  • 第1题:

    分析以下程序,执行后的输出结果是( ) 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,e,f; d=f1(a,B) ;d=f1(d,C) ; e=f2(a,B) ;e=f2(e,C) ; f=a+b+c-d-e;printf("%d,%d,%d",d,f,e); }

    A.3,4,5

    B.5,3,4

    C.5,4,3

    D.3,5,4


    正确答案:C

  • 第2题:

    下列程序运行后的输出结果是( )。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

  • 第3题:

    有以下程序: 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
    解析:函数f1是返回x、y中较大的一个,f2是返回x、y中较小的一个。因此e=4,f=3,g=7。

  • 第4题:

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

  • 第5题:

    有以下程序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,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<<", "<<f<<", "<<e<<end1;}执行后输出结果是

    A.3,4,5

    B.5,3,4

    C.5,4,3

    D.3,5,4


    正确答案:C
    解析:本题只需要考生按照执行顺序分析即可得出正确答案为C。

  • 第6题:

    有以下程序 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的功能是返回两个数中比较小的值。

  • 第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);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正确。

  • 第8题:

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

  • 第9题:

    有以下程序; int f1(double A) { return a*a; } int f2(double x,double y) { double a, b; a=n(x); b=f1(y); return a+b; } main() { double w; w=f2(1.1,2.0); ┇ } 变量w中的值是( )

    A.5.21

    B.5

    C.5

    D.0


    正确答案:C

  • 第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<stdio.h>#include<math.h>int f1(int a){return a*a;}int f2(int a){return a*a*a;}void main( ){int x=3,y1,y2,y3,y4;f=f1;y1=(*f)(x);y2=f1(x);f=f2;y3=f(x);y4=f2(x);printf("y1=%d,y2=%d,y3=%d,y4=%d\n",y1,y2,y3,y4);}

    A.y1=27,y2=9,y3=9,y4=27
    B.y1=9,y2=9,y3=27,y4=27
    C.y1=9,y2=27,y3=9,y4=27
    D.y1=27,y2=27,y3=9,y4=9

    答案:B
    解析:
    本题考查C语言函数指针的基础知识。仔细阅读程序,正确理解函数指针并将参数正确代入函数,可得到y1=9,y2=9,y3=27,y4=27的结果。

  • 第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题:

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

  • 第14题:

    有如下程序: include using namespace std; void f1(int& x, int& y){int z=

    有如下程序:

    #include<iostream>

    using namespace std;

    void f1(int& x, int& y){int z=x; x=y; y=z;)

    void f2(int x, int y){int z=x; x=y; y=z;}

    intmain(){

    int x=10, y=26;

    f1(x, y);

    f2(x, y);

    cout<<y<<end1;

    return 0;

    }

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

    A) 10

    B) 16

    C) 26

    D) 36

    A.

    B.

    C.

    D.


    正确答案:A

  • 第15题:

    有以下程序 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符合题意。

  • 第16题:

    有以下程序 int fl(int x.iht 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,e,f; d=fl{a,B) ; d=f1(d,C) : e=f2{a,B) ; e=f2(e.C) ; f=a+b+c-d-e; printf("%d,%d,%d\n",d,f,e); } 执行后输出的结果是

    A.3,4,5

    B.13,4

    C.5,4,3

    D.3,5,4


    正确答案:C
    解析:本题考核的知识点是函数的定义与函数调用。函数f1()的作用是返回形参x和y的较大值,函数f2()的作用是返回形参x和y的较小值,在main()函数中通过调用两次f1()函数,求得a、b、c的最大值并存放在变量d中,通过调用两次f2()函数,求得a、b、c的最小值并存放到变量e中.由程序可知d值为5,f的值为4,e的值为3,因此最后输出的d,f、e的值为5、4,3。所以,C选项为所选。

  • 第17题:

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

  • 第18题:

    以下程序的输出结果是()。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是递归的终止条件。然后利用已知值逐步递推求出未知值。注意:通过传送地址值,在被调用函数中直接改变调用函数中的变量的值。

  • 第19题:

    有以下程序: 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,e,f; d=fl(a,b);d=f1(d,c); e=f2(a,b);e=f2(e,c); f=a+b+c-d-e; printf("%d,%d,%d\n",d,f,e); } 执行后输出结果是( )。

    A.3,4,5

    B.5,3,4

    C.5,4,3

    D.3,5,4


    正确答案:C
    解析:函数f1()的作用是返回形参x和y的较大值,函数f2()的作用是返回形参x和y的较小值,在main()函数中通过调用两次f1()函数,求得a、b、c的最大值并存放在变量d中,通过调用两次f2()函数,求得a、b、c的最小值并存放到变量e中。由程序可知d值为5,f的值为4,e的值为3,因此最后输出的d、f、e的值为5、4、3。所以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 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选项。