单选题有以下程序 #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 1B 4 3C 3 4D 0 0

题目
单选题
有以下程序 #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


相似考题
更多“单选题有以下程序 #include voidfun(intx,inty,int*c,int*d) {  *c=x+y;  *d=x-y; } main() {  inta=4,b=3,c=0,d=0;  fun(a,b,c,d);  printf("%d%d",c,d); } 程序的输出结果是(  )。A 7 1B 4 3C 3 4D 0 0”相关问题
  • 第1题:

    以下程序:fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,a);printf(“%d”,a);}程序的输出结果是()

    A、0

    B、29

    C、31

    D、无定值


    参考答案:C

  • 第2题:

    有以下程序 , 程序执行后 , 输出结果是【 1 1 】

    #include <stdio.h>

    void fun(int *a)

    { a[0]=a[1];}

    main()

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

    for(i=2;i>=0;i--) fun(&a[i]);

    for(i=0;i<10;i++) printf("%d",a[i]);

    printf("\n");

    }


    正确答案:

  • 第3题:

    以下程序的输出结果是( )。 includefun(){ int a=0;a+=3;printf("%d",A); } main() {int

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

    include<stdio.h>

    fun()

    { int a=0;

    a+=3;

    printf("%d",A);

    }

    main()

    { int cc;

    for(cc=1;cc<=4;cc++)

    fun();

    printf("\n");

    }


    正确答案:3 3 3 3
    3 3 3 3 解析:本题考查for循环,for(cc=1;cc=4;cc++)表示循环4次,a+=3表示每次a的值增加3,但是子函数中没有将变量a定义为static类型,所以每次调用完子函数之后,变量a所做的改变都不能保存,这样在下一次调用子函数时,a的初值仍是0,所以不管调用多少次,子函数输出始终是3。

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

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

    下列程序的输出结果是( )。 #include<stdio.h> int fun(int x) { 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-fon(5)→fun(5):a=5-fon(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。

  • 第6题:

    有以下程序 include int fun(int a, int b) { if(b==0) return a;

    有以下程序 #include <stdio.h> int fun(int a, int b) { if(b==0) return a; else return(fun(-a,-b)); } main() { printf("%d\n",fun(4,2)); } 程序的运行结果是______。

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。本题考查的是函数递归调用。首先当a=4,b=2时,调用fun(4,2),不满足条件b==0,继续调用fun函数;此时a=3,b=1,即调用fun(3,1),不满足条件b=0,继续调用fun函数;此时a=2,b=0,满足条件b=0,返回a的值2。

  • 第7题:

    下列程序的输出结果是【】。 include void fun(int x) { if(x/2>0) fun(x/2); printf("%d"

    下列程序的输出结果是【 】。

    include <stdio.h>

    void fun(int x)

    {

    if(x/2>0) fun(x/2);

    printf("%d",x);

    }

    main()

    {

    fun(3);printf("\n");

    }


    正确答案:13
    13 解析:此题考查的是函数的递归调用,进入主函数调用fun()函数,进行if语句的判断,当x=3时,条件成立,执行fun(x/2);语句,递归调用fun()函数本身,进行if语句条件判断,if(x/2>0)条件不成立,用printf输出1;返回上一次调用fun()函数,printf输出3,因此程序的最终输出结果为:13。

  • 第8题:

    有以下程序includemain(){int*p,j; p=NULL p=fun(); for(j=0;j<4;j+){printf("%d",*p)

    有以下程序 #include<stdio.h> main() { int *p,j; p=NULL p=fun(); for(j=0;j<4;j+){printf("%d",*p);p++;} } int*fun() { int a[4],k; for(k=0;k<4;k++)a[k]=k; return(A) ; } 程序运行后的输出结果是( )

    A.程序有错不能运行

    B.输出4个NULL

    C.输出0 1 2 3

    D.输出1 1 1 1


    正确答案:A

  • 第9题:

    有以下程序:include int fun(int x[], int n){ static int sum =0,i;for(i=0;i

    有以下程序: #include <stdio.h> int fun(int x[], int n) { static int sum =0,i; for(i=0;i<n;i ++ )sum + =x[i]; return sum;{ int a[] ={1,2,3,4,5},b[]={6,7,8,9},s=0; s = fun(a,5) + fun(b,4) ;printf( "%d \n",s);程序执行后的输出结果是( )。

    A.45

    B.50

    C.60

    D.55


    正确答案:C
    解析:静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。在main函数中调用fun(a,5),执行for循环得到sum=0+a[0]+a[1]+a[2]+a[3]+a[4]=15;然后调用fun(b,4),因为sum为静态变量,再次调用时sum保留上次函数调用结束时的值,所以sum:15+b[0]+b[1]+b[2]+b[3]=45;返回sum的值,main函数中输出的s=15+45=60。

  • 第10题:

    以下程序的输出结果是()。includeint fan(int);main(){int w=5; fun(w);printf("\n");}

    以下程序的输出结果是( )。 #include <stdio.h> int fan(int); main() { int w=5; fun(w); printf("\n"); } fun(int k) { if(k>0) fun(k-1); printf("%d",k); }

    A.5 4 3 2 1

    B.0 1 2 3 4 5

    C.1 2 3 4 5

    D.5 4 3 2 1 0


    正确答案:B
    解析:本题考查函数的递归调用。fun函数共被调用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(0),其中fun(5)是main函数调用的,其余是在fun函数中调用的。

  • 第11题:

    单选题
    有以下程序:#include int fun(int n){ if(n)return fun(n-1)+n; else return 0;}main(){ printf(%d,fun(3));}程序的运行结果是(  )。
    A

    4

    B

    5

    C

    6

    D

    7


    正确答案: C
    解析:
    fun函数是一个递归函数,调用f(3),参数n=3,返回f(3-1)+3 = f(2)+3 = f(1)+2+3 = f(0)+1+2+3 = 0+6 = 6。答案选择C选项。

  • 第12题:

    单选题
    有以下程序:#include int fun(int a,int b){ if(b==0)return a; else return(fun(--a,--b));}main(){ printf(%d,fun(4,2));}程序运行的结果是(  )。
    A

    1

    B

    2

    C

    3

    D

    4


    正确答案: C
    解析:
    fun函数是一个递归函数,其功能是:当b的值为零时,返回此时a的值;否则,返回fun(--a,--b),即a和b的值分别减1后递归调用返回fun函数。当b不断递减时,a也不断递减,直到b为零。执行过程为:执行fun(4,2),b=2,返回fun(3,1),此时b=1,返回fun(2,0),b=0,返回a的值2。答案选择B选项。

  • 第13题:

    以下程序的输出结果是______

    nt fun(int*x,int n)

    {if(n==0)

    return x[0];

    else return x[0]+fun(x+1,n-1);

    }

    main()

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

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

    }


    正确答案:

    10

  • 第14题:

    以下程序的输出结果是( )。 include void fun(int x) {if(x/2>0)fun(x/2); printf("%d",

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

    include<stdio.h>

    void fun(int x)

    { if(x/2>0)fun(x/2);

    printf("%d",x);

    }

    main()

    {fun(3);printf("\n");

    }


    正确答案:13
    13 解析:函数fun是一个递归函数。执行fun(3);,x=3,x/2=1>0,又调用f(1),此时,x=1,x/2=0,不满足继续递归调用的条件,输出1,返回到fun(3)中,输出3。所以本题的输出结果为13。

  • 第15题:

    有以下程序:include main(){inty=9;for( ; y>0; y--)if(y%3==0) printf("%d", --y);}

    有以下程序: #include <stdio.h> main() {int y=9; for( ; y>0; y--) if(y%3==0) printf("%d", --y); } 程序的运行结果是( )。

    A.741

    B.963

    C.852

    D.875421


    正确答案:C
    解析:本题首先令y为9,然后通过一个for循环,当y还大于0则循环,每次循环让y递减1。循环体中是一条if语句,通过%运算符计算每当y能被3整除的时候,输出--y的值,即先将y减1,然后输出y的值。故当y等于9、6、3时会输出,输出值分别为8、5、20所以应该选择C。

  • 第16题:

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

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

    #include<stdio.h>

    int fun(int x)

    { 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。

  • 第17题:

    下列程序执行后的输出结果是 void func(int *a,int b[]) { b[0]=*a+6;} main() { inta,b[5]; a=0;b[0]=3; fun c(&a,b);printf("%d\n",b[0]);}

    A.6

    B.7

    C.8

    D.9


    正确答案:A
    解析: 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针型。它的作用是将一个变量的地址传递到另一个函数中。当数组名作参数时,如果形参数组中的各元素的值发生变化,实参数组元素的值也将随之发生变化。

  • 第18题:

    有以下程序 include define N 4 void fun(int a[][N],int b[]) { int

    有以下程序 #include <stdio.h> #define N 4 void fun(int a[][N],int b[]) { int i; for(i=0;i<N;i++) b[i]=a[i][i]; } main() {int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10} },Y[N],i; fun(x,y); for(i=0;i<N;i++) printf("%d,",y[i]); printf("\n"); } 程序的运行结果是______。

    A.1,2,3,4,

    B.1,0,7,0,

    C.1,4,5,9,

    D.3,4,8,10,


    正确答案:B
    解析:在主函数中,定义并初始化了4行4列的二维数组x。对于二维数组元素的赋值,可以只对部分元素赋初值,未赋初值的元素自动取0。x数组元素赋初值后各元素为:

    fun函数的作用是将二维数组a中主对角线元素赋给数组b,由于数组a与数组x共用同一存储单元,也即将数组x中主对角线元素赋给了数组b。又因为数组b与数组y共用同一存储单元,所以主函数中通过语句“printf("%d,"y[i]);”输出的即为数组b中的值,所以程序运行结果为“1,0,7,0,”。

  • 第19题:

    有以下程序:includeint fun(int*k){int b=0;b=*k+b:return(B);}main(){int a[10]={1,2

    有以下程序: #include<stdio.h> int fun(int*k) {int b=0; b=*k+b: return(B);} main() {int a[10]={1,2,3,4,5,6,7,8},i; for(i=2;i<4;i++){printf("%d",fun(&a[i]));} printf("\n"); } 程序运行后的输出结果是( )。

    A.10 12

    B.8 10

    C.3 4

    D.10 28


    正确答案:C

  • 第20题:

    有以下程序,程序执行后,输出结果是【】include void fun(int*A) {a[0]=a[1];} main() {i

    有以下程序,程序执行后,输出结果是【 】

    include<stdio.h>

    void fun(int*A)

    { a[0]=a[1];}

    main()

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

    for(i=2;i>1=0;i-) fun(&a[i]);

    for(i=0;i<10;i++) printf("%d,a[i]);

    printf("\n");

    }


    正确答案:7777654321
    7777654321 解析:本题主要考查函数的调用,第—次调用把数组元素a[2]的地址赋给a,此时a[1]即是原数组的a[3]等于7,再执行赋值语句a[0]=a[1],则a[0]和a[1]中的值都是7,然后再把这个值返回给a[2]同样地第二次调用的时候函数返回值也是7,第三次调用返回值也是7,因此数组的前4个元素,即对a[0]、a[1]、a[2]和a[3]的值都为7,当执行第二个for循环时输出数组中所有元素的值7777654321。

  • 第21题:

    有以下程序: include int fun(int n) { if(n)return fun(n-1)+n; else return 0; } main( ) { printf("%d\n",fun(3));} 程序的运行结果是( )。

    A.4

    B.5

    C.6

    D.7


    答案:C
    解析:fun函数是一个递归函数,调用f(3),参数n=3,返回f(3-1)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。

  • 第22题:

    以下程序的输出结果是( )。 include fun() {static int a=0; a+=3;printf("%d",A); } ma

    以下程序的输出结果是( )。 include<stdio.h> fun() {static int a=0; a+=3;printf("%d",A); } main() {int cc; for(cc=1;cc<5;cc++)fun(); printf("\n"); }


    正确答案:3 6 9 12
    3 6 9 12 解析:本题考查最基本的for循环。for(cc=1;cc5;cc++)规定循环次数为4次,每次a+=3,即每次a的值增加3,但因为fun函数中变量a为static类型,所以每次调用完子函数之后,变量a所做的改变都要保存。

  • 第23题:

    单选题
    有以下程序: #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选项。

  • 第24题:

    单选题
    有以下程序 #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选项。