有以下程序:includevoid fun(int* s,int* * d){* *d=*(s+2);}main(){ inta[]={1,2,3,有以下程序: #include <stdlib.h> void fun(int * s,int * * d) { * *d=*(s+2); } main() { int a[]={1,2,3,4,5},*b; b=(int *)malloc(sizeof(int)); fun(a,&B) ; printf("%d\n",*b+1); } 程序的输出结果是( )

题目
有以下程序:includevoid fun(int* s,int* * d){* *d=*(s+2);}main(){ inta[]={1,2,3,

有以下程序: #include <stdlib.h> void fun(int * s,int * * d) { * *d=*(s+2); } main() { int a[]={1,2,3,4,5},*b; b=(int *)malloc(sizeof(int)); fun(a,&B) ; printf("%d\n",*b+1); } 程序的输出结果是( )

A.2

B.3

C.4

D.5


相似考题
参考答案和解析
正确答案:C
更多“有以下程序:#include<stdlib.h>void fun(int* s,int* * d){* *d=*(s+2);}main(){ inta[]={1,2,3, ”相关问题
  • 第1题:

    阅读下列程序: include void fun(int n) { int x(5); static int y(10); if(n>0) {

    阅读下列程序:

    include<iostream.h>

    void fun(int n)

    {

    int x(5);

    static int y(10);

    if(n>0)

    {

    ++x;

    ++y;

    cout<<x<<","<<y<<endl;

    }

    }

    void main()

    int m(1);

    fun(m);

    }

    则该程序的输出结果是______。


    正确答案:611
    6,11 解析:由主函数mian入手,首先定义变量m等于1,然后调用fun函数。fun函数中y为静态数值,等于10,作用域为到本文件结束。所以y加1后,主函数中y的值也为11。其中函数中x的加1运算调用的是函数中的x等于5的变量,作用域为由定义到文件结束,即主函数中输出的x值为6。所以答案为6,11。

  • 第2题:

    阅读下面程序:include int fun( int a, int b ){int c;c=a*b;return c;}void main()

    阅读下面程序:

    include <iostream.h>

    int fun( int a, int b )

    {

    int c;

    c=a*b;

    return c;

    }

    void main()

    {

    int a=3,b=5,c=4,x=0;

    x=fun(fun(a, b),c);

    cout<<x<<end1;

    }

    其运行结果是【 】。


    正确答案:60
    60

  • 第3题:

    下面程序的运行结果为_____。 include void fun(int x=0,int y=0) { cout < < x < <

    下面程序的运行结果为_____。

    include<iostream.h>

    void fun(int x=0,int y=0)

    {

    cout < < x < < y;

    }

    void main( )

    {

    fun(5) ;

    }


    正确答案:50
    50 解析:本题考查的是函数的默认参数,如果一个函数中有多个参数,则默认参数应从右至左逐个定义,所以题目中x使用参数5,y使用默认参数0。

  • 第4题:

    以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是______。

    A.main() { int *p; fun(p); …… } int fun(int *p) {int s; p=&s;}

    B.main() { int *p; fun(&p); …… } int fun(int **p) {int s; *p=&s;}

    C.# include<stdlib. h> main() {int *p; fun(&p); …… } int fun(int **p) {*p=(int *)malloc(2);}

    D.# include<stdlib. h> main() { int *p; fun(p); …… } int fun(int *p) {p=(int *)malloc(sizeof(int));}


    正确答案:C
    解析:选项A和B中p指向局部变量s的地址,退出函数fun后,该局部变量也被释放,不能使p指向一个整型单元地址;选项D中通过malloc函数分配一个整型地址,但不能被返回到main函数中,因为指针参数指向的地址不能被改变;选项C中,p是指向指针的指针,函数fun改变的是其指向的内容,而不是其地址。

  • 第5题:

    有以下程序 include void fun(int n, int *p) { int f1,t2; if(n==1 |

    有以下程序 #include <stdio.h> void fun(int n, int *p) { int f1,t2; if(n==1 ||n==2) *p=1; else { fun(n-1,&f1); fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n", s ); }

    A.2

    B.3

    C.4

    D.5


    正确答案:A
    解析:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。本题中的fun()函数直接调用了自身,所以它是一个递归函数。fun()函数中,当形参n为1或2时,让形参p所指内容为1。从这里可以看出形参p的用途是输出一个整数,所以我们不妨记作fun(1)=1、 fun(2)=1。如果是其他情况,那么输出结果*p的内容为f(n)=f(n-1)+f(n-2)。由此可见, fun()函数的作用是求斐波纳契数列第n项的值(斐波纳契数列第1和2项的值为1,以后各项分别为前两项之和:1、1、2、3、5、8、13……)。主函数中通过fun()函数,求第3项值;所以输出结果为2,故应该选择A。

  • 第6题:

    以下程序的输出结果是_____。 include void fun( ) {static int a=0; a+=2;cout < <

    以下程序的输出结果是_____。

    include<iostream.h>

    void fun( )

    { static int a=0;

    a+=2;

    cout < < a < < " ";}

    void main( )

    { int cc;

    for(cc=1;cc<4;cc++)

    fun( ) ;

    cout < < endl;}


    正确答案:2 4 6
    2 4 6 解析:本题考查静态局部变量的使用。用关键字 static声明的局部变量为“静态局部变量”,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次调用该函数时,该变量已有值,就是上一次函数调用结束时的值。

  • 第7题:

    有以下程序 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。

  • 第8题:

    以下程序输出结果是 ______。includevoid fun(int x,int y,int z){z=x+y;}void main

    以下程序输出结果是 ______。 #include<iostream.h> void fun(int x,int y,int z){z=x+y;} void main() { int a=10; fun (2,2,a); cout<<a; }

    A.0

    B.4

    C.10

    D.无定值


    正确答案:C

  • 第9题:

    有以下程序:include using namespace std;void fun(int i,int j){ cout<<(i+j)<

    有以下程序: #include <iostream> using namespace std; void fun(int i,int j) { cout<<(i+j)<<end1; } void fun(int i) { cout<<i++<<end1; } int main() { int a=1; fun(A) ; return 0; } 该程序执行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:A
    解析:本题考核函数重载这个知识点。函数fun有两种实现:第1种实现中,有两个int型形参,第2个实现中,是1个int型形参。由于这两种实现方式中形参的个数不同,形成了函数的重载。在主函数中,由于传递给函数fun()的实参为1个整型变量a,所以调用函数fun()的第2中实现,输出1。

  • 第10题:

    下列程序运行后的输出结果是()。 include void fun(int,int,int*); void main() { i

    下列程序运行后的输出结果是( )。 #include<iostream.h> void fun(int,int,int*); void main() { int x,y,z; fun(5,6,&x); fun(7,x,&y); fun(x,y,&z); cout<<x<<","<<y<<","<<z<<end1; } void fun(int a,int b,int *c) { b+=a; *c=b-a; }

    A.5, 5, 5

    B.6, 6, 6

    C.5, 6, 7

    D.7, 7, 7


    正确答案:B
    解析:由程序中的main函数入手,分别调用fun函数,第一个调用中x参数为引用地址,调用后x的值为6,因为参数为地址,所以第二个调用中的x参数值为6,调用后y的计算结果为6。同理, z在第三个函数调用后z的值为6。

  • 第11题:

    单选题
    有以下程序:#include #include void fun(int **s, int x[2][3]){ **s =*(x[1]+1);}void main(){ int a[2][3]={1,2,3,4,5,6},*p; p = (int *)malloc(sizeof(int)); fun(&p,a); printf("%d",*p);}程序的运行结果是(  )。
    A

    5

    B

    2

    C

    6

    D

    3


    正确答案: D
    解析:
    malloc()函数的返回值是新分配的存储区的首地址,将该地址赋值给p指针,然后取p指针的地址,调用fun函数。fun函数中对指向指针的指针s指向的内存单元赋值,其中x[1]表示二维数组x的第二行的行地址,x[1]+1表示二维数组x的第二行第二列的地址,所以fun函数的功能是将二维数组x的第二行第二列的值,即x[1][1]赋值给**s,*s为p,所以**s代表*p,*p即为a[1][1],答案选择A选项。

  • 第12题:

    单选题
    有以下程序#include #include void fun(int*p1,int*p2,int*s){ s=(int*)malloc(sizeof(int)); *s=*p1+*p2;}main(){ int a[2]={1,2}, b[2]={10,20},*s=a; fun(a,b,s); printf(%d,*s);}程序运行后的输出结果是(  )。
    A

    1

    B

    10

    C

    11

    D

    2


    正确答案: C
    解析:
    初始化后,s指向数组a的首地址,在调用函数fun时,形参s和实参s是两个独立的int型指针,在fun函数内部,形参s指向新的存储空间,但是不会影响实参s的指向。所以,在main函数中,s仍然指向数组a的首地址,输出结果是1。答案选择A选项。

  • 第13题:

    以下程序的输出结果是【】。 include using namespace std; void fun() {static int a=0

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

    include <iostream>

    using namespace std;

    void fun()

    {

    static int a=0;

    a+=2;

    cout<<a;

    }

    int main()

    {

    int CC;

    for(CC=1;cc<4;CC++)

    fun();

    cout<<end1;

    return 0;

    }


    正确答案:246
    246 解析:本题考核函数调用和静态变量。在主函数中通过一个for循环调用了3次fun()函数。第1次调用fun()函数时,a的初始值为0,执行语句“a+=2;”后, a的值为2,输出2;第2次调用时,a的初始值为2,执行语句“a+=2;”后,a的值为4,最后输出4:第3次调用时,a的初始值为4,执行语句“a+=2:”后,a的值为6,最后输出6。

  • 第14题:

    有以下程序:includeusing namespace Std;inta;int fun();int main(){ externinta; in

    有以下程序: #include <iostream> using namespace Std; int a; int fun(); int main() { extern int a; int b; a = 100; b = fun(); cout<<b<<end1; return 0; } int fun() { extern int a; return (10*A); } 其程序运行后的输出结果是( )。

    A.100

    B.10

    C.1000

    D.10000


    正确答案:C
    解析:本题考核外部变量的使用。先来了解外部变量:外部变量用关键词extern表示。由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。对于外部变量而言,“定义变量”和“说明变量”是两个不同的概念。定义a为外部变量是告诉编译程序,a是一个外部变量,并要求系统为a分配一个固定的永久存储空间。a的值在整个程序的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释放。外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。在此程序中,在第二行定义了一个外部变量a,主函数给外部变量赋的初始值为100,当调用函数fun()时,外部变量a的值传到函数fun()中,因此函数所返回的值为100*10=1000。

  • 第15题:

    有以下程序includefloat fun(int x,int y){return(x+y);}void main( ){int a=2,b=5

    有以下程序 #include<iostream.h> float fun(int x,int y) {return(x+y);} void main( ) {int a=2,b=5,c=8; cout<<fun((int)fun(a+c,b) ,a-c) ;}程序运行后的输出结果是

    A.编译出错

    B.9

    C.21

    D.9


    正确答案:B
    解析:本题的运算过程是fun((int)fun (a+c,B,a-C,fun((int)fun(10,5),2-8),fun ((int)15.000000,-6),fun(15,-6)=9。

  • 第16题:

    有以下程序:includevoid fun(int a, int b, int c){a=456,b=567,c=678;}void main(

    有以下程序: #include<iostream.h> void fun(int a, int b, int c) { a=456,b=567,c=678;} void main( ) { int x=10,y=20,z=30; fun(x, y, z) ; cout < < x< < ',' < < y < < ',' < < z < < endl; } 输出结果是

    A.30,20,10

    B.10,20,30

    C.456,567,678

    D.678,567,456


    正确答案:B
    解析:本题考查函数中变量的作用范围,在主函数中给变量x、y、z赋值,然后将其作为实参传递给了函数fun( ) ,虽然在函数fun( ) 中改变了这3个变量的值,但只是同名的局部变量,不影响函数中变量的值,所以在调用函数fun( ) 结束后,主函数3个变量的值未改变。

  • 第17题:

    有以下程序:includeFloat fun(int x, int y){return(x+y) ;}void main( ){int a=2,

    有以下程序: #include<iostream.h> Float fun(int x, int y) { return(x+y) ;} void main( ) { int a=2,b=5,c=8; cout < < fun((int) fun(a+c, b) ,a-c) ;} 程序运行后的输出结果是

    A.编译出错

    B.9

    C.21

    D.9.0


    正确答案:B
    解析:本题的运算过程是fun((int) fun (a+c, b) ,a-c) ,fun((int) fun(10,5) ,2-8) ,fun ((int) 15.000000,-6) ,fun(15,-6) =9。

  • 第18题:

    有以下程序 include void fun(int*a,int*B) { int*c; c=a;a=b;b=c; } main() {int x=3

    有以下程序 #include<stdio.h> void fun(int*a,int*B) { int*c; c=a;a=b;b=c; } main() { int x=3, y=5,*p=&x, *q=&y; fun(p,q); printf("%d,%d,",*p,*q); fun(&x,&y); printf(" %d,%d\n",*p,*q); } 程序运行后的输出结果是______。

    A.3,5,5,3

    B.3,5,3,5

    C.5,3,3,5

    D.5,3,5,3


    正确答案:B
    解析:本题主要考查的是函数的实参和形参之间的传递关系,C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则。调用函数不可能改变实参指针变量的值。所以x和y的地址并没有改变,即p和q也没有改变,因此,选项B是正确的。

  • 第19题:

    给出以下程序的执行结果【】。 include using namespace std; int n=1; void Fun(); int

    给出以下程序的执行结果【 】。

    include <iostream>

    using namespace std;

    int n=1;

    void Fun();

    int main ()

    {

    n++;

    Fun ( );

    if (n>0)

    {

    int n=5;

    cout<<"Block: n="<<n<< ", ";

    }

    cout<< "Main: n="<<end1;

    return 0;

    }

    void Fun ( )

    {

    int n=10;

    cout<<"Fun: n="<<n<<",";

    }


    正确答案:Fun:n=10Block:n=5Main:n=2
    Fun:n=10,Block:n=5,Main:n=2 解析:变量的作用域是程序中变量有效的区域,它是变量的一个重要特征。在题中,变量n有3种身份,其一是作为全局变量的n,其二是作为if语句块内局部变量的n,其三是函数内部局部变量的n。程序最后要求输出各个作用域内n的值。

  • 第20题:

    下面程序的运行结果是【】。 include using namespace std; void fun(int&a,int b=3)

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

    include <iostream>

    using namespace std;

    void fun(int &a, int b=3)

    {

    static int i=2;

    a = a + b + i;

    i = i + a;

    }

    int main()

    {

    int x=5, y=2;

    fun(x, y);

    cout<<x<<",";

    fun(x);

    cout<<x<<end1;

    return 0;

    }


    正确答案:923
    9,23 解析:本题主要考察C++中变量的作用域、存储类别和参数默认值的使用。本题主函数中,第1次调用fun()函数时,利用实参x和y将5和2分别赋值给形参a和b;由于形参a为传址方式传值,因此在函数fun()内部,由于a的改变:a =a+b+i=5+2+2=9。导致实参x值也变为9,因此程序第1次输出x值为9。
    此后静态局部变量i值变为:i=i+a=2+9=11。
    主函数第2次调用fun()时,只给出了一个实参x,其值由上述计算应该为9,而另一个参数由于fun()函数定义中为形参b指定了默认值3,因此此时程序将把3作为形参b的值代入fun()函数中去。类似上面计算有:a=a+b+i=9+3+11=23。
    由于形参a采用传址方式传值,因此实参x值也随之变为23,则程序第2次输出值应该为23。故程序整体输出为“9,23”。

  • 第21题:

    以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

    A.main() { int *p; fun(p); … } int fun(int *p) { ints; p=&s;}

    B.main() { int *p; fun(&p); … } int fun(int **p) { int s; *p=&s;)

    C.#include main() { int *p; fun(&p); … } int fun(int **p) *p=(int*)malloc(2);}

    D.#include main() { iht *p; fun(p); … } iht fun(iht *p) { p=(int*)malloc(sizeof(int)); }


    正确答案:C
    解析:本题考核的知识点是指针变量作为函数的参数以及变量的作用域。在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误.选项B中实现的也是让实参p,指向一个在函数fun()定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的.所以,C选项为所选。

  • 第22题:

    有以下程序 include floatfun(int x,int y) {return(x+y);}void main() {int a=2,b

    有以下程序 #include<iostream.h> floatfun(int x,int y) {return(x+y);} void main() {int a=2,b=5,c=8; tout<<fun((int)fun(a+c,b),a-C);} 程序运行后的输出结果是

    A.编译出错

    B.9

    C.21

    D.9


    正确答案:B
    解析:本题的运算过程是fun((int)fun(a+c,b),a-c),fun((int)fun(10,5),2-8),fun((int)15.000000,-6),thn(15,-6)=9。

  • 第23题:

    单选题
    有以下程序:#include #include void fun(int*p1,int*p2,int*s){ s=(int*)malloc(sizeof(int)); *s=*p1+*p2; free(s);}main(){ int a=1,b=40,*q=&a; fun(&a,&b,q); printf(%d,*q);}程序运行后的输出结果是(  )。
    A

    42

    B

    0

    C

    1

    D

    41


    正确答案: A
    解析:
    main函数中定义了3个变量,a,b和指针变量q,并且q存放的是a的地址,fun函数中s是重新分配的空间,将重分配的空间中存放*p1和*p2即为1和40,然后释放s,而q没有变化,仍然指向变量a,故*q仍然为1,答案选择C选项。