请选出以下程序的输出结果_______。#include<stdio.h>sub(x,y,z)int x,y,*z;{*z=y-x;}main(){int

题目
请选出以下程序的输出结果_______。includesub(x,y,z)int x,y,*z;{*z=y-x;}main(){int

请选出以下程序的输出结果_______。 #include<stdio.h> sub(x,y,z) int x,y,*z; {*z=y-x;} main(){ int a,b,c; sub(10,5,&A) ;sub(7,a,&B) ;sub(a,b,&C) ; printf("%d,%d,%d\n",a,b,C) ; }

A.5,2,3

B.-5,-12,-7

C.-5,-12,-17

D.5,-2,-7

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

第1题:

以下程序执行后的输出结果是include.using namespace std;void try(int,int,int,int)

以下程序执行后的输出结果是 #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函数在main函数中是以一条独立语句的方式被调用的,且main函数最后输出变量r的值。但在main函数中,并没有对变量r赋值。在C++语言中,数据只能从实参单向传递给形参,称为按值传递。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。所以虽然在函数try中,r的值为8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。

第2题:

请选出以下程序的输出结果______。includesub(x,y,z)int x,y,*z;{ *z=y-x;}main(){int

请选出以下程序的输出结果______。 #include<stdio.h> sub(x,y,z) int x,y,*z; { *z=y-x;} main(){ int a,b,c; sub(10,5,&a);sub(7,a,&b);sub(a,b,&c); printf("%d,%d,%d\n",a,b,c); }

A.5,2,3

B.-5,-12,-7

C.-5,-12,-17

D.5,-2,-7


正确答案:B
解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同—个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

第3题:

请选出以下程序的输出结果 ______。include sub(x, y, z)int x, y,*z;{*z=y-x:}main()

请选出以下程序的输出结果 ______。#include <stdio. h>sub(x, y, z)int x, y,*z;{*z=y-x:}main(){ int a, b, c; sub 10,5,&a);sub(7,a,&b);sub(a, b, &c); printf("%d,% d,/%d\n", a, b, c);}

A.5,2,3

B.-5,-12,-7

C.-5,-12,-17

D.5,-2,-7


正确答案:B
解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(0.,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

第4题:

请选出以下程序的输出结果______。includesub(x,y,z)int x,y,*z;{*z=y-x;}main(){int a

请选出以下程序的输出结果______。 #include<stdio.h> sub(x,y,z) int x,y,*z; {*z=y-x;} main(){ int a,b,c; sub(10,5,&A) ;sub(7,a,&b);sub(a,b,&c); printf("%d,%d,%d\n",a,b,c); }

A.5,2,3

B.-5,-12,-7

C.-5,-12,-17

D.5,-2,-7


正确答案:B
解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同—个存储单元,在执行函数后,s的值随*z变化,所以此次函数披调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

第5题:

请选出以下程序的输出结果______。includesub(x,y,z)int x,y*z;{*z=y-x;}main(){int a,

请选出以下程序的输出结果______。 #include<stdio.h> sub(x,y,z) int x,y*z; {*z=y-x;} main(){ int a,b,c; sub(10,5,&a);sub(7,a,&b);sub(a,b,&c); printf("%d,%d,%d\n",a,b,c); }

A.5,23

B.-5,-12,7

C.-5,-12,-17

D.5,2,-7


正确答案:B
解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

第6题:

以下程序的输出结果是______。includevoid prt(int*x,int*y,int*z){printf("%d,%d,%d\n

以下程序的输出结果是______。 #include<stdio.h> void prt(int*x,int*y,int*z) { printf("%d,%d,%d\n",++*x,++*y,*(z++));} int a=10,b=40,c=20; main() { prt(&a,&b&c) prt(&a,&b,&c); }

A.11,42,31 12,22,41

B.11,41,20 12,42,20

C.11,21,40 11,21,41

D.11,41,21 12,42,22


正确答案:B
解析:由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。

第7题:

以下程序的输出结果是_______。includevoid prt(int*x,int*y,int*z){printf("%d,%d,%d\

以下程序的输出结果是_______。 #include<stdio.h> void prt(int*x,int*y,int*z) { printf("%d,%d,%d\n",++*x,++*y,*(z++));} int a=10,b=40, c=20; main() { prt(&a,&b&C) ; prt(&a,&b,&C) ; }

A.11,42,31 12,22,41

B.11,41,20 12,42,20

C.11,21,40 11,21,41

D.11,41,21 12,42,22


正确答案:B
解析:由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。

第8题:

以下程序的输出结果是includevoid prt(int *x,int*y,int*z){ printf("%d,%d,%d\n",++*

以下程序的输出结果是 #include<stdio.h> void prt(int *x,int*y,int*z) { printf("%d,%d,%d\n",++*x,++*y,*(z++));} main() { int a=10,b=40,c=20; prt(&a,&b,&c); prt(&a,&b,&c);}

A.11,42,31 12,22,41

B.11,41,20 12,42,20

C.11,21,40 11,21,21

D.11,41,21. 12,42,22


正确答案:B
解析:尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。其次,应注意表达式。(z++)的值是*z,其后的z++在程序中无实际作用。函数调用时,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B)是正确的。在第一次输出后,a=11,b=41,c=20,第二次输出为:12,42,20。注意:指针作为参数的函数调用的执行过程。

第9题:

请选出以下程序的输出结果()includesub(x,y,z)int x,y,*z;{ *2=y-x;}main(){ int a,b,

请选出以下程序的输出结果( ) #include<stdio.h> sub(x,y,z) int x,y,*z; { *2=y-x;} main() { int a,b,c; sub(10,5,&A) ;sub(7,a,&B) ;sub(a,b,&C) ; printf("%d,%d,%d\n",a,b,C) ; }

A.5,2,3

B.-5,-12,-7

C.-5,-12,-17

D.5,-2,-7


正确答案:B