参考答案和解析
正确答案: B
解析:
主函数中语句d=f(f(a,b),f(a,c));用函数的返回值做参数,所以首先计算f(a,b)代入a=3,b=4,得3,然后计算f(a,c),代入a=3,c=5得6,所以d=f(f(a,b),f(a,c));,即为计算d=f(3,6),值为9。答案选择B选项。
更多“单选题有以下程序:#include int f(int x,int y){ return((y-x)*x);}main(){ int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf(%d,d);}程序运行后的输出结果是(  )。A 10B 9C 8D 7”相关问题
  • 第1题:

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

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

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

  • 第4题:

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

  • 第5题:

    有以下程序includedefine F(X,Y)(X)*(Y)main(){int a=3,b=4;printf("%d\n",F(a++,b++

    有以下程序 #include<stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); 程序运行后的输出结果是

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a++) *(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。

  • 第6题:

    有以下程序:includeint a=2;int f(int *a){return (*a) ++;}main(){ int s=0;{ int a=

    有以下程序: #include <stdio.h> int a=2; int f(int *a) { return (*a) ++;} main() { int s=0; { int a=5; s+=f(&a); } s+=f(&a); printf("%d\n",s) } 执行后的输出结果是( )。

    A.10

    B.9

    C.7

    D.8


    正确答案:C
    解析:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用这些变量。对于main函数中的{inta=5;s+=f(&a);},a只在花括号内有效。在函数之外定义的变量称为外部变量,外部变量是全局变量,它的有效范围是从定义该变量的位置开始到本源文件结束。程序开头的定义inta=2;使a成为全局变量,main函数中第二个s+=f(&a);语句中的a就是这个全局变量。

  • 第7题:

    有下列程序: include int f(int x) { int y; if(x=0‖x==1)r

    有下列程序: #include <stdio.h> int f(int x) { int y; if(x=0‖x==1)return(3); y=x*x-f(x-2); return y; } main() { int z; z=f(3);printf("%d\n",z); 程序的运行结果是( )。

    A.0

    B.9

    C.6

    D.8


    正确答案:C
    解析:主函数调用f()函数,将实参3传递给x,进行if条件语句的判断不成立,接着执行y=3*3-f(1),再执行f(1)而f(1)满足if条件语句,所以f(1)的值为3,那么代入y=3*3-f(1)=9-3=6,故选项C)为正确的运行结果。

  • 第8题:

    有以下程序: 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选项为所选。

  • 第9题:

    有以下程序:includedefine F(x,y) (x)*(y)main(){int a=3,b=4; printf("%d\n",F(a++,

    有以下程序: #include <stdio.h> #define F(x,y) (x)*(y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } 程序运行后的输出结果是( )。

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:本题考查带参数的宏定义。对F(a++,b++)展开后,宏的返回值为3×4=12,这里a++,b++都是先使用变量值,再自增。

  • 第10题:

    有以下程序: #include<stdio.h> int f(int x): main {int n=1,m; m=f(f(f(n)));printf("%d\n",m); } int f(int x) {return x*2;) 程序运行后的输出结果是( )。

    A.1

    B.2

    C.4

    D.8


    正确答案:D
    本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

  • 第11题:

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

  • 第12题:

    单选题
    有以下程序:#include int f(int x){ int y; if(x==0||x==1)  return (3); y=x*x-f(x-2); return y;}main(){ int z; z=f(3); printf(%d,z);}程序的运行结果是(  )。
    A

    0

    B

    9

    C

    6

    D

    8


    正确答案: C
    解析:
    函数f是递归函数,递归的终止条件是x为1或2。f(3)=3*3-f(1),当x=0或x=1时返回值为3,即f(0)=3,f(1)=3;所以y=3*3-3=6。答案选择C选项。

  • 第13题:

    有以下程序

    #include <stdio.h>

    int f(int x)

    { int y;

    if(x==0||x==1) return(3);

    y=x*x-f(x-2);

    return y;

    }

    main()

    { int z;

    z=f(3); printf("%d\n",z);

    }

    程序的运行结果是

    A.0

    B.9

    C.6

    D.8


    正确答案:C
    解析:函数int f(int x)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下y=x2-f(x-2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。

  • 第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 define F(X,Y) (X)*(Y) main( ) { int a=3, b=4; prin

    有以下程序

    #include <stdio.h>

    #define F(X,Y) (X)*(Y)

    main( )

    { int a=3, b=4;

    printf("%d\n", F(a++, b++));

    }

    程序运行后的输出结果是

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:本题考查了带参数的宏定义。参数只是进行简单的替换而不是把其值求出后替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值。

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

    有以下程序inc1udeint f(int x,int y){return((y-x)*x);)main(){ int a=3,b=4,c=5,d;d

    有以下程序 #inc1ude<stdio.h> int f(int x,int y) { return((y-x)*x);) main() { int a=3,b=4,c=5,d; d=f(f(a,B) ,f(a,C); printf("%d\n",D); } 程序运行后的输出结果是______。

    A.10

    B.9

    C.8

    D.7


    正确答案:B
    解析:本题考查的是函数的嵌套调用和参数传递,先执行main函数,第—次调用f(a,b) ,将参数a,b的值传递给函数f中对应开参x,y,然后返回表达式“(y-x)*x););”的运算结果,即:(4-3)*3=3,所以函数结果为3;第二次调用f(a,c) ,将参数a,c的值传递给函数f中对应形参x,y,然后返回表达式“(y-x)*x);”的运算结果,即:(5-3)*3=6,所以函数返回值为6;第三次调用函数f,使用的参数是前两次调用的结果,即:f(3,6),将参数值传递给函数f中对应形参x,y,返回的结果为9,因此,选项B是正确的。

  • 第18题:

    以下程序的输出结果是int f(int x,int y){ return(y-x)*x; }main(){ int a=3,b=4,c=5,d; d=f(f(3,4),f(3,5)); printf("%d\n",d);}


    正确答案:9
    本题主要考查函数的嵌套调用。在本题程序中,首先定义了一个函数f,函数带有两个整型形参,该函数的作用从程序中不难看出,是返回一个两形参差与第一个形参乘积的结果值。
    在主函数中,定义四个整型变量a,b,c,d,其中a,b,c的初值分别为3,4,5,然后嵌套调用函数f,通过简单的计算我们可以知道,f(3,4)的返回值为3,而f(3,5)的返回值为6,然后分别用这两个返回值作为f的参数,得到返回值9,并将这个值赋值给变量d,然后输出,因此,最后的输出结果是9。

  • 第19题:

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

  • 第20题:

    有以下程序includeint f(intx){inty; if(x==0||x==1)return(3); y=x*x-f(x-2); return

    有以下程序 #include <stdio.h> int f(int x) { int y; if(x==0||x==1) return(3); y=x*x-f(x-2); return y; } main() { int z; z=f(3); printf("%d\n",z); } 程序的运行结果是

    A.0

    B.9

    C.6

    D.8


    正确答案:C
    解析:函数int f(int x)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下y=x2-f(x -2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。

  • 第21题:

    以下程序的输出结果是include "stdio.h"int *f(int *x,int *y){ if(*x<*y) return x; else return y;}main(){ int a=7,b=8, *p,*q,*r ; p=&a; q=&b; r= f(p,q); printf("%d,%d,%d\n",*p,*q,*r);}


    正确答案:7,8,7。
    在本题中,程序首先定义了一个函数f,其结构是int *f(int *x,int *y),这个结构说明函数f的返回类型是指针型,函数f的两个变量分别是指针变量x和y,从程序中我们很容易看出,这个函数的作用是返回形参中值较小的指针值(即地址值),返回的是指针型的结果。
    在主函数中,首先定义了两个整型变量,分别赋初值7和8,并定义了三个指针型变量,接着将指针变量p和q分别指向变量a和b,然后调用函数f,参数分别为指针变量p和q,很显然,p所指向的值小于q所指向的值,那么返回指针变量p的地址值给指针变量r,由于指针变量P的地址值是变量a存储单元的地址值,也就是说,指针变量r指向变量a,因此,最后程序的输出结果是7,8,7。

  • 第22题:

    有以下程序:include define F(X,Y)(X)*(Y)main(){int a=3,b=4;printf("%d\n",F(a++,b

    有以下程序: #include <stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } 程序运行后的输出结果是( )。

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:在程序中先将表达式中的宏替换掉,则输出语句中的表达式为(a++)*(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。所以,4个选项中选项A符合题意。

  • 第23题:

    单选题
    有以下程序:#include int f(int x); main(){ int n=1,m;  m=f(f(f(n))); printf(%d,m); }int f(int x) { return x*2;} 程序运行后的输出结果是(  )。
    A

    4

    B

    2

    C

    8

    D

    1


    正确答案: D
    解析:
    考查函数嵌套调用,第一次调用的是最内层的f(n),即f(1)返回值2。第二次调用中间的f(f(n)),即f(2)返回值4。最后调用最外层的f(f(f(n))),即f(4)返回值8,最后打印输出。答案选择C选项。