解题思路注意事项:
找出三个数的最大值,三目运算符可以很简单的做到:
(x>y?x:y)>z?(x>y?x:y):z
首先x和y比较,接着x和y间的最大值和z比较,如果大于z则输出x和y之间较大的指,如果x和y之间的较大值小于z,则输出z。
参考代码:
#include<stdio.h> #define MAX(x,y,z) (x>y?x:y)>z?(x>y?x:y):z double max(double x,double y,double z) { return (x>y?x:y)>z?(x>y?x:y):z; } int main() { double x,y,z,max1,max2; scanf("%lf%lf%lf",&x,&y,&z); max1 = MAX(x,y,z); max2 = max(x,y,z); printf("%.3lf\n%.3lf\n",max1,max2); return 0; }
0.0分
47 人评分
#include<stdio.h> #include<math.h> #define maxabc(m,n,p) (m>n?m:n)>p?(m>n?m:n):p int main() { float a,b,c,max1; scanf("%f %f %f",&a,&b,&c); max1 = fmaxf(fmaxf(a,b),c); printf("%.3f\n",max1); printf("%.3f",maxabc(a,b,c)); return 0; }
#include<stdio.h> #define maxNum1(a,b,c) (a>b?(a>c?a:c):(b>c?b:c)) float maxNum2(float a,float b,float c); int main() { float a,b,c; scanf("%f %f %f",&a,&b,&c); printf("%.3f\n%.3f\n",maxNum2(a,b,c),maxNum1(a,b,c)); return 0; } float maxNum2(float a,float b,float c){ return (a>b?(a>c?a:c):(b>c?b:c)); }
#include<stdio.h> double max(double x,double y,double z); #define MAX(x,y) x>y ? x:y //如果x>y,那么MAX(x,y)的值就是x,否则就是y int main() { double a,b,c,maxi,maxj; scanf("%lf %lf %lf",&a,&b,&c); max(a,b,c); //依次比较 // printf("%.3lf",maxj); return 0; } double max(double a,double b,double c) { double maxa,maxb; maxa=MAX(a,b); maxb=MAX(maxa,c); printf("%.3lf",maxb); //return maxa; }
#include<stdio.h> #define MAX(a,b,c) max1=a,((max1<b?:max1=b)>c?:max1=c); int main() { double max2(double a,double b,double c); double a,b,c,max1; scanf("%lf%lf%lf",&a,&b,&c); max2(a,b,c); MAX(a,b,c); printf("%.3lf\n",max1); } double max2(double a,double b,double c) { double max=a; if(max<b) { max=b; } if(max<c) { max=c; } printf("%.3lf\n",max); return 0; } 哪里错误了呢,这个典型的问题有助于提高大家C语言编程能力
x>y? x : y为条件表达式,若x>y成立则这个表达式的值为后面x,否则表达式的值是y, z?(x>y?x:y):z 这个是什么东西
编程cxk 2019-07-18 15:27:02 |
你把x>y?x:y当做你问题中的x 类比第一个式子
DARLING·02 2020-02-10 22:56:18 |
a>b? (a>c? a : c) : (b>c? b : c) 这个逻辑清晰一些
DARLING·02 2020-02-10 22:59:19 |
作者的意思应该是,如果x大于y,则输出其中较大的一项,然后再跟z比较,如果比z大,那么再判断x,y的关系,如果比z小,那肯定z就是最大的咯
#define ZUI_DA(a,b,c) a>b?(a>c?a:c):(b>c?b:c) float Zui_Da(float a, float b, float c) { if (a < b) { a = b; } if (a < c) { return c; } else return a; } int main() { float a, b, c; scanf("%f%f%f", &a, &b, &c); printf("%.3f\n",Zui_Da(a, b, c)); printf("%.3f\n", ZUI_DA(a,b,c)); return 0; }
#include<stdio.h> #define MAX(x,y,z) (x>y?x:y)>z?(x>y?x:y):z double max(double x,double y,double z) { return (x>y?x:y)>z?(x>y?x:y):z; } int main() { double x,y,z,max1,max2; scanf("%1f %1f %1f",&x,&y,&z); max1 = max(x,y,z); max2 = MAX(x,y,z); printf("%.3f\n%.3f\n",max1,max2); return 0; } 是这个,不是上面的
#include<stdio.h> #define MAX(x,y,z) (x>y?x:y)>z?(x>y?x:y):z double max(double x,double y,double z) { return (x>y?x:y)>z?(x>y?x:y):z; } int main() { double x,y,z,max1,max2; scanf("%lf%lf%lf",&x,&y,&z); max1 = MAX(x,y,z); max2 = max(x,y,z); printf("%.3lf\n%.3lf\n",max1,max2); return 0; } 这个为什么错了?求大佬解答
C语言训练-计算一个整数N的阶乘 (C语言代码)浏览:982 |
十->二进制转换 (C语言代码)浏览:1330 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:583 |
简单的a+b (C语言代码)浏览:641 |
简单的a+b (C语言代码)浏览:626 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:903 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:548 |
整除的尾数 (C语言代码)浏览:852 |
A+B for Input-Output Practice (II) (C语言代码)浏览:622 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:669 |