下面程序的运行结果是 : 【 1 0 】 。fun(int t[],int n){ int i,m;if(n==1)return t[0];elseif(n>=2){m=fun(t,n-1); return m; }}main(){ int a[]={11,4,6,3,8,2,3,5,9,2};printf(" % d\n",fun(a,10));}

题目

下面程序的运行结果是 : 【 1 0 】 。

fun(int t[],int n)

{ int i,m;

if(n==1)return t[0];

else

if(n>=2){m=fun(t,n-1); return m; }

}

main()

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

printf(" % d\n",fun(a,10));

}


相似考题
更多“下面程序的运行结果是 : 【 1 0 】 。fun(int t[],int n){ int i,m;if(n==1)return t[0];elsei ”相关问题
  • 第1题:

    有下列程序: include void fun(int * s,int n1,int n2) { int i,j,

    有下列程序: #include <stdio.h> void fun(int * s,int n1,int n2) { int i,j,t; i=n1;j=n2; while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9);fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]);printf("\n"); } 程序的运行结果是( )。

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:从题目的主函数入手,定义了一个一维数组并赋韧值,接着调用函数fun(),fun()函数的功能为使数组中的元素逆序,当调用 fun(a,0,3),将实参传递给形参实现数组a中a[0]-a[3]这4个元素逆序;同理调用fun(a,4,9)是将上步排列好的a数组中a[4]-a[9]这6个元素逆序;调用fun(a,0,9)是将数组中a[0]-a[9]这10个元素在逆序,再用printf()函数输出结果为5678901234,故选项C)正确。

  • 第2题:

    以下程序的输出结果是#include <conio.h>#include <stdio.h>#define M 100void fun(int m, int *a, int *n){ int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; *n=j;}main(){ int aa[M],n,k; clrscr(); fun(100,aa,&n); for(k=0;k<n;k++) if((k+1)%20==0)printf("\n"); else printf("%d",aa[k]); printf("\n"); }


    正确答案:77
    在本题中,程序首先定义一个宏M,然后定义一个fun函数,函数带有三个形参,分别是一个整型形参m和两个整型指针形参a、n。在函数体中,首先定义两整型变量i和j,并给j赋初值为0,然后执行循环,循环体中首先是一个条件判断语句,如果结果为真,则说明变量i能同时被7和11整除,并将变量i保存到数组中,循环结束后,将数组中元素的个数通过指针变量n进行返回。通过分析可以知道,fun函数的作用是求取1到m中能同时被7和11整除的整数,并将结果保存到数组a中。
    在主函数中,首先定义了两个整型变量和一个整型数组aa,然后调用clrscr()函数对文本模式窗口进行清除操作。接着调用fun函数,根据上面我们对fun函数的分析,要计算1~100之间能同时被7和11整除的整数,很显然,这样的数只有77一个,那么此时数组aa中只有一个元素为77,而n的值是1。
    接着执行for循环,从程序中不难看出循环的作用是将数组aa中的元素按一定的规则输出,其规则为每行最多只能输出20个值。结合上面的分析,数组aa中只有一个元素为77,因此,本题程序的最终输出结果为77。

  • 第3题:

    有以下程序includevoidfun(int*s,intn1,intn2){inti,j,t; i=n1j=n2; while(i

    有以下程序 #include <stdio.h> void fun(int *s,int n1,int n2) { int i,j,t; i=n1 j=n2; while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]); printf("\n"); } 程序的运行结果是

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当 fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5.6,7,8,9,01;再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。

  • 第4题:

    有下列程序: #include<stdi0.h> #include<stdlib.h> intfun(intn) {int*P; p=(int*)malloc(sizeof(int)); *P=n;return*P; } voidmain( ) {inta; a=fun(10);printf("%d\n",a+fun(10));} 程序的运行结果是( )。

    A.0

    B.10

    C.20

    D.出错


    正确答案:C
    C。【解析】本题考查指针与函数的调用。a+fun(10)相当于fun(10)+fun(10),故结果为20。两次调用fun函数,返回值指向不同的内存单元,不会存在内存冲突的问题,也就不会走错。

  • 第5题:

    若有如下程序: 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。

  • 第6题:

    【单选题】下列程序的运行结果是:() 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