qzgx.net
当前位置:首页 >> #inCluDE <stDio.h> voiD Fun(int A, int B) { ... >>

#inCluDE <stDio.h> voiD Fun(int A, int B) { ...

9,x,y,z为实际参数,a,b,c为形式参数,在调用的时候取的是实际参数的值,所以A10,w=u%v=8;u=v=16;v=w=8;继续循环;w=u%v=0;u=v=8;v=w=0;循环结束(v=0)return u = 8; 12,宏定义就是一模一样的抄下来的,S(a+b):PT*x*x:PT*a+b*a+b:PT*1+2*1+2=9.5;14, a=c++,b++;这句话没看太懂;17, c= f(a)/f(b):c= a*a/b*b=6*6/2*2=36;

#include<stdio.h>#include <stdlib.h>void fun(int a, int b, int c){ c = a * a + b * b;}int main(){ int x = 22; fun(4, 2, x); printf("%d\n", x); system("pause"); return 0;}0 错误,编译完全成功,具体的你可以在吧下面那个输出框贴出来(点击我头像,有惊喜)

答案就是A void fun(int a, int b) { int t; t=a; a=b; b=t;}你改成void fun(int &a, int &b) { int t; t=a; a=b; b=t;)就明白了,需要用到引用参数值在函数结束后才会改变,否则不变

void fun(int a, int b)这里的a,b是形参. fun(c[i], c[i+l]);这里的c[i], c[i+l]是实参.值得传递是从实参向形参单向传递的.所以,形参的改变,不能影响实参,即,a,b的值交换了,但是c[i], c[i+l]的值不变.要想改变实参c[i], c[i+l]的值,可以用指针,或者用引用(这种方法较好).具体的你以后既明白了.

c语言中的函数都是 值传递的,形参值的改变,并不能改变实参的值.所以上面不会发生变化.你可以使用指针void fun(int *a,int *b){ int c; c=*a; *a=*b; *b=c; }void main() {int a=2,b=3; fun(&a,&b); printf("%d %d\n",a,b); }

首先你交换的只是fun()函数里面的值,没有交换二者的地址,所以变换后仍然不变.

你的数据类型定义的不对, 里面有除法,结果一定是个浮点数,你却都定义int类型的变量m,n可以是int的,把a,b,c,d都改成float的,否则即使有结果,误差也大的吓死人.改成float , 那句printf就不用改了,因为c是float, 格式符也是float,正好一致了

请把题目不全,谢谢!

这个程序的结果是:3,5,3,5 我帮你“缕缕”吧.调用fun函数时,是将p和q的值(x和y的地址)传给了a和b.注意,这里p的值和q的值传递过去了,p和q的值会变吗?不会.所以p和q仍然分别指向x和y.再回到fun函数中,可以看出,a和b的值(x和y的地址)是交换了,也即是说a原本指向x,现在指向了y,对应的b改为指向x.但这只能说a和b间有变化.会影响到x和y吗?也不会.所以fun函数其实对x,y,p,q没有产生任何的影响,当然结果就应该是3,5,3,5了.希望你看过之后可以理解清楚.

调用fun(p,q)时就是让a指向p指的地方,b指向q指的地方,函数内部是让c指向a指的地方,让a指向b指的地方,再让b指向c指的地方,你发现这里面没有改变p和q原来指向的地方,即p还是指向x,q还是指向y.fun(&x,&y)是让a指向x,b指向y,你会发现这根本没涉及到p和q的指向,更谈不上改变它们的指向,所以答案选B啊.

相关文档
tongrenche.com | mydy.net | dfkt.net | zxsg.net | rpct.net | 网站首页 | 网站地图
All rights reserved Powered by www.qzgx.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com