有以下程序 #include<stdi0.h> void fun(int n,int*p) ( int f1,f2; if(n==1|| n==2)*p=1; else { fun(n-1,&f1);fun(n-2,&f2); *p=f1+f2; } } main { int s; fun(3,&s);printf("%d",s); } 程序的运行结果是( )。A.2B.3C.4D.5

题目

有以下程序 #include<stdi0.h> void fun(int n,int*p) ( int f1,f2; if(n==1|| n==2)*p=1; else { fun(n-1,&f1);fun(n-2,&f2); *p=f1+f2; } } main { int s; fun(3,&s);printf("%d",s); } 程序的运行结果是( )。

A.2

B.3

C.4

D.5


相似考题
更多“有以下程序 #include&lt;stdi0.h&gt; void fun(int n,int*p) ( int f1,f2; if(n==1|| n==2)*p=1; ”相关问题
  • 第1题:

    有以下程序includevoid f(int *p,int *q);main(){ int m=1,n=2,*r=&m;f(r, &n

    有以下程序 #include<stdio.h> void f(int *p,int *q); main() { int m=1,n=2,*r=&m; f(r, &n); printf("%d,%d",m,n); } void f(int*p,int*q) {p=p+1; *q=*q+1;) 程序运行后的输出结果是______。

    A.1,3

    B.2,3

    C.1,4

    D.1,2


    正确答案:A
    解析:本题主要考查函数实参和形参之间的传递,C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只能由实参传绐形参,而不能由形参传回来给实参。f(r&n)把n的地址传递给q,通过地址传递的函数可以有返回值,因此,n的值为q的返回值3,又因为p是形参变量没有返回值,所以m的值没有改变,因此,选项A是正确的。

  • 第2题:

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

  • 第3题:

    有以下程序

    #include<stdio.h>

    void fun(int n,int *p)

    {

    int f1,f2;

    if(n==1||n==2) *p=1;

    else

    {

    fun(n-1,&f1); fun(n-2,&f2);

    p=f1+f2;

    }

    }

    main()

    {

    int s;

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

    }

    程序运行的结果为( )。

    A.2

    B.3

    C.4

    D.5


    正确答案:A

  • 第4题:

    以下程序的输出结果是______。 fun(int**p,int a[2][3]) {**p=a[1][2]; } main() { int a[2][3]=}1,3,5,7,9,11},*p; p=(int*)malloc(sizeof(int)); fun(&p,a) ; printf("%d\n",*p); }

    A.9

    B.7

    C.1

    D.11


    正确答案:D
    解析:主函数中指针变量指向两字节的存储空间,这两个字节可以存放 int型数据,函数fun是将实参数组a中的元素a[1][2]的值11赋给指针变量p所指的存储空间,程序输出该空间的值。本题函数fun中形参p是二级指针变量,它指向实参指针变量p。

  • 第5题:

    有以下程序:includeiht fun(iht n,int*p){int f1,f2;if(n==1||,n==2)*p=1;else{fun(n-

    有以下程序: #include<stdio.h> iht fun(iht n,int*p) { int f1,f2; if(n==1||,n==2)*p=1; else { fun(n-1,&f1);fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n",s); } 程序的运行结果是______。

    A.2

    B.3

    C.4

    D.5


    正确答案:A
    解析: 本题考查的重点是理解递归函数。fun()为递归函数,递归结束条件时n为1或2,从而fun(3,&s)得fun(2,&s)+fun(1,&s)=1+1=2,因此选项A是正确的。