题目:


输入 a、b、c 三个值,输出其中最大值。


样例输入:


10 20 30


样例输出:


30

chrome_2018-06-22_20-51-30.png

解题思路:


说实在话,这一题有很多方法可以解决。如果用 C 来实现,一般都是使用 if 来判断,说白了就是用两个 if else。


直接给出部分代码

	if (a > b)  //判断 a,b 哪个大,把大的数赋值给 x1
		x1 = a;
	else 
		x1 = b;
	if (x1 > c) //判断 x1,c 哪个大
		printf("%d", x1);  //如果是 x1 大,输出 x1
	else
		printf("%d", c);  //如果是 c 大,输出 c


如果用 C++ 来实现,那就有简单一点的做法, 还是先给出部分代码,这里涉及到 STL 算法,max 这个算法就是用来返回最大值的。

int x1 = max(a, b);
int x2 = max(x1, c);
cout << x2 << endl;


 参考代码:


先给 C 的代码

#include <stdio.h>
int main()
{
	int a, b, c,x1;
	scanf("%d%d%d",&a,&b,&c);
	if (a > b)  // 判断 a,b 哪个大,把大的数赋值给 x1
		x1 = a;
	else 
		x1 = b;
	if (x1 > c) // 判断 x1,c 哪个大
		printf("%d", x1);  // 如果是 x1 大,输出 x1
	else
		printf("%d", c);  // 如果是 c 大,输出 c
	return 0;


再给 C++ 的代码

#include<iostream>
#include <algorithm>
using namespace std;
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	int x1 = max(a, b);  // 把 a,b 中大的值赋给 x1
	int x2 = max(x1, c);  // 把 x1,c 中大的值赋给 x2
	cout << x2 << endl;  // 输出最大值
	return 0;
}


本地测试结果如下图:Project4_2018-06-22_21-50-19.png

点赞(26)
 

0.0分

25 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 34 条评论

沫沫yummy 4年前 回复TA
@沫沫yummy 为什么说这个答案不正确啊?
沫沫yummy 4年前 回复TA
#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if(a>b&&a>c)
        printf("最大值是:%d",a);
    else if(b>a&&b>c)
        printf("最大值是:%d",b);
    else
        printf("最大值是:%d",c);
    return 0;
}
道长1573 4年前 回复TA
@道长1573 选择语句啊,语句没问题的,我在VC上运行通过了
你的全世界 4年前 回复TA
cout<<"最大值="<<max;
才知道 加上中文算错。。。。
Chris 4年前 回复TA
#include<iostream>
using namespace std;
int main() {
    int a,b,c;
    while (cin >> a >> b >> c) {
        cout<<(a > b ? (a > c ? a : c) : (b > c ? b : c))<<endl;
    }
    return 0;
}
诗和远方 4年前 回复TA
@道长1573 这个你搞明白了吗?我也没看懂
即将公布本月处决名单 4年前 回复TA
调用函数为什么编译错误
#include<iostream>
using namespace std;

max(int a,int b)
{
	int z;
	
	if(a<b)  z=b;
	else  z=a;
	
	return z;
} 
int main()
{
	int a,b,c,t;
	
	cin>>a>>b>>c;
	t=max(max(a,b),c);
	
	cout<<t;
	
	return 0;
}
kka 4年前 回复TA
#include<iostream>
using namespace std;
int main()
{
	int A ,B,C;
    cin>>A>>B>>C;
	if(A>B)
	{
		if(A>C)
		cout<<A<<endl;
		else
		cout<<C<<endl;
	}
	else
	{
		if(B>C)
			cout<<B<<endl;
			else
			cout<<C<<endl;
		
	}
	return 0;
 } 
为什么这个编译错误啊?求解
道长1573 5年前 回复TA
int a,b,c,t;
    scanf("%d%d%d", &a, &b, &c);
	t=a>b?a:b;
	t=t>c?t:c;
    printf("max=%d\n",t);

为什么这个不行?
淘汰ˇ 5年前 回复TA
@淘汰ˇ 这个过不去  >-<