(34)有以下程序 #include void fun(int*S) {smtic intj=0; do{s[j]=s[j]+s[j+1];}while(++j

admin2012-05-23  20

问题 (34)有以下程序
    #include
    void fun(int*S)
    {smtic intj=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(“n”);
    }
    程序运行后的输出结果是

选项 A、34756
B、23445
C、35745
D、12345

答案C

解析 本题考查的是静态局部变量(static),编译系统为其分配固定的存储空间,它的值在函数调用结束后不消失,在下一次函数调研时仍然保留上一次函数调用结束时的值。第一个for循环语句中,fun函数执行2次,第一次fun(a)执行过程:当i=0时,do循环后数组a的元素值变为{3,2,3,4,5};当j=1时,do循环后数组a的元素值变为{3,5,3,4,5);当j=2时,退出do…whik循环。第二次执行fun(a)函数.j的值为2,执行do循环,数组8的元素值变为{3,5,7,4,5}:然后执行—叫,不符合do…while循环语句的循环条件,循环终止,此时输入数组a的值。
转载请注明原文地址:https://kaotiyun.com/show/ENPp777K
0

最新回复(0)