参考答案和解析
正确答案:C
解析:函数fun是—个递归调用函数,首先主函数将实参7传递给函数fun中的形参x,由于7≠0,7≠1,不满足if条件,所以执行下面的p=x-fun(x-2);语句,此语句继续调用它本身,直到当x=1时,返回函数值3代入到调用它的表达式中,依此类推……,最终p的值为2。
更多“有以下程序 fun(int x) { int p; if(x=0||x=1) return(3); ”相关问题
  • 第1题:

    有以下程序 include void fun(int*a,int*B) { int*c; c=a;a=b;b=c; } main() {int x=3

    有以下程序 #include<stdio.h> void fun(int*a,int*B) { int*c; c=a;a=b;b=c; } main() { int x=3, y=5,*p=&x, *q=&y; fun(p,q); printf("%d,%d,",*p,*q); fun(&x,&y); printf(" %d,%d\n",*p,*q); } 程序运行后的输出结果是______。

    A.3,5,5,3

    B.3,5,3,5

    C.5,3,3,5

    D.5,3,5,3


    正确答案:B
    解析:本题主要考查的是函数的实参和形参之间的传递关系,C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则。调用函数不可能改变实参指针变量的值。所以x和y的地址并没有改变,即p和q也没有改变,因此,选项B是正确的。

  • 第2题:

    有以下程序 fun(int x) {int p; if(x==0‖x==1) return(3); p=x-fun(x-2); return p; } main() { printf("%d\n",fun(7));} 执行后的输出结果是

    A.7

    B.3

    C.2

    D.0


    正确答案:C
    解析: 因为fun(int x)是一个递归函数,所以主函数中fun(7)经过三次递归调用,其过程可以描述为"fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。

  • 第3题:

    【单选题】下列程序的运行结果是:() fun(int); int main() { int x; x=fun(5); printf("%dn",x); return 0; } fun(int n) { if(n>0) return (n*fun(n-2)); else return 1; }

    A.1

    B.15

    C.120

    D.不能确定


    0 10 1 11 2 12 010111212

  • 第4题:

    有以下程序: fun(int x) { int p; if(x==0‖x=1)return(3); p=x-fun(x-2); return p; } main() { printf("%d\n",fun(7);} 执行后的输出结果是( )。

    A.7

    B.3

    C.2

    D.0


    正确答案:C
    解析:本题的fun()函数在x等于0或1时返回3,而在其余情况下返回x-fun(x-2),所以本题的递归算法可以这样来表示:在主函数中输出的结果是fun(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-(5-0)=7-5=2。故本题应该选择C。

  • 第5题:

    有以下程序: fun(int x) {int p; if(x==0||x==1)return(3); p=x-fun(x-2); return p; } main() {printf("%d\n",fun(7));} 执行后的输出结果是( )。

    A.7

    B.3

    C.2

    D.0


    正确答案:C
    解析:函数fun是一个递归调用函数,首先主函数将实参7传递给fun函数中的形参x,由于x=7不满足if语句的条件,则执行下面的“p=x-fun(x-2);”语句,此语句继续调用本身,直到当x=1时,返回函数值3代入到调用它的表达式中,以此类推,最终p的值为2。