有如下程序  #include <stdio·h>  int sum(int datA){   static int init=1;   return data +=init++:  }  main()  {   int i;   for(

admin2022-04-01  50

问题 有如下程序
 #include <stdio·h>
 int sum(int datA){
    static int init=1;
    return data +=init++:
 }
 main()
 {
    int i;
    for(i=1;i <=3;i++)
     printf("%d,",sum(i));
 }
 程序运行后的输出结果是(          )。

选项 A、1,3,5,
B、1,2,3,
C、2,3,4,
D、2,4,6,

答案D

解析 程序中的sum函数定义了一个静态局部变量init,在整个程序的运行期间,init都占据着存储单元,即使退出函数后下一次再进入函数时,init仍保留着上一次调用时使用的值。所以main()函数中,for循环三次调用函数sum(),每次调用后,init的值都自增1;当i=1时,data=1,init初值为1,sum()函数返回2,init自增为2;i=2时,data=2,init为2,返回4,init自增为3;i=3时,data=3,init为3,返回6,综上,程序输出:2,4,6,本题答案为D。
转载请注明原文地址:https://kaotiyun.com/show/21kp777K
0

最新回复(0)