有下列程序: #include<stdio.h> int a=5: int func(int d) { int b=5; static int c=5; a--;b--;--

admin2022-10-25  23

问题 有下列程序:
     #include<stdio.h>
     int a=5:
     int func(int d)
     {
       int b=5;
       static int c=5;
       a--;b--;--c;--d;
       return a+b+c+d:
     }
     main()
     {
       int k,a=4;
       for(k=0;k<3;k++)
         printf(”%d,”,func(a--));
     }
     程序执行后的输出结果是(          )。

选项 A、15,12,9,
B、15,13,11,
C、15,11,7,
D、15,15,15,

答案 A

解析 程序定义整型的全局变量a,初值为5,main函数定义整型局部变量a,初值为4。所以在main函数中,局部变量a屏蔽全局变量a。func函数中定义局部变量b,初值为5,定义静态变量c,初值为5,并且在func函数中变量a引用的是全局变量a。综上,我们使用a_a代表全局变量a,使用m_a代表main函数中局部变量a。main函数中,当k=0时,a_a-a=5,m_a=4,调用函数func(4),函数func中d的值为4,b的值为5,c的值为5,执行表达式“a_a﹣﹣;b﹣﹣;--c;--d;”后,a_a的值为4,b的值为4,c的值为4,d的值为3,a+b+c+d的值为15,程序输出15。当k=1时,a_a=4,m_a=3,调用函数func(3),函数func中d的值为3,b的值为5,c的值为4(静态变量使用上一次调用结束时的值),执行表达式“a_a--;b﹣﹣;﹣﹣c;﹣﹣d;”后,a—a的值为3,b的值为4,c的值为3,d的值为2,a+b+c+d的值为12,程序输出12。当k=2时,a_a=3,m_a=2,调用函数func(2),函数func中d的值为2,b的值为5,c的值为3,执行表达式“a_a﹣﹣;b﹣﹣;﹣﹣c;﹣﹣d;”后,a_a的值为2,b的值为4,c的值为2,d的值为1,a+b+c+d的值为9,程序输出9。本题答案为A选项。
转载请注明原文地址:https://jikaoti.com/ti/hGd0FFFM
0

最新回复(0)