C语言输出最大值问题

intmax(inta,intb);main(){intx,y,z;printf("inputtwonumbers:\n");scanf("%d%d",&x,&y);z=... int max(int a,int b);
main(){
int x,y,z;
printf("input two numbers:\n");scanf("%d%d",&x,&y);
z=max(x,y);
printf("maxmum=%d",z);
}
int max(int a,int b){
if(a>b)return a;else return b;
}

大概是这个样的``为什么要return 返回值而不直接输出呢`我记得报子上看过有void就必须有个return 是正确的吗? 返回给主函数调用有什么意义?
展开
 我来答
深蓝_影
2007-11-14
知道答主
回答量:20
采纳率:0%
帮助的人:0
展开全部
因为你定义的求最大值的函数为int max(int a,int b)前缀要求函数的属性为返回一个整数,那当然要在这个函数结束的时候把计算结果用return返回给max函数,再由max函数带给main函数。这个return是针对max而不是main的。
因为z=max(a,b);那么max计算结果给z,从而实现打印z的时候输出最大值。
107395975
2007-11-14 · TA获得超过284个赞
知道小有建树答主
回答量:610
采纳率:0%
帮助的人:484万
展开全部
void代表的是一个过程,也就是说没有返回值的,所以
void f1()
{
.....
}
main()
{
int x;
x=f1(); /* 错误,因为f1这个函数没有值(返回值), 所以不能赋值*/
}
而你那个必须要返回的,所以定义为了int
当然如果你喜欢,可以写个不用RETURN的
比如

#include<stdio.h>
void max(int,int);//先调用后说明要用函数原型
main()
{
int x,y;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
max(x,y);
return 0;
}
void max(int a,int b)
{
if (a>b)printf("maxmum=%d",a);
else printf("maxmum=%d",b);

}
qq:107395975
还有什么不知道就加吧
当初我学RETURn 也搞了好久才弄懂

看你的思路了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengxuan321
2007-11-14 · TA获得超过406个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:0
展开全部
有void的函数是不允许有return的。
你的程序里主函数调用了
int max(int a,int b){
if(a>b)return a;else return b;
}
这个函数。
就是当你程序执行到z=max(x,y); 这句的时候。
将x,y的值分别传递给函数max()中的a,b。
然后执行max()函数中的代码,也就是比较,
再将大数返回到主函数调用的地方,这个值传给了z,
然后由主函数中的printf("maxmum=%d",z); 语句输出这个值。
现在理解这个程序了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑能释然
2012-07-18 · 超过13用户采纳过TA的回答
知道答主
回答量:123
采纳率:100%
帮助的人:46.9万
展开全部
#include<stdio.h>
#define SIZE_MAX 30
int max(int b[],int n);
int min(int b[],int n);
int main(void)
{
int a[SIZE_MAX],b,c,i,m;
printf("任意多个数,判断最大值和最小值:\n");
printf("输入一个数,表示你想比较多少个数字:\n");
scanf("%d",&m);
printf("你输入了%d个数\n",m);
printf("请你输入%d个数\n",m);

for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
b=max(a,m);
c=min(a,m);
printf("你输入的%d分别是:\n",m);
for(i=0;i<m;i++)
{
printf("%d\n",a[i]);
}
printf("最大数是:%d\n",b);
printf("最小数是:%d\n",c);
return 0;
}
int max(int b[],int n)
{
int k,i;
k=b[0];
for(i=0;i<n;i++)
{
if(k<b[i])
k=b[i];
}
return k;
}
int min(int b[0],int n)
{
int k,i;
k=b[0];
for(i=0;i<n;i++)
{
if(k>b[i])
k=b[i];
}
return k;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
望了人生E
2007-11-14 · TA获得超过148个赞
知道答主
回答量:31
采纳率:0%
帮助的人:0
展开全部
因为z=max(x,y);所以return是将值赋给z
而void声名的函数是没有返回值的

这样就可以不用返回值而直接输出
void max(int a,int b)
{
if(a>b)
printf("maxmum=%d",a);
else
printf("maxmum=%d",b);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式