C语言高手来看看,看程序写结果,告诉我步骤

#include<stdio.h>
int x1=30,x2=40;
void sub(int x,int y)
{
x1=x;
x=y;
y=x1;
}
int main()
{
int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf("%d,%d,%d\n",x3,x4,x1,x2);
return 0;
}
嗯printf里面少写了个%d 程序结果是10 20 40 40,我咋觉得是10 20 30 30啊

#include<stdio.h>
int x1=30,x2=40;//此时全局变量变成10;
void sub(int x,int y)
{
x1=x; //把传进来的值赋值给全局变量x1;
x=y;//这一段和下面一段不用管,形参x跟y值的改变是不改变实参x3,跟x4的值的,只要注意全局变量x1跟x2即可。
y=x1;
}
int main()
{
int x3=10,x4=20;
sub(x3,x4);//sub(10,20),进入sub函数。
sub(x2,x1);//sub(40,30)进入sub函数,把40赋值给全局变量x1,那么x1=40了;
printf("%d,%d,%d\n",x3,x4,x1,x2);//所以x3=10,x4=20,x1=40,x2少%d没输出。
return 0;
}
又是你啊。。。又在做题了?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-09
x1 , x2 , x3, x4 4个变量

sub(x,y) 因为x,y是形参不影响原来的变量值

第一个sub得出 x1=10, 第二个sub 得出 x1=40. (因为x1是全局变量可以被sub影响,sub中没有其他变量不影响其他变量。)

所以x1 =40 其他不变
第2个回答  2013-05-09
x1x2是全局变量,形参的改变会改变它的值,儿x3x4是局部变量,形参的改变不会改变它的值。建议你认真看看形参和实参。
第3个回答  2013-05-09
输出的结果为 x1 = 40其他的还是原来的值,,没有改变
第4个回答  2013-05-09
x3x4不能换x1x2可以,输出那少了一个%d
x1是外部变量在函数声明整个文件都适用所以能换
相似回答