C 中第二大数组元素

查找数组中的第二大值是一个经典的 C 数组程序。此程序让您深入了解迭代、数组和条件运算符。我们迭代检查每个元素以确定最大和次大元素。

算法

让我们首先看看这个程序的分步过程应该是什么 −

开始
步骤 1 → 取一个数组 A 并定义其值
步骤 2 → 将最大和次大声明为整数
步骤 3 → 将数组 A 的前两个值分配给最大和次大
步骤 4 → 将大值分配给最大,将次大值分配给次大
步骤 5 → 对数组 A 进行迭代
步骤 6 → 如果 A[n] >最大,将最大值分配给第二个,并将 A[n] 分配给最大
步骤 7 → 否则,如果 A[n] > 第二个,将 A[n] 分配给第二个
步骤 8 → 循环终止
步骤 9 → 显示最大和第二个
停止

伪代码

现在让我们看看这个算法的伪代码 −

procedure largest_array(A)

   Declare largest and second as integer

   IF A[0] is greater than A[1] THEN 
      largest ← A[0]
      second ← A[1]
   ELSE
      largest ← A[1]
      second ← A[0]
   ENDIF

   FOR EACH value in A DO
      IF A[n] is greater than largest THEN
         second ← largest
         largest ← A[n]
      ELSE IF second is less than A[n] THEN
         second ← A[n]
      END IF

   END FOR
   Display largest and second

end procedure

实现

此伪代码现在可以在 C 程序中实现,如下所示 −

#include <stdio.h>

int main() {
   int array[10] = {101, 11, 3, 4, 50, 69, 7, 8, 9, 0};
   int loop, largest, second;

   if(array[0] > array[1]) {
      largest = array[0];
      second  = array[1];
   } else {
      largest = array[1];
      second  = array[0];
   }

   for(loop = 2; loop < 10; loop++) {
      if( largest < array[loop] ) {
         second = largest;
         largest = array[loop];
      } else if( second < array[loop] ) {
         second =  array[loop];
      }
   }

   printf("Largest - %d 
Second - %d 
", largest, second);   

   return 0;
}

输出应如下所示 −

Largest - 101
Second - 69

array_examples_in_c.html