单选题有以下程序: #include void fun(int x,int y,int *z) {  *z=y-x; } main() {  int a,b,c;  fun(10,5,&a);  fun(7,a,&b);  fun(a,b,&c);  printf("%d,%d,%d",a,b,c); } 程序运行后的输出结果是(  )。A 5,2,3B -5,-12,-7C -5,-12,-17D 5,-2,-7

题目
单选题
有以下程序: #include  void fun(int x,int y,int *z) {  *z=y-x; } main() {  int a,b,c;  fun(10,5,&a);  fun(7,a,&b);  fun(a,b,&c);  printf("%d,%d,%d",a,b,c); } 程序运行后的输出结果是(  )。
A

5,2,3

B

-5,-12,-7

C

-5,-12,-17

D

5,-2,-7


相似考题
参考答案和解析
正确答案: D
解析:
程序执行过程为:调用函数fun(10,5,&a),将变量a地址传入函数,a=5-10=-5;调用函数fun(7,a,&b),将变量b地址传入函数,b=-5-7=-12;调用函数fun(a,b,&c),将变量c地址传入函数,c=-12-(-5)=-7。输出-5,-12,-7。答案选择B选项。
更多“单选题有以下程序: #include voidfun(intx,inty,int*z) {  *z=y-x; } main() {  inta,b,c;  fun(10,5,a);  fun(7,a,b);  fun(a,b,c);  printf("%d,%d,%d",a,b,c); } 程序运行后的输出结果是(  )。A 5,2,3B -5,-12,-7C -5,-12,-17D 5,-2,-7”相关问题
  • 第1题:

    以下程序的运行结果是

    sub(int x,int y,int *z)

    {*z=y-x;}

    main()

    { int a,b,c;

    sub(10,5,&a);

    sub(7,a,&b);

    sub(a,b,&c);

    printf("M,M,M\n",a,b,c);}

    A.5,2,3

    B.-5,-12,-7

    C.-5,-12,-17

    D.5,-2,-7


    正确答案:B

  • 第2题:

    有以下程序

    fun(int a, int b)

    { if(a>b) return(a);

    else return(b);

    }

    main( )

    { int x=3, y=8, z=6, r;

    r=fun(fun(x,y), 2*z);

    printf("%d\n", r);

    }

    程序运行后的输出结果是

    A.3

    B.6

    C.8

    D.12


    正确答案:D
    解析:此题考查了带返回值的函数的调用。fun()函数的功能是求出两个数的最大数并返回主函数r=fun(fun(x,y),2*z)处。执行过程为先调用函数fun(x,y)求得两数中的较大者,再进行自身的递归调用,此时函数中的两个参数为刚求得的数和2*z(即12)传递给子函数,找出两数中的大数。

  • 第3题:

    以下程序的输出结果是______。

    fun(int x,inty,int z)

    { z=x*x+y*y;}

    main()

    { int a=31;

    fun(6,3,a)

    printf("%d",a)

    }


    正确答案:
    在函数调用时,形参值的改变,不会改变实参值。

  • 第4题:

    下列程序的输出结果是()。includeint fun(intx){int a; if(x==0‖x==1)return 3; elsea=

    下列程序的输出结果是( )。 #include<stdio.h> int fun(intx) { int a; if(x==0‖x==1) return 3; else a=x-fun(x-2); return a; } void main() { printf("%d",fun(7)); }

    A.2

    B.8

    C.9

    D.5


    正确答案:A
    解析: 本题考查函数的递归调用。
    在函数递归调用时,fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去 fun(3):a=3-3=0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的计算结果为2。

  • 第5题:

    请选出以下程序的输出结果()includesub(x,y,z)int x,y,*z;{ *2=y-x;}main(){ int a,b,

    请选出以下程序的输出结果( ) #include<stdio.h> sub(x,y,z) int x,y,*z; { *2=y-x;} main() { int a,b,c; sub(10,5,&A) ;sub(7,a,&B) ;sub(a,b,&C) ; printf("%d,%d,%d\n",a,b,C) ; }

    A.5,2,3

    B.-5,-12,-7

    C.-5,-12,-17

    D.5,-2,-7


    正确答案:B

  • 第6题:

    以下程序的运行结果是( )。 #include(iostream.h> voidsub(intx,inty,int*z) {*z=y-x;} voidmain( ) {inta,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); cout((a<<","<<b<<","<<C<<endl;}

    A.5,2,3

    B.-5,-12,-7

    C.-5,-12,-17

    D.5,-2,-7


    正确答案:B
    B。【解析】在C++语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。

  • 第7题:

    下列程序运行后的输出结果是()。includevoid fun(int,int,int*);void main(){int x,

    下列程序运行后的输出结果是( )。 #include<iostream.h> void fun(int,int,int*); void main() { int x,y,z; fun(5,6,&x); fun(7,x,&y); fun(x,y,&z); cout<<x<<","<<y<<","<<z<<endl; } void fun(int a,int b,int *c) { b+=a; *c=b-a; }

    A.5,5,5

    B.6,6,6

    C.5,6,7

    D.7,7,7


    正确答案:B
    解析:由程序中的main函数入手,分别调用fun函数,第一个调用中x参数为引用地址,调用后x的值为6,因为参数为地址,所以第二个调用中的x参数值为6,调用后y的计算结果为6。同理,z在第三个函数调用后z的值为6。

  • 第8题:

    以下程序的输出结果是( )。include fun(int x,int y,int z) { z=x*x+y*y;} main() { int a=31; fun(5,2,a); printf("%d",a);}

    A、0

    B、29

    C、31

    D、无定值


    正确答案:C 

  • 第9题:

    下列程序运行后的输出结果是()。 include void fun(int,int,int*); void main() { i

    下列程序运行后的输出结果是( )。 #include<iostream.h> void fun(int,int,int*); void main() { int x,y,z; fun(5,6,&x); fun(7,x,&y); fun(x,y,&z); cout<<x<<","<<y<<","<<z<<end1; } void fun(int a,int b,int *c) { b+=a; *c=b-a; }

    A.5, 5, 5

    B.6, 6, 6

    C.5, 6, 7

    D.7, 7, 7


    正确答案:B
    解析:由程序中的main函数入手,分别调用fun函数,第一个调用中x参数为引用地址,调用后x的值为6,因为参数为地址,所以第二个调用中的x参数值为6,调用后y的计算结果为6。同理, z在第三个函数调用后z的值为6。

  • 第10题:

    单选题
    有以下程序:#include int fun(int x,int y){ if(x==y)return(x); else return((x+y)/2);}main(){ int a=4,b=5,c=6; printf(%d,fun(2*a,fun(b,c)));}程序运行后的输出结果是(  )。
    A

    3

    B

    6

    C

    8

    D

    12


    正确答案: B
    解析:
    fun的功能是求两数的平均数,并且参数和结果都为整型。题中是用一个函数作为另一个函数的参数,所以应该先做里面嵌套的函数即fun(b,c),值为5。fun(2*a,fun(b,c))即为计算fun(2*4,5),所以结果为(5+8)/2=6。答案选择B选项。

  • 第11题:

    单选题
    有以下程序 #include  int fun (int x,int y) {  if(x!=y) return ((x+y)/2);  else return (x); } main() {  int a=4,b=5,c=6;  printf(%d,fun(2*a,fun(b,c))); } 程序运行后的输出结果是(  )。
    A

    3

    B

    6

    C

    8

    D

    12


    正确答案: B
    解析:
    fun的功能是求两数的平均数,并且参数和结果都为整型。题中是用一个函数作为另一个函数的参数,所以应该先做里面嵌套的函数即fun(b,c),值为5。fun(2*a,fun(b,c))即为计算fun(2*4,5),所以结果为(5+8)/2=6。答案选择B选项。

  • 第12题:

    单选题
    有以下程序 #include  void fun(int x,int y,int *c,int *d) {  *c=x+y;  *d=x-y; } main() {  int a=4,b=3,c=0,d=0;   fun(a,b,&c,&d);   printf("%d %d",c,d);  } 程序的输出结果是(  )。
    A

    7 1

    B

    4 3

    C

    3 4

    D

    0 0


    正确答案: D
    解析:
    main函数中变量c和d以传地址的方式传递参数,形参的改变会导致实参的改变。答案选择A选项。

  • 第13题:

    有以下程序:includefun(int a, int b){if(a>b) return(a); elsereturn(b);}main(){int

    有以下程序: #include <stdio.h> fun(int a, int b) { if(a>b) return(a); else return(b); } main() { int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); printf("%d\n",r); } 程序运行后的输出结果是( )。

    A.3

    B.6

    C.8

    D.12


    正确答案:D
    解析:本题考查函数的返回值。fun函数的功能是比较a,b的值,返回其中较大者。对于main函数中的语句r=fun(fun(x,y),2*z);是先调用fun(x,y)返回8,再将8和12作为实参调用函数fun,得到的返回值为12。

  • 第14题:

    以下程序的运行结果是()。includevoid sub(int x,int y,int*z){*Z=y-x;}void main()

    以下程序的运行结果是( )。 #include<iostream.h> void sub(int x,int y,int*z) {*Z=y-x;} void main() {int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); cout<<a<<“,”<<b<<“,”<<c<<endl;}

    A.5,2,3

    B.-5,-12,-7

    C.-5,-12,-17

    D.5,-2,-7


    正确答案:B
    解析: 在C++语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。

  • 第15题:

    以下程序的运行结果是include void sub(int x,int y,int *z){*z=y-x;}void main( )

    以下程序的运行结果是 #include<iostream.h> void sub(int x,int y,int *z) { *z=y-x;} void main( ) { int a,b,c; sub(10,5,&a) ; sub(7,a,&b) ; sub(a,b,&c) ; cout << a <<","<< b <<"," << c << en

    A.5,2,3

    B.-5,-12,-7

    C.-5,-12,-17

    D.5,-2,-7


    正确答案:B
    解析:在C++语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。了解了实参指针变量的改变情况,本题只剩下简单的“加减法”了。

  • 第16题:

    有以下程序 fun(int a,int b) { if(a>b) return(a) ; else return(b) ; } main() { int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); Printf("%d\n",r); } 程序运行后的输出结果是

    A.3

    B.6

    C.8

    D.12


    正确答案:D
    解析:主函数中首先定义了4个整型变量x、y、z和r,并分别给x、y、z赋初值为3、8、6,接着调用一个fun()函数,并将返回值赋给变量r。其中将fun(x,y)函数的返回值和2*z作为fun()函数的两个参数。在内层fun(x,y)函数中,将x的值和y的值传给形参a和b,此时a和b的值分别为3和8,执行if语句,由于if后面判断条件表达式“a>b”为假,所以执行else后面的语句,返回值为8。此时,外层fun(x,y)函数两个参数为8和2*z=12,所以,的赋值语句相当于r=fun(8,12),同上分析可知fun(8,12)返回值为 12,因此最后r的值为12。

  • 第17题:

    请选出以下程序的输出结果_______。includesub(x,y,z)int x,y,*z;{*z=y-x;}main(){int

    请选出以下程序的输出结果_______。 #include<stdio.h> sub(x,y,z) int x,y,*z; {*z=y-x;} main(){ int a,b,c; sub(10,5,&A) ;sub(7,a,&B) ;sub(a,b,&C) ; printf("%d,%d,%d\n",a,b,C) ; }

    A.5,2,3

    B.-5,-12,-7

    C.-5,-12,-17

    D.5,-2,-7


    正确答案:B
    解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a),10和5属于值传递,a是属于她址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*2变化,所以此次函数被调用后,a的值为y-x=5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

  • 第18题:

    请选出以下程序的输出结果______。includesub(x,y,z)int x,y*z;{*z=y-x;}main(){int a,

    请选出以下程序的输出结果______。 #include<stdio.h> sub(x,y,z) int x,y*z; {*z=y-x;} main(){ int a,b,c; sub(10,5,&a);sub(7,a,&b);sub(a,b,&c); printf("%d,%d,%d\n",a,b,c); }

    A.5,23

    B.-5,-12,7

    C.-5,-12,-17

    D.5,2,-7


    正确答案:B
    解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

  • 第19题:

    请选出以下程序的输出结果 ______。include sub(x, y, z)int x, y,*z;{*z=y-x:}main()

    请选出以下程序的输出结果 ______。#include <stdio. h>sub(x, y, z)int x, y,*z;{*z=y-x:}main(){ int a, b, c; sub 10,5,&a);sub(7,a,&b);sub(a, b, &c); printf("%d,% d,/%d\n", a, b, c);}

    A.5,2,3

    B.-5,-12,-7

    C.-5,-12,-17

    D.5,-2,-7


    正确答案:B
    解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(0.,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

  • 第20题:

    有以下程序:includefun(int x,int y,int z){z=x*y;}main(){int a=4,b=2,c=6; fun(a,b,

    有以下程序: #include <stdio.h> fun(int x,int y,int z) { z=x*y;} main() { int a=4,b=2,c=6; fun(a,b,c); printf("%d",c); } 程序运行后的输出结果是( )。

    A.16

    B.6

    C.8

    D.12


    正确答案:B
    解析:本题考查函数形参与实参的传递规则,当形参与实参都是简单的数据类型时,形参值的改变不能影响实参值,即本题中c的值未改变,仍然是6。

  • 第21题:

    试题27

    有以下程序

    #include <stdio.h>

    void fun(int *p)

    { printf(“%d\n”,p[5]);}

    main()

    { int a[10]={1,2,3,4,5,6,7,8,9,10};

    fun(&a[3]);

    }

    程序运行后的输出结果是()

    A.5

    B.6

    C.8

    D.9


    正确答案:D
    试题27分析
    函数调用fun(&a[3])是使p=&a[3],即*p=4,所以p[5]=9。
    试题27答案
    D

  • 第22题:

    单选题
    有以下程序#includeint fun(int a,int b){ return a+b;}main(){ int x = 6,y=7,z = 8,r; r = fun(fun(x,y),z--); printf(%d,r);}程序运行后的输出结果是(  )。
    A

    15

    B

    21

    C

    20

    D

    31


    正确答案: B
    解析:
    函数的嵌套调用,fun函数的作用是计算两个整数的和,r=fun(fun(x, y), z--)等价于:temp=fun(x,y),r=fun(temp, z--),则temp=fun(6, 7)=13, 然后r=fun(13,8)=21,最后执行z--,得到z = 7。答案选择B选项。

  • 第23题:

    单选题
    有以下程序: #include  void fun(int *p) {  printf("%d",p[5]); } main() {  int a[10]={1,2,3,4,5,6,7,8,9,10};  fun(&a[3]); } 程序运行后的输出结果是(  )。
    A

    5

    B

    6

    C

    8

    D

    9


    正确答案: C
    解析:
    fun函数的功能是在屏幕上打印输入参数p后的第五个元素。在main中,a[3]的值为4,&a[3]即为取a[3]所指内容的地址,即指针p指向a[3]的地址,故p[5]应为a[3+5]=a[8]=9。答案选择D选项。