有以下程序  #include <stdio.h>  int *fun()  {   static int a[2]={0,1};   a[0]+=a[1];   a[1]+=a[0];   return a;  }  void main(

admin2022-04-01  20

问题 有以下程序
 #include <stdio.h>
 int *fun()
 {
    static int a[2]={0,1};
    a[0]+=a[1];
    a[1]+=a[0];
    return a;
 }
 void main()
 {
   int i,*b;
   for(i=1;i <5;i++)
   {
     b=fun();
     printf("%d%d",b[0],b[1]);
   }
   printf("\n");
 }
 程序的运行结果是(          )。

选项 A、1 2 3 4 5 6 7 8
B、1 2 1 2 1 2 1 2
C、0 1 0 1 0 1 0 1
D、1 2 3 5 8 13 21 34

答案D

解析 题意中,fun()函数定义一个静态数组a,它包含两个整型元素,然后将两个元素的和赋给第一个元素,再将两个元素的和赋给第二个元素,同时将数组a的指针当做返回值返回;main()函数中,存for循环中4次调用fun()函数,并输出返回的两个元素;由于a是静态数组,所以4次调用中,只有第一次调用时初始化为0、1,后续调用时,a的元素值都是上一次调用后的值,所以i=1时,输出1、2;i=2时。输出35;i=3时,输出8、13;i=4时,输出21、34;本题答案为D。
转载请注明原文地址:https://kaotiyun.com/show/91kp777K
0

最新回复(0)