有以下程序: #include<stdio.h> int a=1; int fun(intC){static int a=2; c=c+1; return(a++)+c; } main() { int i,

admin2011-06-13  29

问题 有以下程序:    #include<stdio.h>    int a=1;    int fun(intC){static int a=2;    c=c+1;    return(a++)+c;    }    main()    {  int i,k=0;    for(i=0;i<2;i++){int a=3;k+=f(A);}    k+=a;    printf("%d\n",k);    }    程序的运行结果是(       )。

选项 A、14
B、15
C、16
D、17

答案A

解析 本题考查的重点是对static变量以及全局变量的理解。static变量是函数或文件中的永久变量。本题中static int a=2语句定义了一个static局部变量,编译程序为其生成永久存储单元,即调用函数fun时,其值一直都保存着,而不是使用函数外所赋的值(尽管开头定义了一个同名的全局变量)。在主函数中,for循环进行两次,第一次循环得f(3)=3+1+2=6,从而k+=f(3)=6,第二次循环由于static局部变量a变成了3,从而f(3)的值为7,故k+=f(3)=13,再执行k+=a时,此时a的值为全局变量,其值为1,故k的值为14,选项A是正确的。
转载请注明原文地址:https://kaotiyun.com/show/OkPp777K
0

最新回复(0)