C-Programm zum Finden der zweitgrößten Zahl im Array

C-Programm zum Finden der zweitgrößten Zahl im Array

Schreiben Sie ein C-Programm, um das größte und zweitgrößte Element in einem Array zu finden. So finden Sie das zweitgrößte Element in einem Array in der Programmiersprache C. Logik zum Finden des zweitgrößten Elements im Array im C-Programm.

Beispiel

Eingabe

Input array elements: -7 2 3 8 6 6 75 38 3 2

Ausgabe

Second largest = 38

Erforderliche Kenntnisse

Basic Input Output, Wenn sonst, For-Schleife, Array

Logik zum Finden des zweitgrößten Elements

Beschreibende Schritt-für-Schritt-Logik, um das zweitgrößte Element im Array zu finden.

  1. Gib Größe und Elemente in ein Array ein, speichere es in einer Variablen, sagen wir size und arr .
  2. Zwei Variablen deklarieren max1 und max2 um die ersten und zweitgrößten Elemente zu speichern. Speichern Sie den ganzzahligen Mindestwert in beiden, z. B. max1 = max2 = INT_MIN .
  3. Durch alle Array-Elemente iterieren, eine Schleife von 0 bis size - 1 ausführen . Die Schleifenstruktur sollte wie folgt aussehen:for(i=0; i<size; i++) .
  4. Überprüfen Sie innerhalb der Schleife, ob das aktuelle Array-Element größer als max1 ist , machen Sie dann das größte Element zum zweitgrößten und das aktuelle Array-Element zum größten. Sagen Sie max2 = max1 und max1 = arr[i] .
  5. Andernfalls, wenn das aktuelle Array-Element größer als max2 ist aber weniger als max1 dann machen Sie das aktuelle Array-Element zum zweitgrößten, dh max2 = arr[i] .

Programm zum Finden des zweitgrößten Elements im Array

/**
 * C program to find second largest number in an array
 */

#include <stdio.h>
#include <limits.h> // For INT_MIN

#define MAX_SIZE 1000     // Maximum array size 

int main()
{
    int arr[MAX_SIZE], size, i;
    int max1, max2;

    /* Input size of the array */
    printf("Enter size of the array (1-1000): ");
    scanf("%d", &size);

    /* Input array elements */ 
    printf("Enter elements in the array: ");
    for(i=0; i<size; i++)
    {
        scanf("%d", &arr[i]);
    }

    max1 = max2 = INT_MIN;


    /*
     * Check for first largest and second
     */
    for(i=0; i<size; i++)
    {
        if(arr[i] > max1)
        {
            /*
             * If current element of the array is first largest
             * then make current max as second max
             * and then max as current array element
             */
            max2 = max1;
            max1 = arr[i];
        }
        else if(arr[i] > max2 && arr[i] < max1)
        {
            /*
             * If current array element is less than first largest
             * but is greater than second largest then make it
             * second largest
             */
            max2 = arr[i];
        }
    }

    printf("First largest = %d\n", max1);
    printf("Second largest = %d", max2);

    return 0;
}

Ausgabe

Enter size of the array (1-1000): 10
Enter elements in the array: -7 2 3 8 6 6 75 38 3 2
First largest = 75
Second largest = 38