📜  C |回路和控制结构|问题3(1)

📅  最后修改于: 2023-12-03 15:13:46.585000             🧑  作者: Mango

C语言中的回路和控制结构 - 问题3
问题描述

编写一个程序,找出给定数组中所有元素的最大值和次大值。

程序分析

本题可以使用一个循环来遍历数组,每次比较当前元素与最大值和次大值的大小,更新这两个变量即可。需要注意的是,对于第一个元素,需要特殊处理。

代码示例
#include <stdio.h>

int main() {
    int arr[10] = {4, 8, 6, 9, 1, 3, 5, 2, 7, 0};
    int i, max, sec_max;
    max = arr[0];
    sec_max = arr[1];
    if (sec_max > max) {
        int temp = max;
        max = sec_max;
        sec_max = temp;
    }
    for (i = 2; i < 10; i++) {
        if (arr[i] > max) {
            sec_max = max;
            max = arr[i];
        } else if (arr[i] > sec_max) {
            sec_max = arr[i];
        }
    }
    printf("最大值:%d\n次大值:%d\n", max, sec_max);
    return 0;
}
代码说明

首先定义了一个数组 arr,包含了 10 个整数。

然后定义了三个整型变量,用于存储最大值、次大值以及循环计数器。

给最大值和次大值先初始化,将 arr 数组的第一个元素赋给最大值,将第二个元素赋给次大值,然后比较这两个元素的大小,如果次大值大于最大值,则交换这两个元素的值。

接着使用一个循环来遍历 arr 数组,从第三个元素开始比较,如果当前元素大于最大值,则将此时的最大值更新为当前元素,并将原先的最大值赋给次大值。如果当前元素不大于最大值但大于次大值,则将当前元素赋给次大值。最后输出最大值和次大值即可。