[英]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.