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

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不就行了?干嘛弄这么多变量?

x,y是主函数中的变量,而a,b是函数中的形式参数,而z是从函数max中获得的返回值。具体的程序如下;
#include "stdio.h"
max(int a,int b);//函数的声明
void main()
{
float x,y,z;
scanf("%f%f",&x,&y);
z=max(x,y);
printf("%.2f\n",z);
}
max(int a,int b)
{
if(a>b)//对a,b进行比较,选择一个大的值返回
return a;
else
return b;
}
如果不用函数的话,就可以用下面的程序了。
#include "stdio.h"
void main()
{
float x,y;
scanf("%f%f",&x,&y);
printf("%.2f\n",x>y?x:y);
}
这里一样可以打印出最大的那个数。
还可以用下面的一段程序。
#include "stdio.h"
void main()
{
float x,y;
scanf("%f%f",&x,&y);
if(x>y)
printf("%.2f\n",x);
else
printf("%.2f\n",y);
}

参考资料:自己想一下就知道了,要多看点资料书。

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-01-20
不一样 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
第2个回答  2009-01-20
楼上的没错,你可以选择用和不用~!
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);
}
int max(int x,int y) /*这里定义调用函数,形参。。。数据类型啥的,形参他们也不占啥内存,等函数调用时储存下数据,之后就释放储存单元了,*/
{ int z;
if(x>y)z=x;
else z=y;
return(z);
}
其实不用调用函数一样,你定义个别的变量储存2者比较的较大值然后输出一样~!
第3个回答  2009-01-21
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); //
...
}
第4个回答  2009-01-20
1.你也可以直接用a,b,这就是局部变量与全局变量的关系了,具体你查书。
2.你也可以不用z,直接用a,b两个变量,比如将大的值赋给a,然后输出a。
相似回答