[C/C++入门][ifelse]11、三位数找最大值(比大小以及多个数找最大值)

比较数的大小

在学习数学的早期阶段,孩子们会学会如何比较两个数的大小。他们通常通过观察数的数字组成来判断哪个数更大。例如,当比较数字34和56时,如果左边第一位的数字不同,那么具有较大数字的数就是较大的数。在这个例子中,5比3大,所以56大于34。

如果第一个数字相同,则需要比较下一个数字。例如,比较34和38时,由于第一个数字都是3,我们就需要比较第二位的数字,4小于8,因此34小于38。

在计算机中通过> < 很方便的就可以比较出两个数的大小。

那三个数,只要判断他比另外两个都大就可以了,但是当数字躲起来呢,比较的方法就比较混乱了。

先看一下初学者思路的方法

如果a>=b,那么再判断b,c的大小:

如果b>=c,那么a>=b>=c。因此a是最大的。但是其他的数也得比较一下。

#include<iostream>
using namespace std;
int main()
{
	int a, b, c;//输入三个数
	cin >> a >> b >> c;
	if(a >= b)
	{
		if(b >= c) 
			cout << a << " " << b << " " << c << endl;
		else
		{
			if(a >= c)
				cout << a << " " << c << " "<< b << endl;
			else //也就是a < c
				cout << c << " " << a << " "<< b << endl;
		}
	}
	else//a < b
	{
		if(a >= c)
			cout << b << " " << a << " " << c << endl;
		else //也就是a < c
		{
			if(b >= c)
				cout << b << " " << c << " " << a << endl;
			else //也就是b < c
				cout << c <<" " << b << " " << a << endl;
		}
	}
	return 0; 
}

比较聪明的小伙伴觉得ifelse嵌套比较乱,会使用&&逻辑运算符来做

#include<iostream>
using namespace std;
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	if(a >= b && b >= c)
		cout << a <<" " << b << " " << c << endl;
	else if(a >= c && c >= b)
		cout << a << " " << c <<" " << b << endl;
	else if(b >= a && a >= c)
		cout << b << " " << a << " " << c << endl;
	else if(b >= c && c >= a)
		cout << a << " " << c << " " << b << endl;
	else if(c >= a && a >= b)
		cout << c << " " << a << " " << b << endl;
	else if(c >= b && b >= a)
		cout << c << " " << b << " " << a << endl;
	return 0; 
}

那数字如果多一点呢,五个,十个,你们还比的出来么?

因此我们需要学习更好的方法来解决这个问题

找最大值的方法

当我们有一组数时,找出最大值就是重复上述的比较过程,直到确定所有数中最大的那一个。具体步骤如下:

  1. 选择与比较:从数列中选取两个数进行比较,确定哪个数更大。
  2. 记忆最大值:记住这两个数中较大的那个数。
  3. 继续比较:将记忆中的最大值与列表中的下一个数进行比较。如果下一个数更大,就更新记忆中的最大值。
  4. 遍历整个列表:重复上述过程,直到列表中的所有数都被比较过。
  5. 确定最大值:经过上述步骤后,你记忆中的数就是列表中的最大值。

例如,如果有数列 [3, 7, 2, 9, 5],我们可以这样找出最大值:

  • 比较3和7,7更大,记忆7。
  • 比较7和2,7依然最大,保持记忆7。
  • 比较7和9,9更大,更新记忆为9。
  • 比较9和5,9依然是最大值。

最后,我们得出结论,数列 [3, 7, 2, 9, 5] 中的最大值是9。

实践示例(先不用数组)

void test1() {
	//1、定义变量n
	int n;
	cin >> n;
	//见名知意
	double max = 0, min = 0, avg;
	double cj;
	double sum = 0;
	//2、输入n个考生的成绩。
	for (int i = 1; i <= n; i++) {
		cin >> cj;
		sum += cj;
		if (max == 0) {
			max = cj;
		}
		else if (cj > max) {
			max = cj;
		}
		if (min == 0) {
			min = cj;
		}
		else if (cj < min) {
			min = cj;
		}
	}
	cout << "最大值:" << max << endl;
	cout << "最小值:" << min << endl;
	cout << "平均值:" << sum / n << endl;
}

让我们通过一个小例子来实践一下这个方法。假设我们有以下数列:让我们一步步找出其中的最大值。

#include <iostream>
using namespace std;

int main() {

    int numbers[] = {5, 3, 9, 1, 8}; // 定义一个整数数组
    int n = sizeof(numbers) / sizeof(numbers[0]); // 计算数组长度
    int max_value = numbers[0]; // 初始化最大值为数组的第一个元素

    // 遍历数组,寻找最大值
    for (int i = 1; i < n; ++i) {
        if (numbers[i] > max_value) {
            max_value = numbers[i];
        }
    }

    // 输出最大值
    cout << "最大值是: " << max_value << endl;

    return 0;
}

上面其实都已经加了注释了,怎么样,理解了么,方法需要多练,然后有问题我们评论区讨论吧。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,可以使用条件语句和循环语句来求两个或三个数中的最大。 如果有两个数需要比较,可以使用if-else语句。首先,输入两个需要比较的数,然后进行判断。如果第一个数大于第二个数,则第一个数为最大;如果第一个数小于第二个数,则第二个数为最大。代码如下: ```c #include <stdio.h> int main() { int num1, num2; printf("请输入两个数:\n"); scanf("%d %d", &num1, &num2); if (num1 > num2) printf("最大为:%d\n", num1); else printf("最大为:%d\n", num2); return 0; } ``` 如果有三个数需要比较,可以使用嵌套的if-else语句或for循环。嵌套的if-else语句每次比较两个数,将最大保存下来,再与第三个数比较取得最大。for循环则在每次循环中比较两个数,将最大保存下来,最终得到最大。代码如下: 嵌套的if-else语句: ```c #include <stdio.h> int main() { int num1, num2, num3, max; printf("请输入三个数:\n"); scanf("%d %d %d", &num1, &num2, &num3); if (num1 > num2) { max = num1; if (num3 > max) max = num3; } else { max = num2; if (num3 > max) max = num3; } printf("最大为:%d\n", max); return 0; } ``` for循环: ```c #include <stdio.h> int main() { int num[3], max; printf("请输入三个数:\n"); scanf("%d %d %d", &num[0], &num[1], &num[2]); max = num[0]; for (int i = 1; i < 3; i++) { if (num[i] > max) max = num[i]; } printf("最大为:%d\n", max); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值