niusouti.com

单选题有如下程序:#include int *sum(int data){ static int init=0; init+=data; return &init;}main(){ int i,*p; for(i=1;i<=4;i++) sum(i); p=sum(0); printf(%d,*p);}程序运行后的输出结果是(  )。A 15B 0C 1D 10

题目
单选题
有如下程序:#include int *sum(int data){ static int init=0; init+=data; return &init;}main(){ int i,*p; for(i=1;i<=4;i++) sum(i); p=sum(0); printf(%d,*p);}程序运行后的输出结果是(  )。
A

15

B

0

C

1

D

10


相似考题
更多“有如下程序:#include <stdio.h>int *sum(int data){ static int init=”相关问题
  • 第1题:

    以下程序的运行结果是______。includemain(){ int fun();fun();}fun(){static int a[3]=

    以下程序的运行结果是______。

    include<stdio.h>

    main()

    { int fun();fun();}

    fun()

    {static int a[3]={0,1,2};

    int i;

    for(i=0;i<3;i++)a[i]+=a[i];

    for(i=0;i<3;i++)printf("%d,",a[i]);

    pfintf("\n",);}


    正确答案:
    本题主要考查for循环语句的使用以及静态局部变量的特点。

  • 第2题:

    下列程序的运行结果是【 】。 include class SomeClass { public: SomeClass(int va

    下列程序的运行结果是【 】。

    include <iostream. h>

    class SomeClass

    {

    public:

    SomeClass(int value) { some_value=value;};

    void show_data(void) { cout<<data<<"<<~some_value<<endl; };

    static void set_data(int value) {data=value; }

    private:

    static int data;

    int some_value

    };

    int SomeClass::data

    void main(void)

    {

    SomeClass my_class(1001),your_class(2002);

    your_class. set_data(4004);

    my_elass. show_data()

    }


    正确答案:4004 1001
    4004 1001 解析:本题考查静态成员变量在不同对象间的共享现象。无论哪个对象修改了其静态变量的值,其他对象再访问该变量时已经发生了变化。

  • 第3题:

    有如下程序:include using namespace std;int getSum(int num);int main (){ int i;

    有如下程序: #include <iostream> using namespace std; int getSum(int num); int main () { int i; for (i=1; i<4; i++) cout<<getSum(i); return 0; } int getSum(int hum) { static int sum=O; sum+=num; return sum; } 上述程序执行后的输出结果是( )。

    A.136

    B.248

    C.123

    D.135


    正确答案:A
    解析:在函数getSum()中,局部变量sum被声明为static,并且初始化为0。该程序使用getSum()函数计算并报告当前计算所得结果。由于sum是static变量,因此它在函数调用过程中始终保持其值,即使函数调用结束,其空间也不会被释放,下次再调用时,上次运行结果仍然保留。

  • 第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题:

    以下程序的输出结果是【 】。include int fun(int x) {static int t=0; return(t+=x); }

    以下程序的输出结果是【 】。

    include <stdio.h>

    int fun(int x)

    { static int t=0;

    return(t+=x);

    }

    main()

    int s,i;

    for(i=1 ;i<=5;i++) s=fun(i);

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


    正确答案:15
    15 解析:static类型的变量是静态变量,本题中的静态变量t为静态局部变量。静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用时的值。本题在多次调用fun函数的过程中,只在第一次调用时t的初值为0,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值,所以本程序的作用相当于将1到5数字进行累加,故输出结果为15。

  • 第6题:

    下列程序的执行结果是【 】。 include < iostream. h> class Myclass { public: void GetSum(int a)

    下列程序的执行结果是【 】。

    include < iostream. h>

    class Myclass

    {

    public:

    void GetSum(int a)

    static int Sum:

    private:

    int A;

    };

    int Myclass:: Sum =10; //必须在类外部对静态数据成员初始化

    void Myelass: :GetSum(int a)

    {

    A=a;

    Sum+=A;

    }

    void PrintSum(Myclass& A)

    {

    cout<<"Sum="<<A.Sum<<end1;

    }

    void main( )

    {

    Myclass M,N;

    M. GetSum(3)

    N. GetSum(7)

    PrintSum(M);

    }


    正确答案:sum=20
    sum=20 解析:本题考察静态数据成员在同类的不同对象间的数据传递功能。Sum为所有对象的公共数据,M对象和N对象分别对sum进行累加,故结果为20。

  • 第7题:

    下列程序的执行结果为______。 include class Myclass { public: void GetSum(int a)

    下列程序的执行结果为______。

    include<iostream.h>

    class Myclass

    {

    public:

    void GetSum(int a);

    static int Sum;

    prtvate:

    int A;

    };

    int Myclass::Sum=10;//必须在类外部对静态数据成员初始化

    void Myclass::GetSum(int a)

    {

    A=a;

    Sum+=A:

    }

    vold PrintSum(Myclass& A)

    {

    cout<<"Sum="<<A. Sum<<endl;

    }

    void main( )

    {

    Myclass M,N;

    M.GetSum(3);

    N.GetSum(7);

    PrintSum(M);

    }


    正确答案:sum=20
    sum=20 解析:本题考察静态数据成员在同类的不同对象间的数据传递功能。Sum为所有对象的公共数据,M对象和N对象分别对sum进行累加,故结果为20。

  • 第8题:

    有如下程序:include using namespace std;int s=0;class sample { static int n;publ

    有如下程序: #include <iostream> using namespace std; int s=0; class sample { static int n; public: sample(int i) { n=i; } static void add() { s+=n; } };

    A.2

    B.5

    C.7

    D.3


    正确答案:B
    解析:本题考核静态数据成员和静态成员函数的应用。程序中定义一个类sample,它包括一个静态数据成员n和一个静态成员函数add,并在类的构造函数中给类私有静态数据成员n赋值。在主函数main中,定义对象a(2)时,通过构造函数使静态数据成员n的值变为2,在定义对象b(5)时,通过构造函数使静态数据成员n=5(覆盖了前面的n=2),再执行sample::add()使全局变量s=5。

  • 第9题:

    有以下程序: include int a =2;int f(int n){ static int a: 3;intt=0;if(n%2){ stat

    有以下程序: #include <stdio, h>int a =2;int f(int n){ static int a: 3; int t=0; if(n%2){ static int a=4;t+ =a++;} else { static int a=5;t+ :a++;} return t + a + +;main ( ){ int s=a,i; for(i=0;i<3;i++)s + =f(i); prinff("% d \n" ,s); }程序运行后的输出结果是( )。

    A.26

    B.28

    C.29

    D.24


    正确答案:C
    解析:在函数外面定义的变量a是全局变量,其作用范围从定义该变量的位置开始到本文件的结束;在f函数中的if子句(复合语句)和else子句中定义的变量a是局部变量,其作用范围只在其所在的复合语句内;在f函数中定义的第一个变量a是静态局部变量,其作用范围只限于函数f内部,无论被调用多少次都只初始化一次,并且保留上次函数调用结束时的值,该变量不对复合语句产生作用,所以,f函数的返回值是这个a变量和t值相加的结果。

  • 第10题:

    若有如下程序: include using namespaee std; int fun() { static int i=0; int s=1;

    若有如下程序: #include<iostream> using namespaee std; int fun() { static int i=0; int s=1; s+=i; i++; return s; } int main() { int i,a=0; for(i=0;i<5;i++) a+=fun(); cout<<a<<end1; return 0; } 程序运行后,输出的结果是( )。

    A.20

    B.24

    C.25

    D.15


    正确答案:D
    解析:由主函数入手,在for循环中调用fun函数,其中调用次数为5次。fun中i为静态变量,有效到文件结束。第一次调用fun后为s=1,a=1;第二次调用后s=2,a=3;第三次s=3,a=6;第四次 s=4,a=10;第五次s=5,a=15。

  • 第11题:

    单选题
    有如下程序:#includeusing namespace std;class Apublic:static int a;void init()a=1;A(int a=2) init(); a++;;int A::a=0;A obj;int main()cout<
    A

    0

    B

    1

    C

    2

    D

    3


    正确答案: B
    解析:
    在C++中,当标识符的作用域发生重叠时,在一个函数中声明的标识符可以屏蔽函数外声明的标识符或全局标识符。声明类A的全局对象时,构造函数首先调用init函数,a=1,但由于静态成员变量a被构造函数内部的形参a所屏蔽,所以a++改变的是形参a的值,对静态成员变量a没有影响。

  • 第12题:

    单选题
    有以下程序#include int fun(int x[],int n){ static int sum=0,i; for(i=0;i
    A

    50

    B

    60

    C

    45

    D

    55


    正确答案: C
    解析:
    函数fun的功能是求数组的n个元素之和,fun(a,5)=15,由于sum是静态局部变量,所以第二次调用时保持15不变,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。答案选择B选项。

  • 第13题:

    若有如下程序:include using namespaces std;int s=0;class sample{static int n;pub

    若有如下程序:#include <iostream>using namespaces std;int s=0;class sample{static int n;public:sample(int i){ n=i;}static void add(){ s+=n;}};int sample:: n=0;int main(){sample a(2),b(5);sample:: add();cout<<s<<end1;return 0;}程序运行后的输出结果是( )。

    A.2

    B.5

    C.7

    D.3


    正确答案:B

  • 第14题:

    include “stdio.h” void main() { int sum=0,a=11; while(a<=10) {sum=sum+a; a++; }

    #include “stdio.h” void main() { int sum=0,a=11; while(a<=10) {sum=sum+a; a++; } printf(“sum=%d\n”,sum); } 上述程序段的运行结果是( )

    A. sum=0

    B. sum=55

    C. sum=10

    D. sum=11


    正确答案:A

  • 第15题:

    有以下程序:include void sum(int *a){a[0]=a[1];}main(){int aa[10]={1,2,3,4,5,6,7,

    有以下程序: #include <stdio.h> void sum(int *a) { a[0]=a[1]; } main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=2;i>=0;i--) sum(&aa[i]); printf("%d\n",aa[0]); } 执行后的输出结果是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:A
    解析:该程序通过main函数循环凋用sum函数。当i=2时,将实参aa[2]的地址传递给形参,此时a[0]=a[1]=aa[3]=4,即aa[2]=4;当i=1时,将实参aa[1]的地址传递给形参,此时a[0]=a[1]=aa[2]=4,即aa[1]=4;当i=0时,将实参aa[0]的地址传递给形参,此时a[0]=a[1]=aa[1]=4,即aa[0]=4;当i=-1时,不满足条件i>=0,跳出循环,程序执行后数组aa中的值为4,4,4,4,5,6,7,8,9,10,所以aa[0]=4。

  • 第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题:

    有以下程序:include using namespace std;class myclass{private: int a,b;public: v

    有以下程序: #include <iostream> using namespace std; class myclass { private: int a, b; public: void init( int i, int j ) { a = i; b = j; } friend int sum( myclass x ); }; int sum( myclass x ) { return x.a + x.b; } int main () { myclass y; y.init( 15, 20 ); cout<<sum( y )<<end1; return 0; } 执行后的输出结果是( )。

    A.15

    B.20

    C.5

    D.35


    正确答案:A
    解析:本题主要考察C++中友元函数的使用。程序中,首先定义一个myclass类,其中包含private类型数据成员inta和intb;并含有成员函数voidinit(),其功能为初始化数据成员a和b,使其值分别为a=i和b=i;同时声明了一个友元函数intsum(),其函数定义在类声明体外,功能为返回myclass类的对象中的两个数据成员之和。程序主函数中,首先创建一个myclass类的对象y,并调用y的初始化函数对其变量进行赋值操作,执行该语句后,应该有:y.a=15和y.b=20。程序最后调用函数sum()计算对象y中数据成员的和,由于sum()为类myclass的友元函数,因此其可以自由访问对象y中的数据成员,显然其返回值为:15+20=35。

  • 第18题:

    有以下程序 include include int fun(int n) {int *

    有以下程序 #include <stdio.h> #include <stdlib.h> int fun(int n) {int *p; p=(int*)malloc(sizeof(int)); *p=n; return *p; } { int a; a=fun(10); printf("%d\n",a+fun(10)); } 程序的运行结果是______。

    A.0

    B.10

    C.20

    D.出错


    正确答案:C
    解析:malloc(sizeof(int))的作用是开辟一个长度为sizeof(int)存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给了—个整型的指针变量p。然后执行语句“*p=n”,使得*p的值为10,并通过返回此值,在主函数中输出a+10的值,即输出20。

  • 第19题:

    有以下程序:include using namespace std;int s=0;class sample{ static int n;publi

    有以下程序: #include <iostream> using namespace std; int s=0; class sample { static int n; public: sample (int i) { n=i; } static void add() { s+=n; } }; int sample::n=0;

    A.2

    B.5

    C.7

    D.3


    正确答案:B
    解析:程序中定义对象a(2)时,通过构造函数使静态数据成员n=2,在定义对象 b(5)时,通过构造函数使静态数据成员n=5(覆盖了前面n=2),再执行“sample::add();”使全局变量s=5。注意:本题程序中尽管代码中静态数据成员n的初始化语句“int sample::n=0;”没有意义(因为各对象中的n值由变量i赋给),但不能省略,否则会出现编译错误。

  • 第20题:

    有以下程序: include using namespace std; int main() {int i=1,sum=0;Loop:if(i<=20

    有以下程序:

    include<iostream>

    using namespace std;

    int main()

    {

    int i=1,sum=0;

    Loop:if(i<=20)

    {

    sum+=i;

    i++;

    goto Loop;

    }

    cout<<sum<<end1;

    return 0;

    }

    该程序运行后的输出结果是【 】。


    正确答案:210
    210 解析:本题是goto跳转语句的应用。程序中,如果满足条件“i=20”,则执行语句“sum+=i;i++;”然后,又跳转到Loop处。直到条件“i=20”不满足。由此可知,此程序的功能是统计1~20的总和,即210。

  • 第21题:

    有以下程序:include int fun(int x[], int n){ static int sum =0,i;for(i=0;i

    有以下程序: #include <stdio.h> int fun(int x[], int n) { static int sum =0,i; for(i=0;i<n;i ++ )sum + =x[i]; return sum;{ int a[] ={1,2,3,4,5},b[]={6,7,8,9},s=0; s = fun(a,5) + fun(b,4) ;printf( "%d \n",s);程序执行后的输出结果是( )。

    A.45

    B.50

    C.60

    D.55


    正确答案:C
    解析:静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。在main函数中调用fun(a,5),执行for循环得到sum=0+a[0]+a[1]+a[2]+a[3]+a[4]=15;然后调用fun(b,4),因为sum为静态变量,再次调用时sum保留上次函数调用结束时的值,所以sum:15+b[0]+b[1]+b[2]+b[3]=45;返回sum的值,main函数中输出的s=15+45=60。

  • 第22题:

    以下程序的输出结果是( )。 include fun() {static int a=0; a+=3;printf("%d",A); } ma

    以下程序的输出结果是( )。 include<stdio.h> fun() {static int a=0; a+=3;printf("%d",A); } main() {int cc; for(cc=1;cc<5;cc++)fun(); printf("\n"); }


    正确答案:3 6 9 12
    3 6 9 12 解析:本题考查最基本的for循环。for(cc=1;cc5;cc++)规定循环次数为4次,每次a+=3,即每次a的值增加3,但因为fun函数中变量a为static类型,所以每次调用完子函数之后,变量a所做的改变都要保存。

  • 第23题:

    单选题
    有如下程序:#include int sum(int data){ static int init=0; return init+=data;}main(){ int i; for(i=1;i<=5;i++)printf(%d,,sum(i)); printf();}程序运行后的输出结果是(  )。
    A

    1,3,6,10,15,

    B

    1,2,3,4,5,

    C

    0,0,0,0,0,

    D

    1,1,1,1,1,


    正确答案: D
    解析:
    在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久性的存储单元,可以继续使用存储单元中原来的值。程序执行过程为:执行for循环i=1,调用函数sum(1),init=0,data=1,返回init=0+1=1,输出1;i=2,调用函数sum(2),data=2,init=1,返回init=1+2=3,输出3;i=3,调用函数sum(3),data=3,init=3,返回init=3+3=6,输出6;i=4,调用函数sum(4),data=4,init=6,返回init=6+410,输出10;i=5,调用函数sum(5),data=5,init=10,返回init=10+5=15,输出15;i=6,退出for循环。答案选择A选项。