有以下程序: #include<stdio.h> void fun(int*s) { static int i=0; do{s[J]=s[J]+s[j+I];}while(++j<2); } main( ) { int k.a[l0]={1,2,3,4,5}; for(k=1;k<3;k++)fun(a); for(k=0;k<5;k++)pfintf("%d",a[k]); printf("\n"); } 程序运行后的输出结果是( )。A.12345B.23445C.34756D.35745

题目

有以下程序: #include<stdio.h> void fun(int*s) { static int i=0; do{s[J]=s[J]+s[j+I];}while(++j<2); } main( ) { int k.a[l0]={1,2,3,4,5}; for(k=1;k<3;k++)fun(a); for(k=0;k<5;k++)pfintf("%d",a[k]); printf("\n"); } 程序运行后的输出结果是( )。

A.12345

B.23445

C.34756

D.35745


相似考题
参考答案和解析
正确答案:D
本题考查静态变量,静态变量有储存已经操作过的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案选择D。
更多“有以下程序: #include&lt;stdio.h&gt; void fun(int*s) { static int i=0; do{s[J]=s[J]+s[j+ ”相关问题
  • 第1题:

    有以下程序

    #include<stdio.h>

    void fun(int *s)

    { static int j=0;

    do { s[j]=s[j]+s[j+1]; )while(++j<2);

    }

    main( )

    { int k,a[10]={1,2,3,4,5);

    for(k=1;k<3;k++)fun(a);

    for(k=0;k<5;k++)printf(”%d”,a[k]);

    printf("\n");

    }

    程序运行后的输出结果是

    A) 12345

    B)23445

    C)34756

    D) 35745


    正确答案:D
    【答案】D
    【知识点】static变量的使用
    【解析】静态局部变量在函数内定义,它的生存期为整个源程序。第一次k=1调用结束后,s[0]的值为3,s[1]的值为5,j的值为2。当k=2时,继续调用函数fun,此时j的值为2,但是因为do while语句先执行后判断,所以执行了s[2]=s[2]+s[3],所以s[2]的值变成了7。循环结束回到主函数,k的值为3,不满足条件结束循环。最后打印输出a数组元素的值。

  • 第2题:

    有下列程序: #include<stdi0.h> voidfun(int*S,intn1,intn2) { inti,j,t; i=n1;j=n2 while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j --;} } voidmain( ) { inta[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.0987654321

    B.4321098765

    C.5678901234

    D.0987651234


    正确答案:C
    C。【解析】本题定义一个一维数组并赋初值,接着调用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[o]至a[9]这10个元素再逆序,再用printf函数输出结果为5678901234,故选项C正确。

  • 第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 void main() { static int a[][3]={9,7,5,3,1,2,4,6,8}; int

    阅读以下程序:

    include<iostream.h>

    void main()

    {

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

    int i,j,s1=0,s2=0;

    for(i=0;i<3;i++)

    for(j=0;j<3;j++)

    {

    if(i==j)s1=sl+a[i][j];

    if(i+j==2)s2=s2+a[i][j];

    }

    cout<<s1<<","<<s2<<endl;

    }

    则该程序的输出结果为【 】。


    正确答案:1810
    18,10

  • 第5题:

    有以下程序

    #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<l0;k++)printf("%d",a[k]); printf("\n");

    }

    程序的运行结果是

    A.0987654321

    B.4321098765

    C.5678901234

    D.0987651234


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