有以下程序:#include <stdio.h>void f(int * x,int * y) int t;t= *x; *x= *y; *y=t;main ( ){in

题目
有以下程序: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,

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序: 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
解析:C语言规定else总是和离它最近的if语句配对。分析可以知道,。函数f()作用是让形参v和形参w的值交换。在主函数中首先定义了3个变量x、y和z。然后再执行下面的if-else语句。由程序可以看出第一个else和第一个if搭配,第二个else和第二个if搭配。由于调用函数时是进行值传递的。即将实参x、y、z传给形参v和w,以后行参和实参再无联系,故通过if语句调用f()函数后,x、y和z的值并没有改变。因此最后输出的x、y和z的值为1、3和2,所以,4个选项中选项C符合题意。

第2题:

有如下程序:includevoid 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::end1; return 0; } 执行后的输出结果是( )。

A.42,42

B.23,23

C.23,42

D.42,23


正确答案:B

第3题:

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

阅读下面程序:

include<iostream.h>

void f(int n)

{

int x(5);

static int y(10);

if(n>0)

{

++x;

++y;

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

}

}

void main()

{

int m(1);

f(m),

}

则该程序的输出结果是【 】


正确答案:611
6,11

第4题:

以下程序执行后的输出结果是( )。include usingnamespacestd;void try(int,int,int,in

以下程序执行后的输出结果是( )。 #include <iostream> using namespace std; void try(int,int,int,int); int main ( ) { int x,y,z,r; x=1; y=2; try(x,y,z,r); cout<<r<<end1; return 0; } void try(int x,int y, int z,int r) { z = x+y; x = X*X; y = y*y; r = z+x+y; }

A.18

B.9

C.10

D.不确定


正确答案:D
解析:本题常见的错误解答是:把x=1,y=2代入到函数try中,逐步计算出r=8。最后得到r的输出值是8。下面是正确解答。根据程序逐步分析:①程序中定义了一个名为try的void型函数,即函数try()没有任何返回值。②而try()函数在主函数中是以一条独立语句的方式被调用的,且主函数最后输出变量r的值。③但在主函数中,并没有对变量r赋值。④在C++语言中,数据只能从实参单向传递给形参,称为按值传递。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。所以,虽然在函数try()中,r的值为8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。

第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(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。

第6题:

下列程序的输出结果是()。 include VOid p(int *x) {printf("%d",++*x); } void main()

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

#include<stdio.h>

VOid p(int *x)

{ printf("%d",++*x);

}

void main()

{ int y=3;

p(&y);

}

A.3

B.4

C.2

D.5


正确答案:B
解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。

第7题:

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

第8题:

有以下程序:includeint f(int x){int y;if(x==0||x==1)return(3);y=x*x-f(x-2);return

有以下程序: #include<stdio.h> int f(int x) {int y; if(x==0||x==1)return(3); y=x*x-f(x-2); return y; } main() {int z; z=f(3);printf("%d\n",z); } 程序的运行结果是( )。

A.0

B.9

C.6

D.8


正确答案:C
解析:本题主要考查函数的递归调用。当x=0或者x=1时返回值为3,即f(0)=3,f(1)=3;否则返回值为x*x-f(x-2)。f(3)=3*3-f(1)=9-3=6。

第9题:

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

第10题:

有以下程序

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。

更多相关问题