C程题:分别用函数和带参的宏,从三个数中找出最大的数。

Description分别用函数和带参的宏,从三个数中找出最大的数。Input3个实数Output最大的数,输出两遍,先用函数,再用宏。保留3位小数。SampleInpu... Description
分别用函数和带参的宏,从三个数中找出最大的数。

Input
3个实数

Output
最大的数,输出两遍,先用函数,再用宏。保留3位小数。

Sample Input
1 2 3
Sample Output
3.000
3.000
另:用参数求最大值的那部分这么写都哪里错了?

#include<stdio.h>
int main()
{
int max(int a,int b,int c);
scanf("%d %d %d",&a,&b,&c);
printf("%.3f",max()};
getch();
return 0;
}
void max(int x,int y,int z)
{
int max;
max=x>(y>z?y:z)?x:(y>z?y:z);

}
展开
 我来答
百度网友036f89e
2011-06-12 · TA获得超过137个赞
知道答主
回答量:102
采纳率:0%
帮助的人:96.3万
展开全部

程序如下:

#define max1(a,b,c) ((a)>(b)?(a):(b))>(c)?((a)>(b)?(a):(b)):(c)//宏定义求最大值

#include<stdio.h>   

int max(int x,int y,int z)//定义函数求最大值

{

     int max1;

 int a=y>z?y:z;

     max1=x>a?x:a;

     return max1;

}

int main()

{

    int a,b,c;

printf("输入三个数:\n");

    scanf("%d%d%d",&a,&b,&c);

    printf("函数调用结果:%.3f\n",float(max(a,b,c)));//强制转换为浮点数

    printf("宏定义结果:%.3f\n",float(max1(a,b,c)));

    getchar();

    return 0;

}

运行截图如下:

日月明自光明3
2011-06-12 · 超过28用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:78.1万
展开全部
你这里面错误实在太多了,列举如下:
1.函数声明和函数定义不一致,max函数定义处为void,但声明为int
2.函数声明应该放在main函数之外对应这句,int max(int a,int b,int c),这里不用传入a、b、c
3.a,b,c没有定义 scanf("%d %d %d",&a,&b,&c);
4.函数声明的参数和返回值都是int,但要求是实数
5.求最大值时,没有传入参数,这句printf("%.3f",max()};

比较乱,下面给出正确的结果

#include<stdio.h>

#define Max(x,y,z) (x)>(y) && (x)>(z) ? (x) : ((y)>(z)? (y) : (z))
float my_max(float,float,float);

int main()
{
float a,b,c;
scanf("%f %f %f",&a,&b,&c);
printf("%.3f\n",my_max(a,b,c));
printf("%.3f",Max(a,b,c));
getch();
return 0;
}
float my_max(float x,float y,float z)
{
float max_num;
max_num = x>y && x>z ? x : (y>z ? y : z);
return max_num;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ponuzd
2011-06-12 · TA获得超过249个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:88.2万
展开全部
#include<stdio.h>
int main() (main函数前面是没有类型名的)
{
int max(int a,int b,int c);(你下面运行的时候是void max 这里max的类型又是int 这样不对,而且你这是在定义函数,不应该放在main函数里面)
scanf("%d %d %d",&a,&b,&c);(这个应该是在运行的那部分写的)
printf("%.3f",max()};(函数输出不是这个形式)
getch();
return 0;
}
void max(int x,int y,int z)
{
int max;
max=x>(y>z?y:z)?x:(y>z?y:z);

}

我把正确的C程写下吧,你参考参考
#include<stdio.h>
int max(int a,int b,int c);
{int max=a;
if(b>a)
{if(b>c) max=b;
else max=c;}
else if(c>a) max=c;
return max;
}
main()
int max,x,y,z;
max(x,y,z)
printf(max=%d,max());
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
有钱买不起房子
2011-06-12 · TA获得超过4326个赞
知道大有可为答主
回答量:1249
采纳率:100%
帮助的人:2089万
展开全部
#include<stdio.h>
//#include <conio.h>
#define MAX(x,y,z) x>(y>z?y:z)?x:(y>z?y:z)//定义宏
int main()
{
float Max(float a,float b,float c);
float a,b,c;//要求是实数
scanf("%f %f %f",&a,&b,&c);
printf("%.3f\n",Max(a,b,c));//函数要输入实参
printf("%.3f\n",MAX(a,b,c));
getch();
return 0;
}
float Max(float x,float y,float z)//函数使用返回值
{
float max;
max=x>(y>z?y:z)?x:(y>z?y:z);
return max;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杜茂彦rc
2011-06-12 · TA获得超过1143个赞
知道小有建树答主
回答量:1314
采纳率:100%
帮助的人:1231万
展开全部
max=x>(y>z?y:z)?x:(y>z?y:z);
==> max=x>y? ( x>z?x : z) : ( y>z?y:z);

#define Max(x,y,z) (x)>(y)? ( (x)>(z)?(x) :( z)) : ( (y)>(z)?(y):(z))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式