C语言函数返回值的问题

帮帮忙解决下这2题
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);
}求程序运行后的输出结果。
第二题
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);
求程序输出的结果是
谢谢!
答案是123和435,可是想不通的是为什么两题都是VOID,一个实参改变,一个实参没改变。

你说的是函数的返回者吧函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。如调用正弦函数取得正弦值。对函数的值(或称函数返回值)有以下一些说明:
1)
函数的值只能通过return语句返回主调函数。
return
语句的一般形式为:
return
表达式;或者为:
return
(表达式);该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return
语句被执行,因此只能返回一个函数值。
2)
函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。
3)
如函数值为整型,在函数定义时可以省去类型说明。
4)
不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。如例8.2中函数s并不向主函数返函数值,因此可定义为:
void
s(int
n)
{
……
}
一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。例如,在定义s为空类型后,在主函数中写下述语句
sum=s(n);
就是错误的。为了使程序有良好的可读性并减少出错,
凡不要求返回值的函数都应定义为空类型。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-04
第一题:1,3,2
第二题:4,3,5
由于方法f是定义为void f(int x, int y)没有返回值,void这个关键字是不返回的意思。所以在main里面定义的变量的值没有被修改!如果需要返回这2个参数的话可以用指针、或把main里面的变量定义为全局变量(不建议使用该方法),或把方法定义为返回数组类型!
请问你是用VC执行代码的吗?我直接拷贝你的代码去执行,的确是132和435阿!本回答被提问者采纳
第2个回答  2020-05-19
在构造一个函数的时候
你在函数前加了一个void
表示为
这个函数为不能返回值的类型
所以也就是
,不能在函数中出现return语句
例如
void
function()
{
//return
语句不能出现在void类型函数中
}
如果想返回值的话那就在构造函数的时候在前面写上你要返回的数据类型
例如
float
function(float
a,float
b)
{
return
a*b;
}
第3个回答  2009-08-03
第一题结果是:1,2,3 只执行第二个else if (y>z)
第二题:4,3,5 因为你在子函数中执行,传递的只是a,b,c的值,只是执行一次将它们的值付给x、y,并没有改变其地址,如果这样f(&a,&b);其值就会改变成
5,4,3 因为改变了他们的地址问题,其实二楼的也可以通过指针传递也可以
这样int *p=a;int *q=b; int *m=c; f(p,q);f(p,m);f(q,m) 同样得到的是5,4,3 这样改变的是他们的地址
希望对你理解有帮助!
第4个回答  2009-08-03
1:1,3,2
2:4,3,5

程序有问题,就是你的返回函数没有返回值,你用下指针就可以了,就不用再调用函数后加返回值了
相似回答