有以下程序: #include<stdio.h> void fun(int*s) { static int j=0; do sEj]+=s[j+1]; while(++j<2); }

admin2019-02-02  25

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

选项 A、5745
B、34756
C、5795
D、35745

答案A

解析 主函数main()中第一个for循环中共调用函数fun()两次:第一次调用时,do—while循环的循环体执行两次,结束后a[10]={3,5,3,4,5},静态变量j=2,由于静态变量定义时的初始化只运行一次,所以第二次调用时,j保留第一次调用结束时的值2,do—while循环执行一次,结束后a[10]={3,5,7,4,5},所以第二个for循环输出数组a下标范围为1到4之间的元素,所以答案选A。
转载请注明原文地址:https://jikaoti.com/ti/Jrf0FFFM
0

最新回复(0)