新手提问,比较三个数,找出最大数值的算法,
#include "stdio.h"int main()
{
int max(int x,int y, int z);
int a ,b ,c ,d ;
scanf_s("%d.%d,%d", &a, &b, &c);
d = max(a, b, c);
printf("max=%d", d);
return 0;
}
int max(int x, int y, int z)
{
int w;
if ((x > y) & (x > z))
{
w = x;
}
if ((y > x) &( y > z))
{
w = y;
}
if ((z > x )&( z > y))
{
w = z;
}
return w;
}
每次输入三个数,最后max都等于第一个数字,求问这是为什么?改怎么修改呢? 本帖最后由 jackz007 于 2020-11-18 17:48 编辑
逻辑运算符写错了
int max(int x, int y, int z)
{
int w ;
if ((x > y) && (x > z))
{
w = x;
}
if ((y > x) && (y > z))
{
w = y;
}
if ((z > x) && (z > y))
{
w = z;
}
return w;
}
帮楼主简化了一下代码:
#include <stdio.h>
int max(int x , int y , int z)
{
int m = x ;
if(y > m) m = y ;
if(z > m) m = z ;
return m ;
}
int main(void)
{
int a , b , c ;
scanf_s("%d%d%d" , & a , & b , & c) ;
printf("max = %d\n" , max(a , b , c)) ;
} jackz007 发表于 2020-11-18 17:40
逻辑运算符写错了
int max(int x, int y, int z)
{
我发现核心问题是 scanf_s("%d.%d,%d", &a, &b, &c);
%d之间不能加逗号.
大佬的算法拓展了我的思路,感谢大佬!{:5_106:}{:5_92:} jackz007 发表于 2020-11-18 17:40
逻辑运算符写错了
int max(int x, int y, int z)
{
据我所知,& 和 && 在用于逻辑运算时除了短路逻辑并没有什么区别。
页:
[1]