题目:


输入 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 条评论

Fish3s 2年前 回复TA
@打工人r2102 内容也有问题,如果输入的三个值都是小于0的,那么最终输出的是0了,而不是三个复数中最大的那个。
yjj 3年前 回复TA
#include <iostream>
using namespace std;
int main()
{
	int a,b,c,max;
	cout<<"please input a,b,c:";
	cin>>a>>b>>c;
	cout<<"a="<<a<<"  "<<"b="<<b<<"  "<<"c="<<c<<endl;
	if (a<b)
	{
		max=b;
		if(b<c)
			{
			max=c;
			}
		else max=b;
	}
	else max=a;
	cout<<"max="<<max<<endl;
	return 0;	   
}
哈哈哈 3年前 回复TA
@可爱多 他后面少了个花括号
糕糕tt 3年前 回复TA
@泷 可以用or吗(刚学c语言、礼貌的问一下)
加油的小白 3年前 回复TA
@打工人r2102 内容没问题,但是输出的时候题干没要求输入文字,你把“这三个数。。。”这些汉字删掉
加油的小白 3年前 回复TA
@泷 c里面连续大于得用&&(与)来实现
打工人r2102 3年前 回复TA
@泷 不能连连着大于吧
打工人r2102 3年前 回复TA
这个代码不行吗,题目要求数组,俩if用一个三目运算符代替,然后提交显示答案错误
#include<stdio.h>
int main()
{
	int a[3],i,max=0;
	for(i=0;i<3;i++)
	{
		a[i]=0;
	}
	for(i=0;i<3;i++)
	{
		scanf("%d",&a[i]);
		max=a[i]>max?a[i]:max;
	} 
	printf("这三个数中最大值为:%d",max);
	
	return 0;
 }
可爱多 3年前 回复TA
为啥代码和你的一样提交后还是错误?
hero 3年前 回复TA
@泷 相等的情况没考虑