有以下程序#includelt;stdio.hgt; void fun(int *s) { static int j=0; do { s[j]=s[j]+s[j+1]

计算机 程序 已帮助 人

有以下程序

#include<stdio.h>

void fun(int *s)

{ static int j=0;

do { s[j]=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]);

printf(" ");

}

程序运行后的输出结果是

A) 12345

B)23445

C)34756

D) 35745

热搜:以下哪个程序是正确的病史采集的程序

答案解析

难度★★☆ 搜索
  • 参考答案:D【答案】D【知识点】static变量的使用
    【解析】静态局部变量在函数内定义,它的生存期为整个源程序。第一次k=1调用结束后,s[0]的值为3,s[1]的值为5,j的值为2。当k=2时,继续调用函数fun,此时j的值为2,但是因为do while语句先执行后判断,所以执行了s[2]=s[2]+s[3],所以s[2]的值变成了7。循环结束回到主函数,k的值为3,不满足条件结束循环。最后打印输出a数组元素的值。