簡體   English   中英

尋找最大和第二大數字

[英]Finding the largest and second largest number

編寫一個輸入一系列10個數字的程序,找到10個數字的2個最大值? (僅使用if和loop)

任何人都可以幫我解決問題嗎? 我試過但是不對。 它無法列出第二大數字。 任何幫助將不勝感激。

  #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;
}

當你得到一個新的最大數字時,舊的最大數字成為第二大數字。 因此,您只需要檢查最大數量和兩個分配。

就像是

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

您仍然需要檢查大於largest2數字。

你的邏輯必須改進:

  • 當您獲得一個新的最大數字時,您必須更新第二大數字,因為之前的最大數字變為第二大數字。
  • 此外,您應該初始化最大和第二大INT_MIN以便您可以正確處理負數。
  • 您還必須檢查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;
}

在以下代碼中:

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

你拋棄已知的最大數字,而這個數字應該成為第二大數字。 所以你應該添加最大的2行=最大的行。

注意:通過將最大值和最大值2初始化為零,算法將不適用於負數。

如果number比大於largest ,您應該更新largest2太多,因為現在你比以往任何發現了一些較大的, largest變為第二大數目!

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM