g4跟雷蛇:c语言问题

来源:百度文库 编辑:高校问答 时间:2024/05/01 23:20:57
【2.33】下面程序的输出结果是____。
#include <stdio.h>
void fun(int *s)
{ static int j=0;
do
{ s[j]+=s[j+1];
}while(++j<2);
}
main()
{ int k,a[10]={1,2,3,4,5};
for(k=1;k<3;k++)
fun(a);
for(k=0;k<5;k++)
printf("%d",a[k]);
}
A) 35756 B) 23445 C) 35745 D) 12345
参考答案: C
要求有详细分析过程。

#include <stdio.h>
void fun(int *s)
{ static int j=0; //定义静态变量j
do
{ s[j]+=s[j+1]; //使s[j]等于s[j]与[j+1]的和
}while(++j<2); //循环控制,当判断j<2后自增,所以当j为0,1,2时进行循环
}
main()
{ int k,a[10]={1,2,3,4,5};
for(k=1;k<3;k++)
fun(a); //将数组a作为参数
for(k=0;k<5;k++)
printf("%d",a[k]); 输出a各元素
}

a[0]=1+2=3
a[1]=2+3=5
a[2]=3+4=7
j=2跳出循环
a[3],a[4]没有改变