狗粮小奶糕:c语言以下程序后的输出结果是 3223为什么

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/09 15:38:24
9以下程序后的输出结果是 3223为什么
void fun(int x,int y) {x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y);}
main() {int x=2,y=3; fun(x,y); printf("%d,%d\n",x,y); }
10以下函数的功能是计算s=1+1/2!+1/3!+...........+1/n! 请填空
double fun(int n) {double s=0.0,fac=1.0; int i;
for(i=1;i<=n;i++){fac=fac填空;s=s+fac; } return s}

填空部分是/i为什么

(壹)x=x+y后x=5,y=3;
y=x-y后x=5,y=2;
x=x-y后x=3,y=2;
所以fun里的输出printf32
接下去应为是局部变量所以x,y的值都没有变
所以printf输出23
整个就是3223
(贰)
fac=fac/i
例如
1/3!=(1/2!)/3
呵呵,如果还有什么问题找我
QQ:381330213

先看fun函数:
x=x+y;
x=2+3=5;
y=x-y;
y=5-3=2;***
x=x-y;
x=5-2=3;***
注意:x,y是变量。
可以看到程序解释的时候x,y被赋了新值,即x=3,y=2。
而main函数调用fun函数时是按值传递,所以x,y的值不会发生变化,即x=2,y=3。
所以,输出3,22,3

x,y是变量。
首先看到程序解释的时候x,y被赋了新值,即x=3,y=2。
而main函数调用fun函数时是按值传递,所以x,y的值不会发生变化,所以x=2,y=3 输出结果3,22,3

第二题:
在for循环里面,每次运行到"fac=fac填空;"时,
fac的值都是上次运行后的值,也就是说,当for运行到i时,fac的值是"fac/(i-1)!",所以每次都只要在上述基础上再"/i"就可以了.

由于fun()函数传值不传地址,所以fun()函数里面的x,y变了,输出32,但是main()主函数里的不变,依然是23.