本人菜鸟,c语言函数比较两个整数大小.x.y.z a b

来源:百度知道 编辑:UC知道 时间:2024/06/27 07:06:58
scanf函数语句接受这两个数送入变量x.y中.然后调用max函数。并把x.y的值传送给max函数的参数a.b.在max函数中比较a.b的大小.把大者返回给主函数的变量z最后在屏幕上输出z的值.
1.那x.y不就是a.b吗?
2.z不就是a.b其中的一个吗?
直接定义个x.y不就行了?干嘛弄这么多变量?

1.a,b的作用域仅限于max中,a,b不是x,y;以后如果有z,w,c,d照样可以调用max(z,w),max(c,d).
2.z的作用域限于main中,如果你愿意x=max(x,y)、或者zzz=max(x,y)也可以的。

弄这么多变量就是出题目时把简单问题负责化的手段。

max(int x,int y) {
...
z=x;
...
}

main() {
int x,y;
...
scanf("%d%d",&x,&y);
z=max(x,y);
printf("%d",a); //
...
}

1,值虽然一样 ,实质不一样 实参 与 形参的区别
2 , 方便返回 而且不改变变量的值 其实 用三目运算符更好
这样就不需要三个变量了
return (x>y)?x:y ;

不一样 a,b是MAX函数里的形式参数(形参) 而x,y是主函数里的实际参数(实参),因为你这题只是简单的调用MAX函数 如果你主函数要比较2对数字(例如X和Y M和N)的大小的话 ,你就要调用2次MAX函数 第一次吧X,Y给a,b 第2次吧M,N给 a,b。这时候形参的作用就出来了 就必须要 a,b了 另外还有一点 主函数里定义的变量是不能放在你自己定义的MAX函数里使用的
关于第2个问题 Z的确是a,b中的一个 但你a,b比较后返回的值是一个数字 你就必须把这个数字赋给一个变量 也就是Z

楼上的没错,你可以选择用和不用~!
void main()
{
int max(int x,int y); /*调用函数声明先。。。*/
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b); /*a,b是这个函数实参,负责给调用的函数赋值*/
printf("max=%d",c);
}<