标题:关于这2个程序的区别,思路?
只看楼主
FangMengHao
Rank: 1
等 级:新手上路
帖 子:43
专家分:5
注 册:2013-6-19
结帖率:60%
已结贴  问题点数:20 回复次数:14 
关于这2个程序的区别,思路?
程序要求:输入a,b,c三个数,求出最大值。

程序1

#include<stdio.h>
int main()
{
  int max(int x,int y);
  int a,b,c,d,e;
  scanf("%d,%d,%d",&a,&b,&c);
  d=max(a,b);
  e=max(d,e);
  printf("max = %d\n",e);
  return 0;
}

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



程序2

#include<stdio.h>
int main()
{
  int a,b,c,max;
  printf("please input a,b,c:\n");
  scanf("%d,%d,%d",&a,&b,&c);
  max=a;
  if(max<b)       //为什么这个后面可以不用加分号?
    max=b;
  if(max<c)
    max=c;
  printf("The largest number is %d\n",max);
  return 0;
}


本人是C语言新手,刚看完C语言程序设计(第四版)第一章  
程序一是根据 第一章里比较2个数大小的程序琢磨出来的
程序二是这本书给的标准答案


我想知道2个程序之间的区别,哪个比较麻烦,对于机器的计算哪个相对复杂,对内存的占用等吧。

还有 书上说要对max函数进行声明,为什么程序2没有程序1里的哪个末尾那几段代码

谢谢!请尽情指出错误。

搜索更多相关主题的帖子: include please return 最大值 
2013-06-19 17:11
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:2 
程序1用了函数调用,程序2没有函数调用,栈开销少一些;如果只是比较三个数的话,直接用三元运算符就好了

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-06-19 17:15
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
得分:3 
if(max<b)       //为什么这个后面可以不用加分号? 这个跟你自己写的那个max函数里面的 if(x>y)z=x;else z=y;是一样的啊!!!!!
   max=b;
话说 LZ int max(int x,int y);这个函数声明放在main函数内部,可以在函数内部进行函数声明吗???
2013-06-19 17:21
火雨流星泪
Rank: 2
等 级:论坛游民
帖 子:65
专家分:78
注 册:2013-5-12
得分:2 
;表示一个语句结束,你如果直接在if后面加了;那max=b不就没得执行了?你第一个程序只是把那两行写在了一起而已
2013-06-19 17:49
夜长风
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2013-6-12
得分:1 
第二个函数简单,用到的变量少,代码一路看下来连我这个外行人都能看懂,逻辑感很强
2013-06-19 18:02
ceoooec
Rank: 2
等 级:论坛游民
威 望:1
帖 子:26
专家分:61
注 册:2013-6-11
得分:1 
回复 3楼 wyw19880809
函数声明可以在main函数里面!
2013-06-19 18:38
vshttp
Rank: 2
等 级:论坛游民
帖 子:22
专家分:75
注 册:2013-4-6
得分:0 
这两个程序本来就有问题,从书本的角度看,程序一是通过程序调用来输出三个中的最大值,然而,最后只能得到a,b中的最大值;第二个程序是通过if语句得到最大值,对于求最大值,这两个程序,2比较简单,相对比较简单!2中因为不用调用函数,是通过If比较得最大值的,所以没有你说的最后几行函数代码!加油!
2013-06-19 19:17
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:10 
#include<stdio.h>
int main()
{
  int max(int x,int y);
  int a,b,c,d,e;
  scanf("%d,%d,%d",&a,&b,&c);
  d=max(a,b);
  e=max(d,c);       //这里是c啦   不然结果会出错
  printf("max = %d\n",e);
  return 0;
}

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



你用的是函数调用    而程序2就是直接在main函数中写算法,当然没有你后面的函数那一部分     还有if条件语句后面的括号是不需要加分号的   具体看书


三十年河东,三十年河西,莫欺少年穷!
2013-06-19 19:31
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
得分:1 
程序一:使用函数来判断两个数的大小,具有扩展性.
程序二:直接在主函数进行判断,扩展性较差

C++菜鸟
2013-06-19 19:53
FangMengHao
Rank: 1
等 级:新手上路
帖 子:43
专家分:5
注 册:2013-6-19
得分:0 
回复 8楼 韶志
(⊙o⊙)…  打错了
2013-06-20 10:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-415555-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034816 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved