填空题
下面程序的运行结果是, 。
#include<stdio.h>
void fun(int*s)
{
static int i=0;
do
{
s[i]+=s[i+1];
}while(++i<3);
}
int main()
{
int i, a[10]={0, 1, 2, 3, 4};
for(i=1; i<3; i++)
fun(a);
for(i=0; i<5; i++)
printf("%d", a[i]);
printf("/n");
return 0;
}
【正确答案】
【答案解析】
13574[解析] 本程序中,形参是指针变量,实参是数组名,函数开始执行时,s指向&a[0],所以s[i]与a[i]等价。主函数中的i是局部变量,当i=1和i=2时,分别调用fun(a)。第1次调用函数fun(),在do-while循环语句控制下,数组a的前3个元素的值被改变;第2次调用,只有第4个元素的值被改变,这是由于函数fun()中的i为静态局部变量,它保持了上次调用结束时的结果。
提交答案
关闭