若有如下程序: int sub(int m) { if(m==1||m==0) return 2; else return(sub(m-1)*sub(m-2));} main() { int n; scanf("%d",&n); printf("%d",sub(n)); } 如果从键盘输入4<回车>,则程序运行后的输出结果是( )。A.8B.16C.24D.32

题目

若有如下程序: int sub(int m) { if(m==1||m==0) return 2; else return(sub(m-1)*sub(m-2));} main() { int n; scanf("%d",&n); printf("%d",sub(n)); } 如果从键盘输入4<回车>,则程序运行后的输出结果是( )。

A.8

B.16

C.24

D.32


相似考题
更多“若有如下程序:int sub(int m) {if(m==1||m==0)return2;else return(sub(m-1)*sub(m-2));}main(){ ”相关问题
  • 第1题:

    以下程序的输出结果是#include "stdio.h"int *fun(int *a,int *b){ int m; m=*a; m+=*b-3; return(&m);}main(){ int x=21,y=35,*a=&x,*b=&y; int *k; k=fun(a,b); printf("%d\n",*k);}


    正确答案:53
    本题考查指针函数的使用。题目给出的程序包括两个部分,一个为指针函数fun,一个为主函数main。主函数main部分给出两个整型变量x和y,并给出相应的赋值。main函数的执行结果为输出*k的值,而*k的值即*fun的值。fun函数包括两个整型指针形参*a和*b。通过对*a、*b进行操作,得到结果m,并将m值返回,整个程序的实际输出即为m的值。初始时,m=*a=21。随后令m=m+*b-3,得m=53。整个程序的输出结果即为53。

  • 第2题:

    有以下程序: int m=1; void fun(int *n) { static int m=2; *n*=m-1; m+=2; } main() { int i; for(i=1;i<4;i++) { fun(&m); printf("%d",m); } } 程序的输出结果是( )

    A.1317

    B.2630

    C.1315

    D.1111


    正确答案:C

  • 第3题:

    下面()是正确的判断素数程序(m>1)。

    A.j=0; for (i =2; i<=m-1; i++) if (m % i != 0) j++; if(j==m-2) printf(“%d是素数n", m);

    B.j=0; for (i =2; i<=m-1; i++) if (m % i == 0) j++; if(j==0) printf(“%d是素数n", m);

    C.flag=0; for (i =2; i<=m-1; i++) if (m % i == 0) flag=1; if(flag==0) printf(“%d是素数n", m);

    D.for (i =2; i<=m-1; i++) if (m % i == 0) i=m+2; if(i==m+3) printf(“%d是素数n", m);


    D

  • 第4题:

    若有如下程序: sub(int *t,int a[3][4]) { int m,n; for(m=0;m<3;m++) for(n=0;n<4;n++) { *t=a[m][n];t++;} } main() { int*t,s[3][4)={{1,2,3),{4,5,6),{7,8,9}}; t=(int*)malloc(50); sub(t,s); printf("%d,%d\n",t[4],t[7]); } 则程序运行后的输出结果是( )。

    A.4,7

    B.4,0

    C.5,8

    D.程序错误


    正确答案:B
    解析:本题定义了一个sub()函数,其作用为将一个二维数组按行复制到t所指的连续内存空间内。主程序中首先使用malloc()函数为t申请了50个字节的内存空间,然后调用sub()函数,将二维数组s的内容复制到t申请的内存空间内,最后输出t的第5个元素(t[4])和第8个元素(t[7]),即为3行4列二维数组中的s[1][0]和s[1][3]。s[1][0]是初始化列表中第二个大括号中的第一个值4,而s[1][3]应该是初始化列表中第二个大括号中的第4个值,但没有这么多初始值,C语言在这种情况下会自动将该元素设置为0,即s[3][4]={{1,2,3},{4,5,6},{7,8,9}}等价于s[3][4]={{1,2,3,0},{4,5,6,0),{7,8,9,0}}。所以最后输出结果是4,0,应该选择B。

  • 第5题:

    【填空题】若有如下定义和语句: int *p[3], a[6], n; for(m=0;m<3;m++) p[m]=&a[2*m]; 则*p[0]引用的是a数组元素____(1)_____;*(p[1]+1)引用的是a数组元素_____(2)____。


    a数组的元素的下标为1 2 3