7-58 求一组数中的最大值和次最大值

该程序使用C语言编写,通过读取用户输入的一行10个整数,存储到一维数组中,然后遍历数组找到最大值和次大值,并按指定格式输出。最大值和次大值在遍历过程中动态更新。

编程求出含有10个元素的一维数组中的最大值和次最大值。

输入格式:

在一行中输入10个用空格间隔的整数,数据之间只能各用1个空格间隔。

输出格式:

在一行中按照“max=最大值,cmax=次大值”的格式输出结果,最大值和次大值均原样输出,没有列宽控制。

输入样例:

5 6 2 1 4 3 10 0 2 7

输出样例:

max=10,cmax=7

 代码如下:

#include <stdio.h>
#define N 10
main()
{
	int i,max,cmax,a[N];
    
	for(i=0;i<10;i++)
    {
	scanf("%d",&a[i]);
    }
	max = a[0];
	cmax = a[0];
	for(i=1;i<10;i++)
	{
		if(max<a[i]) 
        {
         cmax = max; 
         max = a[i];
        }
	}
	printf("max=%d,cmax=%d",max,cmax);
}

### 使用选择法最大值最小值 为了找到给定组 `a` 中的 n 个元素的最大值最小值,可以采用选择法。这种方法通过遍历整个组一来确定这些值。 #### 算法描述 在初始化阶段,假设第一个元素既是当前的最大值也是当前的最小值。随后,对于每一个后续元素,比较其与已知的最大值最小值: - 如果该元素大于目前记录的最大值,则更新最大值- 同样地,如果小于目前记录的最小值,则更新最小值; 最终,在完成全部元素的一遍历之后,所保存的最大值最小值即为所需的结果[^1]。 下面是一个具体的 C++ 实现例子,展示了如何利用上述逻辑在一个整型组中寻找最大值最小值[^3]。 ```cpp #include <iostream> using namespace std; void findMaxMin(int arr[], int size, int& maxVal, int& minVal) { // 初始化最大值最小值为组的第一个元素 maxVal = arr[0]; minVal = arr[0]; // 开始遍历剩余的元素 for (int i = 1; i < size; ++i) { if (arr[i] > maxVal) { maxVal = arr[i]; // 更新最大值 } if (arr[i] < minVal) { minVal = arr[i]; // 更新最小值 } } } int main() { const int SIZE = 10; int numbers[SIZE] = {31, 41, 59, 26, 53, 58, 97, 93, 23, 84}; int maximum, minimum; findMaxMin(numbers, SIZE, maximum, minimum); cout << "Maximum value is: " << maximum << endl; cout << "Minimum value is: " << minimum << endl; return 0; } ``` 此程序定义了一个名为 `findMaxMin` 的函,它接收一个整数组及其大小作为输入,并通过引用传递两个变量用于存储计算得到的最大值最小值。主函则创建了一个测试用的据集并调用了这个辅助函来进行实际的操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值