Search for the largest and second largest number

Write a program into which a series of 10 numbers is entered and find the 2 largest values โ€‹โ€‹of 10 numbers? (Only using if and loop)

Can someone help me solve the problem ?. I tried, but it was wrong. He cannot list the second largest number. Any help would be appreciated.

  #include "stdafx.h"
  #include <stdio.h>
  #include <stdlib.h>
  #include <math.h>


int main()
{
    int counter = 0, number, largest = 0,largest2=0;
    for (counter = 1; counter <= 10; counter++) {
        printf("Enter number (%d): ", counter);
        scanf_s("%d", &number);
        if (number > largest)
        {
            largest = number;
        }
        else
        {
            if (number > largest2)
                largest2 = number;
        }
    }
    printf("The largest number is %d\n", largest);
    printf("The second largest number is %d\n", largest2);
    system("pause");
    return 0;
}
+4
source share
4 answers

Your logic should be clarified:

  • When you get the new largest number, you must also update the second largest, as the previous largest number becomes the second largest.
  • In addition, you must initialize the largest and second largest values INT_MINso that you can correctly process negative numbers.
  • scanf_s() , .

:

#include <limits.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int number, largest = INT_MIN, largest2 = INT_MIN;

    for (int counter = 1; counter <= 10; counter++) {
        printf("Enter number %d: ", counter);
        if (scanf_s("%d", &number) != 1) {
            printf("input failure\n");
            return 1;
        }
        if (number > largest) {
            largest2 = largest;
            largest = number;
        } else
        if (number > largest2) {
            largest2 = number;
        }
    }
    printf("The largest number is %d\n", largest);
    printf("The second largest number is %d\n", largest2);
    system("pause");
    return 0;
}
+3

, . , .

-

if (number > largest)
{
    largest2 = largest;
    largest = number;
}

, , largest2.

+13

:

if (number > largest)
    {
    largest = number;
    }

, . most2 = .

: 2 .

+1

if numbermore than largest, you should also update largest2, because now that you have found a number greater than all the previous ones, largestit becomes the second largest number!

    if (number > largest)
    {
        largest = number;
    }

becomes

    if (number > largest)
    {
        largest2 = largest;
        largest = number;
    }
+1
source

Source: https://habr.com/ru/post/1648020/


All Articles