有以下程序 void f(int*x,int *y) { int t; t= *x;*x=*y;*y=t; } main() { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p<q) {f(p,q);p++;q--;} for(i=0;i<8;i++)printf("%d,",a[i]); } 程序运行后的输出结果是A.8,2,3,4,5,6,7,1,B.5,6,7,8,1,2,3,4,C.1,2,3,4,5,6,7,8,D.8,7,6,5

题目

有以下程序 void f(int*x,int *y) { int t; t= *x;*x=*y;*y=t; } main() { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p<q) {f(p,q);p++;q--;} for(i=0;i<8;i++)printf("%d,",a[i]); } 程序运行后的输出结果是

A.8,2,3,4,5,6,7,1,

B.5,6,7,8,1,2,3,4,

C.1,2,3,4,5,6,7,8,

D.8,7,6,5,4,3,2,1


相似考题
参考答案和解析
正确答案:D
解析:本题考查循环和指针做函数参数,程序的功能是将a[0]和a[7]对换,a[1]和a[6]对换,a[2]和a[5]对换,a[3]和a[4]对换,最后输出。
更多“有以下程序void f(int*x,int *y){int t;t= *x;*x=*y;*y=t;}main(){int a[8]={1,2,3,4,5,6,7,8},i ”相关问题
  • 第1题:

    有以下程序 void f(int x,int y) { int t; if(x<y){ t=x; x=y; y=t; } } main( ) { int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d\n",a,b,c); } 执行后输出的结果是

    A.3,4,5

    B.5,3,4

    C.5,4,3

    D.3,5,4


    正确答案:D

  • 第2题:

    有如下程序:include void fun (int& x,int y){int t=x;x=y;y=t;}int main(){ int

    有如下程序: #include <iostream> void fun (int& x,int y){int t=x;x=y;y=t;} int main() { int a[2]={23,42}; fun (a[1],a[0]; std::cout<<a[0]<<”,”<<a[1]<<std:: ond1; retum0; }执行后的输出结果是______ 。

    A.41,41

    B.23,23

    C.13,42

    D.42,23


    正确答案:B
    解析:a[0]做的是地址传递,所以执行函数后值发生变化,而a[1]做的是值传递,值并没有发生变化,所以此题应选择A。

  • 第3题:

    下面程序的结果【】。 include int f(int); void main() { int x=1,i; for (i=0; i<3;

    下面程序的结果【 】。

    include<iostream.h>

    int f(int);

    void main() {

    int x=1, i;

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

    cout<<f(x)<<‘ ’ ;

    cout<<end1;

    }

    int f(int x){

    int y=1;

    static int z=3

    y++;

    z++;

    return (x+y+z);

    }


    正确答案:7 8 9
    7 8 9

  • 第4题:

    有如下程序: include void fun(int&x,int y){int t=x;x=y;y=t;} int ma

    有如下程序: #include<iostream> void fun(int&x,int y){int t=x;x=y;y=t;} int main() { int a[2]={23,42}; fun(a[1],a[0]; std::cout<<a[0]<<","<<a[1]<<std::ndl; return 0; } 执行后的输出结果是

    A.42,42

    B.23,23

    C.23,42

    D.42,23


    正确答案:B
    解析:x为引用,双向的;而y为值传递,单向的。

  • 第5题:

    有如下程序 void f(int x,int y) { int t; if(x>y){t=x;x=y;y=t;} } main() { int a=4,b=3,c=5; f(a,b);f(b,c);f(c,a); print("%d,%d,%d\n",a,b,c); }执行后输出结果是______。

    A.3,4,5

    B.5,3,4

    C.5,4,3

    D.4,3,5


    正确答案:D

  • 第6题:

    有以下程序: void f(int y,int *x) { y=y+ *x; *x;=*x+y;} main() { int x=2,y=4; f(y,&x); - printf ("%d %d\n",x,y); } 执行后的输出结果是 ______。

    A.8 4

    B.8 8

    C.4 8

    D.4 2


    正确答案:A
    解析:函数{的形参Y是简单变量,x是地址变量,故Y=4,x=2+4+2=8

  • 第7题:

    有以下程序void f(int x,int y){ int t, if(x<y){t=x;x=y;t;}}main(){ int a=4,b=3,c=5; f(a,B) ;f(a,C) ;f(b,C) ; cout<<a<<","<<b<<","<<c<<end1;}执行后输出结果是

    A.3,4,5

    B.5,3,4

    C.5,4,3

    D.4,3,5


    正确答案:D
    解析:考生根据分析可以得知f函数的功能是交换两个变量的值。表明看起来,在main函数中,使用三次f函数完成三个变量的交换。真的如此么?只要考生注意到f函数采用值传递,而值传递的缺点就是不会改变形参的值,因此,上述操作根本无法改变原来三个变量的值!故三个变量的值依然保持不变。

  • 第8题:

    有以下程序: void f(int*x,int*y) { int t; t=*x;*x=*y;*y=t; } main() { int a [8]={1, 2,3,4,5, 6, 7,8},i,*p,*q; p=a;q=&a[7]; while(p<q) {f(p,q);p++;q-;} for(i=0;i<8;i++)printf("%d,"a[i]); } 程序运行后的输出结果是 ______。

    A.823,4,5,6,7,1,

    B.5,6,7,8,12,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析:本程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。

  • 第9题:

    下面程序的运行结果是void swap(int *a,int *b){ int *t; t=a;a=b;b=t;}main(){ int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf("%d%d\n",*p,*q);}


    正确答案:35
    观察本题的程序可以看出,被调函数swap()实现的功能是交换变量的值,但由于函数不返回任何值,所以在main()函数中打印出的变量的值并没有发生交换,即仍为3和5。

  • 第10题:

    有以下程序:includevoid main(){int x=10,y=10;for(int i=0;x>8;y=++i)cout<

    有以下程序: #include<iostream.h> void main() { int x=10,y=10; for(int i=0;x>8;y=++i) cout<<x--<<","<<y<<","; } 该程序运行后的输出结果是( )。

    A.10,1,9,2

    B.9,8,7,6

    C.10,9,9,0

    D.10,10,9,1


    正确答案:D

  • 第11题:

    有如下程序:inchdevoid fun(int &x,int y){int t=x;x=y;y=t;}int main(){int a

    有如下程序: #inchde<iostream.h> void fun(int &x,int y){int t=x;x=y;y=t;} int main() { int a[2]={23,42); fun(a[1],a[0]); std::cout<<a[0]<<","<<a[1]<<Std::endl; return 0; } 执行后的输出结果是( )。

    A.42,42

    B.23,23

    C.23,42

    D.42,23


    正确答案:B

  • 第12题:

    单选题
    有以下程序 void f(int x,int y) { int t; if(x < y) { t=x; x=y; y=t; } } main() { int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d/n",a,b,c); } 执行后输出结果是()
    A

    3,4,5

    B

    5,3,4

    C

    5,4,3

    D

    4,3,5


    正确答案: D
    解析: 暂无解析

  • 第13题:

    有以下程序:

    void f(int x,int y)

    { int t;

    if(x<y){t=x;x=Y;y=t;)

    }

    main

    { int a=4,b=3,c=5;

    f(a,b);f(a,c);f(b,c);

    printf("%d,%d,%d\n",a,b,c);

    }

    执行后输出结果是( )。

    A.3,4,5

    B.5,3,4

    C.5,4,3

    D.4,3,5


    正确答案:D
    a、b、C都是按值传递给函数f,函数f不能改变它们的值。所以,a、b、t的值仍然是4、3、5。

  • 第14题:

    有以下程序

    void f( int y, int *x)

    { y=y+*x; *X=*X+y; }

    main()

    { int x=2,y=4;

    f(y,&x);

    printf("%d %d\n",x,y);

    }

    执行后输出结果是______。


    正确答案:8 4
    8 4 解析:本题考核的知识点是函数的调用、值传递和地址传递的区别。“值传递”指实参将值传递给形参后,实参与形参再无联系。也就是说对行参的改变将不影响实参;地址传递是指地址或数组名作为形参时的参数传递,这种情况下对形参的改变将对实参产生影响.函数 f(Y*x)的作用是让y的值加上指针x所指向变量的值,让指针x所指向变量的值加上y的值。由于形参y是传值的,形参x是传地址的,故调用该函数后,作为实参的y的值将不改变,而实参x的值将改变,故最后输出的y的值为4,而x的值为8。

  • 第15题:

    分析以下程序执行结果【】。 include int f (int x, int y){return x,y; } double f (d

    分析以下程序执行结果【 】。

    include<iostream.h>

    int f (int x, int y){

    return x,y;

    }

    double f (double x, double y) {

    return x,y;

    }

    void main() {

    int a=4, b=6;

    double c=2.6, d=7.4;

    cout<<f (a, b) <<","<<f (c, d) <<end1;

    }


    正确答案:24 19.24
    24, 19.24

  • 第16题:

    有以下程序:include void f(int v, int w){int t; t=v; v=w; w=t;}main(){int x=1,y=3

    有以下程序: #include <stdio.h> void f(int v, int w) { int t; t=v; v=w; w=t; } main() { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d\n",x,y,z); } 执行后的输出结果( )。

    A.1,2,3

    B.3,1,2

    C.1,3,2

    D.2,3,1


    正确答案:C
    解析:程序中if语句的条件只有y>z为真,所以执行f(y,z)。函数f的功能是交换两形参的值,但由于实参和形参都是一般变量,因此形参变量值的交换不能影响实参的值,main函数中的y和z并来互换,因此输出结果为:1,3,2。

  • 第17题:

    有如下程序:include void fun(int& x, int y){int t=x;x=y;y=t;}int main (){int

    有如下程序: #include <iostream> void fun(int& x, int y){int t=x;x=y;y=t;} int main () { int a[2]={23,42}; fun(a[1],a[0]); std::cout<<a[0]<<","<<a[1]<<std::endl; return 0; } 执行后的输出结果是

    A.42,42

    B.23,23

    C.23,42

    D.42,23


    正确答案:B
    解析:本题考核函数的调用以及参数值的传递。函数fun中的第一个参数采用引用传值方式,函数中对形参值的改变同样作用于实参上;第二个参数采用按值传值方式,函数中对形参的操作不会影响到实参。所以main函数中调用fun函数后,a[1]的值被修改为a[0]的值,而a[0]的值没有改变。

  • 第18题:

    有以下程序: include using namespace std; voidt(intx,inty, intcp,intdp) {cp=x*x+y

    有以下程序:

    include <iostream>

    using namespace std;

    void t(int x,int y, int cp,int dp)

    {

    cp=x*x+y+y;

    dp=x*x-y*y;

    }

    int main()

    {

    int a=4,b=3,c=5,d=6;

    t(a,b,c,D) ;

    cout<<c<<","<<d<<end1;

    return 0;


    正确答案:56
    5,6 解析:在主函数中定义了a、b、c、d等4个整型变量,并给他们赋初值4、 3、5、6。然后调用函数t(),把a、b、c和d的值依次传递给相应的形参x、y、cp、卸,形参和实参之间不再存在联系。进入函数t()后,执行其中的语句序列。函数t()调用返回后,输出的c和d的值依旧是5和6。

  • 第19题:

    有以下程序 void f(int *x,int *y) { int t; t=*X; *X=*y; *y=t; } main() { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a; q=&a[7); while(p>q) { f(p,q); p++; q--; } for(i=0; i<8; i++) printf("%d,",a[i]); } 程序运行后的输出结果是

    A.8,2,3,4,5,6,7,1,

    B.5,6,7,8,1,2,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析:在C语言中,函数参数的默认传递方式是传值,即函数内部的形参只是调用时的实参的一个拷贝,改变形参,实参不会被改变.如果想要实现传址调用只能使用传递指针的方式来实现.利用指针作函数的参数时,无论形参指针还是实参指针所指的都是同一个内存地址,所以形参如果改变了这个地址中的内容,也就是改变了实参所指的地址内容.本题程序开头定义了一个函数f(),在函数中用一个临时变量t交换了两个指针参数所指的地址内容,所以该函数的作用就是交换两个参数所指的内容。在主函数中,首先定义了一个int型数组a,并定义了两个int型指针p、q分别指向数组a的第一个元素和最后一个元素。然后使用一个while循环调用函数f()不断交换两个指针所指的内容,每次交换后p往后移动一个元素,q往前移动一个元素,直到q不再大于p,即直到两个指针在数组a的中间相遇为止。所以,程序最终运行的结果是数组a中的所有元素全被反序排列一次。故应该选择选项D。

  • 第20题:

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

    int t(int x,int y,int cp,int dp)

    {cp=x% y+y*y;

    dp=x+x-y*y;

    }

    main()

    { im a=4,b=3,c=9,d=8;

    t(a,b,c,D);

    printf("%d%d\n",c,D);

    }


    正确答案:98
    98 解析:本题的考查点是函数的调用。本题中a,b,c,d是实参,x,y,cp,dp是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是98。

  • 第21题:

    有以下程序: voidf(int*x,int * y) { int t; t= *x;*x= *y;*y=t; } main() { inta[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p) { f(p,q);p++;q--;} for(i=0;i<8;i++)printf("%d,",a[i]); } 程序运行后的输出结果是______;

    A.8,2,3,4,5,6,7,1,

    B.5,6,7,8,1,2,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析: 本题的函数f是将两个指针所指的两个单元中的数值对换。指针p指向数组a的第一个元素a[0]而指针q指向数组a的元素a[7]。调用f将p和q所指元素值对换,也就是将a[0]和a[7]的值对换,对换后结果分别是8、1。P++指向a[1],q-指向a[6J,继续循环,调用f将a[1]和a [6]交换,结果变成7、1。以此类推,直到p和q相遇循环站束。数组a的值由{1,2,3,4,5,6,7,8}变成了{8,7,6,5,4,3,2,1}。输出9结果应该是:8, 7,6,5,4,3,2,1。

  • 第22题:

    请选出以下程序的输出结果()。includesub(int *s,int y){static int t=3; y=s[t];t--;}

    请选出以下程序的输出结果( )。 #include <stdio.h> sub(int *s,int y) { static int t=3; y=s[t];t--; } main() { int a[]={1,2,3,4},i,x=0; for(i=0;i<4;i++) { sub(a,x);printf("%d",x); } printf("\n"); }

    A.1234

    B.4321

    C.0

    D.4444


    正确答案:C
    解析:本题考查函数的形参和实参的关系。函数sub将实参x的值传给形参y,y值的改变不能使x的值发生改变,所以输出的x值始终为0。

  • 第23题:

    有以下程序:include void f(int * x,int * y) int t;t= *x; *x= *y; *y=t;main ( ){in

    有以下程序:#include <stdio.h>void f(int * x,int * y) int t; t= *x; *x= *y; *y=t;main ( ){ int a[8] = { 1,2,3,4,5,6,7,8} ,i, * p, * q; p=a;q =&a[7]; while(p<q) { f(p,q) ;p ++ ;q --; } for(i =0;i<8;i ++ ) printf(" % d," ,a[i]); }程序运行后的输出结果是( )。

    A.8,2,3,4.,5,6,7,1,

    B.5,6,7,8,1,2,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析:程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。在main函数中,通过P=a;q=&a[7];指针变量p指向数组的第一个元素,指针变量q指向数组的最后一个元素。通过调用函数f(p,q)进行前后对称位置上的数组元素的交换。当while循环4次(即p=q)后,a数组中各元素的值分别为8,7,6,5,4,3,2,1,所以程序输出的结果为:8,7,6,5,4,3,2,1,

  • 第24题:

    单选题
    有以下程序 void f(int v,int w) { int t; t=v; v=w; w=t; } main() { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d/n",x,y,z); }执行后输出结果是()
    A

    1,2,3

    B

    3,1,2

    C

    1,3,2

    D

    2,3,1


    正确答案: C
    解析: 暂无解析