求2个数中较大者,已有答案,疑问重重,望赐教!

来源:百度知道 编辑:UC知道 时间:2024/06/18 18:13:28
潭浩强书中解答如下(是第一章的一个例子):
#include "stdio.h"
void main ()
{
int max(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max=%d\n",c);
}

int max(int x,int y)
{
int z;
if(x>y) z=x;
else z=y;
return(z);
}

我刚开始的时候没看答案,简单写了一个.如下:
#include <stdio.h>
void main ()
{
int a,b;
scanf("%d,%d",&a,&b);
if(a<b)
printf("max=%d\n",b);
else
printf("max=%d\n",a);
}

两个程序运行同样无错,结果也相同,我刚开始接触c语言,理解不了上面那个例子,不加max函数不照样出了正确结果了吗,请问各位两个程序有何本质区别?? 脑子不大灵活,大家扔个西红柿可以接受,砖头就算了!
首先感谢misizhou 和 MythCreator 的回答,misizhou说的还比较容易懂,Mythcreator一来就是C++的函数重载,有点儿摸不着头脑了,总之还有点儿迷糊。第一个例子是不是除了解答这个“求两个数中较大者”问题,另外还引申了些什么东西?或者说考虑的面很广,如果单一解决这个问题,第二个解答是不是也OK了? 还是? 晕死了...... 在线等候....

感谢三位朋友的回答,这个问题也该结束了,劳烦大家了,谢谢!

在第一个答案中并没有使用函数重载,你与他写的代码的不同之处就是将判断大小的部分作为了主函数的一部分而已。
其实如果论这种只使用一次的语句,最好是不使用函数,因为程序的转向会大大影响执行效率。不过作为考试,还是要将你会的东西都写上。

上面的那个在定义max函数时使用在C++中称作函数重载的方法,这样在非常复杂且同样的事情需要做多回的程序中只定义一次就可以多次使用了。而下面这种方法,则需要在每次需要用到的时候都要定义一次,会非常繁琐

这是个介绍函数的例子,是最简单的,当然你不用函数也可以直接在main里边写出来,复杂些的,就要结构化