C语言 :三个数求最大值,快来帮忙改错哈!

为什么输出是2呢?
#include <stdio.h>
int main()
{
/* int a,b,c,max;

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

max = a>b ? a : b;
max = max>c ? max : c;

printf("max=%d",max);

return 0;
*/
int a,b,c,max;

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

max=a;

if(b>max)
max=b;
else
if(c>max)
max=c;

printf("max=%d",max);

return 0;
}

我来解释下你程序的逻辑意思吧:

(1)

#include <stdio.h>
int main()
{scanf("%d%d%d",&a,&b,&c);

max = a>b ? a : b;   //此处建议改为max =( a>b ? a : b );第一方便阅读,第二不容易出现逻辑错误,解释为:max在a>b成立时a对其赋值,否则b对其赋值,建议规范。)

max = max>c ? max : c 
printf("max=%d",max);
}

(2)

 int a,b,c,max;

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

max=a;

if(b>max) //整个if语句的意思是,如果b>max,则执行b对max的赋值,并结束if语句,如果b不是>max,才执行else if的语句,例如输入1,2,3.由于2(b)>1(a),那么max==2,if语句就结束了,不再执行else的语句了。建议:删去else即可,使得其成为两个单独的if语句//

 

  max=b;
else
  if(c>max)
   max=c;
  
printf("max=%d",max);

return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-15
if(b>max) 成立,那么将b赋给max,下面的c就不进行比较了。

去掉 else就对了。
if(b>max)
max=b;
//else
if(c>max)
max=c;
第2个回答  2013-10-15
这两个程序目的不都是一样的吗?
第二个如同楼下所说去掉else就可以了。
上一个应该没问题吧

C语言 :三个数求最大值,快来帮忙改错哈!
max = max>c ? max : c printf("max=%d",max);} (2)int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a; if(b>max) \/\/整个if语句的意思是,如果b>max,则执行b对max的赋值,并结束if语句,如果b不是>max,才执行else if的语句,例如输入1,2,3.由于2(b)>1(...

C语言3个数求最大值 帮忙改错
void main(){ int a,b,c,max;scanf("%d%d%d",&a,&b,&c);\/\/应该有3个%d,因为你要取3个数的值 if(a>b)max=a;else max=b;if(max>c)max=max;else max=c;printf("%d",max);}

C语言 求出三个数的最大值,用函数做(改错)
return (max(x, y)>c? max(x, y) :c);}

3个数求最大值 最小值 用C语言 求改错
{if(a>c)printf("最大值=%d",a);printf("最小值=%c\\n",b);else printf("最大值=%d",c);printf("最小值=%c\\n",b);} 你前面已经a>b了,下面就只判断c,有a>c,a c,b c能确定最大值和最小值,另外两个还要再比一次,所以这里就错了,下面就不说了 设两个数int max ,min...

关心C语言,3个数输出最大数的问题
void main(){ int a1,a2,a3,p;printf("3 ge shu:");scanf("%d%d%d",&a1,&a2,&a3);p=max(a1,a2,a3);printf("the big is:%d",p);getch();} int bigger(int a,int b){if(a>b) return a;else return b;} int max(int a1,int a2,int a3){int o;o=bigger(a1,a2);o...

我编的三个数求和、平均、最大最小的程序,求给改错,前面都对,就在最...
瞎出的题,人家还没学到的语法他就出题了。int get_max(int arr[] , int n){ int max = arr[0];for( int i=1; i<n ; i++){ if (arr[i] > max)max = arr[i];} return max;} 用这本书吧, “ C\/C++学习指南 邵发 " 在线教程, 在线答疑 , 在线题库 ...

C语言 输入一数组求最大 最小 方差 求改错...求帮助啊
您在输出最大值和最小值时使用了%d格式符,这适用于整数输出。然而,您计算方差时使用的数据类型是double。因此,在输出方差时也应使用%lf格式符,以确保正确显示双精度浮点数。我根据上述提示,对您的代码进行了相应的调整。首先,确保数据类型一致,并正确初始化变量。其次,使用正确的格式符读取和输出...

c语言程序改错,速求高手高奖励,代码如下,我觉得错误是字符串的值Z付...
test.c:3:14: 错误: ‘y1’被重新声明为不同意义的符号 可以判断y0和y1已经被定义了,猜测是math.h,也算是情理之中。所以要改个名。用文本工具替换y0为y01,替换y1为y02,再编译:undefined reference to `getch'哦,linux下面只有getchar(),加上之后,编译通过。程序执行:the best result:...

利用C语言指针比较三个数并且从小到大输出
include<stdio.h> int main(){ int a,b,c,*p1,*p2,*p3,*t;p1=&a;p2=&b;p3=&c;printf("请输入三个整数:");scanf("%d%d%d",p1,p2,p3);if(*p1>*p2){t=p1;p1=p2;p2=t;} if(*p1>*p3){t=p1;p1=p3;p3=t;} if(*p2>*p3){t=p2;p2=p3;p3=t;} printf("%d %d ...

c语言,求两个数中的较大者。为什么总是有错?
int a,b,c;scanf("%d%d",&a,&b);\/\/这里本来是有逗号的,输入的时候中间要加逗,这是初学者常范的错误,我已经把逗号去掉,这样的话中间加空格就行了。你如果把逗号加上的话,输入要用1,2这种格式的,而且要注意逗号要英文的 c=max(a,b);printf("max is %d\\n",c);} int max(int ...

相似回答