参考答案和解析
2
更多“有下列函数定义,当执行语句k=f(f (1) );后,变量k的值为: int f(int x) { static int k=0; k=k+x; return k; }”相关问题
  • 第1题:

    设有定义:int k=1,m=2;float f=7;则下列选项中错误的表达式是( )。

    A.k=k>=k

    B.-k++

    C.k%int(f)

    D.k>=f>=m


    正确答案:C
    解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项 B,先计算k++的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

  • 第2题:

    有下列程序:

    fun (int x,int y)

    {static int m=0,i=2;i+=m+1;

    m=i+x+y;return m;

    }

    main()

    {int j=1,m=1,k;

    k=fun0,m);printf("%d,"k);

    k=fun0,m);printf("%d\n",k);

    }

    执行后的输出结果是( )。

    A.5,5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    解析: 子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此,最终m的值为11。

  • 第3题:

    设有如下函数定义: int fun(int k) {if(k<1)return 0; else if(k= =l)return l; else return fun(k-1)+1: } 若执行调用语句:“n=fun(3);”,则函数fun总共被诃用的次数是( )。

    A.2

    B.3

    C.4

    D.5


    正确答案:B
    此题考查简单的循环,当执行n=fun(3),则函数fun执行3次。

  • 第4题:

    有以下程序 include int a=1; int f(int c) { stati

    有以下程序 #include <stdio.h> int a=1; int f(int c) { 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
    解析:静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而—般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a++) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的++运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。

  • 第5题:

    下列程序执行后输出的结果是()includef(int A){ int b=0;static c=3;a=c++,b++;return

    下列程序执行后输出的结果是( ) #include<stdio.h> f(int A) { int b=0; static c=3; a=c++,b++; return(A) ; } main() { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf("%d\n",k); }

    A.3

    B.0

    C.5

    D.4


    正确答案:D

  • 第6题:

    下列程序的输出结果是()。includeint f(int a,int b);main(){int i=2,p,j,k; j=i;k=++i

    下列程序的输出结果是( )。 #include <stdio.h> int f(int a,int b); main() { int i=2,p,j,k; j=i; k=++i; p=f(j,k); printf("%d",p); } int f(int a,int b) { int c; if(a>b)c=1; else if(a= =b) c=0; else c=-1; return(c); }

    A.-1

    B.1

    C.2

    D.编译出错,无法运行


    正确答案:A
    解析:函数调用相当于f(2,3),程序运算结果为-1。

  • 第7题:

    下列程序执行输出的结果是()。 include f(int a) {int b=0; static c=3; a=C++;b++; re

    下列程序执行输出的结果是( )。

    #include<stdio.h>

    f(int a)

    { int b=0;

    static c=3;

    a=C++;b++;

    return(a);

    }

    main()

    { int a=2,i,k;

    for(i=0;i<2;i++)

    k=f(a++);

    printf("%d\n",k);

    }

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
      在主函数中,第一次循环,i=0,调用k-f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
      第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。

  • 第8题:

    设有如下函数定义

    int fun(int k)

    {if(k<1) return 0:

    else if(k==1) return 1:

    else return fun(k一1)+1:

    }

    若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是

    A.2

    B.3

    C.4

    D.5


    正确答案:B
    解析:函数fun总共被调用了3次,即fun(3)、fun(2)和fun(13)

  • 第9题:

    有下列程序: fun(int x,int y) {static int m=0,i=2; i+=m+1;m=i+x+y;return m; } main() {int j=1,m=1,k; k=fun(j,m);printf("%d,",k); k=fun(j,m);printf("%d\n".k); } 执行后的输出结果是( )。

    A.5,5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。

  • 第10题:

    有以下程序

    #include<stdio.h>

    int a=1;

    intf(int c)

    {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
    在主函数中,k的初值为0,首先调用函数f(3),返回值为6,k的值变为6,而函数intfun(intc)中的局部静态变量a等于3。第二次调用函数f(3)时,返回值为7,所以k=6+7=13。退出循环语句,k再加上全局变量a的值l,其最终的值为14。

  • 第11题:

    (32)设有如下函数定义

    int fun(int k)

    { if (k<1) return 0;

    else if(k==1) return 1;

    else return fun(k-1)+1;

    }

    若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是

    A)2

    B)3

    C)4

    D)5


    正确答案:B

  • 第12题:

    下列选项中可以替换所给代码中第2行的有()。

    • A、final int k = 4;
    • B、public int k = 4;
    • C、transient int k = 4;
    • D、private int k = 4;
    • E、abstract int k = 4;
    • F、volatile int k = 4;
    • G、static int k = 4;
    • H、protected int k = 4;

    正确答案:A,B,G

  • 第13题:

    有以下程序: int add(int a,intB){return(a+B);} main() { int k,(*f)(),a=5,b=10; f=add; } 则以下函数调用语句错误的是( )。

    A.k=(*f)(a,B);

    B.k=add(a,B);

    C.k=*f(a,B);

    D.k=f(a,B);


    正确答案:C

  • 第14题:

    有以下程序: include using namespace std; int f(int); int main() {int i;for(i=0;

    有以下程序:

    include <iostream>

    using namespace std;

    int f(int);

    int main()

    {

    int i;

    for(i=0;i<5;i++)

    cout<<f(i)<<" ";

    return 0;

    }

    int f(int i)

    {

    static int k=1;

    for(;i>0;i--)

    k+=i;


    正确答案:1 2 5 11 21
    1 2 5 11 21 解析:函数f()中定义了一个内部静态变量k,其作用域仍在定义它的函数内。但该类型变量采用静态存储分配,当函数执行完,返回调用点时,该变量并不撤销,其值将继续保留,若下次再进入该函数时,其值仍然存在。内部静态变量有隐含初值0,并且只在编译时初始化一次。

  • 第15题:

    有以下程序 int add(int a,int b){return(a+b);} main() {int k,(*f)(),a=5,b=10; f=add; } 则以下函数调用语句错误的是

    A.k=(*f)(a,b);

    B.k=add(a,b);

    C.k=*f(a,b);

    D.k=f(a,b);


    正确答案:C

  • 第16题:

    下列程序执行输出的结果是______。 include f (int a) {int b=0;static c=7;a=c++; b++

    下列程序执行输出的结果是______。

    include <stdio.h>

    f (int a)

    { int b=0;

    static c=7;

    a=c++; b++;

    return (a);

    }

    main()

    { int a=2,i,k;

    for(i=0;i<2;i++)

    k=f(a++);

    printf("%d\n", k);

    }


    正确答案:8
    8 解析:第1次for循环,i=0,调用函数f(2),然后将a的值加1,在f()函数中,变量c为static类型,所以c=8;第2次for循环, i=1,调用函数f(3),然后将a的值加1,调用函数f(3)时,a=c++=8,所以k=8。

  • 第17题:

    以下程序的输出结果是( ) main() { int a=2,k; for(k=0;k<3;k++)printf("%4d",f1(a) ); } f1(int a) { int b=0;static int c=3; b++;c++; return(a+b+c) ;}

    A.7 7 7

    B.7 10 13

    C.7 9 11

    D.7 8 9


    正确答案:D

  • 第18题:

    下列程序执行输出的结果是()。includef(int A) {int b=0;static c=3;a=C++;b++;return(

    下列程序执行输出的结果是( )。 #include<stdio.h> f(int A) { int b=0; static c=3; a=C++;b++; return(a); } main() { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf("%d\n",k); }

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析: 本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
    在主函数中,第一次循环,i=0,调用k=f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
    第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给 a返回,然后将c加1,得到k=a=4,c=5。

  • 第19题:

    下列程序执行输出的结果是()。include f(int a){ int b=0;stoic c=3;a=c++;b++;return(

    下列程序执行输出的结果是( )。 #include <stdio.h> f(int a) { int b=0; stoic c=3; a=c++;b++; return(a); } main() { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf("%d\n",k); }

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。在主函数中,第一次循环,i=0,调用k=f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4, c=5。

  • 第20题:

    现有定义int k=1;则执行语句while(++k<4);后,k的值为( )


    正确答案:A
    while循环是先判断循环条件之后再进入循环体。这个题目的循环体是空语句,每次做的仅仅是判断循环的条件,由于++运算优先于,所以每次都先++,后比较。

  • 第21题:

    有以下程序 #include<stdio.h> int a=1; intf(int c) {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
    在主函数中,k的初值为0,首先调用函数f(3),返回值为6,k的值变为6,而函数intfun(intc)中的局部静态变量a等于3。第二次调用函数f(3)时,返回值为7,所以k=6+7=13。退出循环语句,k再加上全局变量a的值l,其最终的值为14。

  • 第22题:

    有以下程序

    #include <stdio.h>

    int a=1;

    int f(int

    C.

    { 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

  • 第23题:

    public interface Foo{  int k = 4;  }   Which three are equivalent to line 2?()   

    • A、 Final int k = 4;
    • B、 Public int k = 4;
    • C、 Static int k = 4;
    • D、 Private int k = 4;
    • E、 Abstract int k = 4;
    • F、 Volatile int k = 4;

    正确答案:A,B,C

  • 第24题:

    单选题
    有以下程序:#include int a=2; int f(){ static int n;  int m;  m=n=0;  n++; a++; m++; return m+n+a; }main(){ int k;  for(k=0;k<3;k++)  printf(%d, ,f()); printf(); }程序的运行结果是(  )。
    A

    5,6,7,

    B

    5,7,9,

    C

    5,8,11,

    D

    5,5,5,


    正确答案: B
    解析:
    static变量编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。程序执行过程为:k=0,a=2,n=0,m=0;n=1,a=3,m=1,返回5;k=1,a=3,n=0,m=0;n=1,a=4,m=1,返回6;k=2,a=4,n=0,m=0;n=1,a=5,m=1,返回7;k=3退出循环。答案选择A选项。