原题链接:[编程入门]三个数找最大值
解题思路1:
如果说要解这道题,还是很简单粗暴的:
本题的三个数比大小的要求就是,比另外两个数都大,即a>b和a>c同时满足。同时满足就是和:&&
if (a>b&&a>c) printf("%d",a);所以,写三条条件判断就可以了。
参考代码1:
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if (a>b&&a>c) printf("%d",a);
if (b>a&&b>c) printf("%d",b);
if (c>a&&c>b) printf("%d",c);
return 0;
}解题思路2:
因为只要求最大值,不需要排序,所以,先两个数比较,第三个数只要跟前两个数中大的比,谁大就谁最大。
参考代码2:
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if (a>b)
{
if (c>a) printf("%d",c);
if (c<a) printf("%d",a);
}
if (b>a)
{
if (c>b) printf("%d",c);
if (c<b) printf("%d",b);
}
return 0;
}解题思路3:
在2的思路上,改代码,就是擂台法,定义变量的时候多定义一个d,谁大谁是d:
参考代码3:
#include<stdio.h>
int main()
{
int a,b,c,d;
scanf("%d%d%d",&a,&b,&c);
if(a>b) d=a;
else d=b;
if(c>d) d=c;
printf("%d",d);
return 0;
}0.0分
60 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> int main() { int a,b,c,max; printf("请输入三个整数"); scanf("%d%d%d",&a,&b,&c); if(a>b) max=a; else max=b; if(c>max) max=c; printf("%d",max); return 0; } 请问这个为什么会答案错误#include <stdio.h> int main() { int a,b,c,max; scanf("%d %d %d",&a,&b,&c); max=(a>b?a:b)>c?(a>b?a:b):c; printf("%d",max); return 0; }@misai #include<stdio.h> int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); int max; max = a > b ? a : b; max = max > c ? max : c; printf("%d", max); return 0; } //scanf_s 函数而不是标准的 scanf 函数。 //看清题目要求#include<stdio.h> int main() { int a, b, c;//定义三个变量 scanf_s("%d %d %d", &a, &b, &c); //输入三个随机整数 int max; max = a > b ? a: b; max = max > c ? max : c; printf("最大值为%d", max); return 0; } 为啥这样不行啊#include<stdio.h> int main() { int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=t(a,b); max=t(c,max); printf("max=%d",max); return 0; } int t(int a,int b) { int max; if(a<b) max=b; else max=a; return max; } 这种方法可以吗@麦克斯韦 这里的语法没有问题,但是在三目运算符的使用中,你需要注意其中的运算优先级问题。 在这里,你是想在判断 a 是否大于 b 的前提下,将 a 与 b 比较并更新 a 的值,如果 a 小于 b 则将 a 更新为 b。但是上述语句使用了三目运算符 ? :,因为 = 运算符的优先级比 ? : 运算符低,所以在计算时会先计算 a ? a : b 的结果,然后再赋值给 a。因此可能不会获得正确的结果你可以这样写#include<stdio.h> int main() { int a, b, c; scanf("%d%d%d", &a, &b, &c); a = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c); printf("%d", a); return 0; }