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

admin2022-10-24  22

问题 有以下程序
 #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,它包含两个整型元素,然后将两个元素的和赋给第1个元素,再将两个元素的和赋给第2个元素,同时将数组a的指针当作返回值返回。main函数中,在for循环中4次调用fun函数,并输出返回的两个元素。由于a是静态数组,因此4次调用中,只有第1次调用时初始化为0、1,后续调用时,a的元素值都是上一次调用后的值。所以i=1时,输出1、2;i=2时,输出3、5;i=3时,输出8、13;i=4时,输出2l、34。故本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/LJkp777K
0

相关试题推荐
最新回复(0)