2012-12-08 44 views
-2

那麼它不難,我做到了,但我不知道如何找到它的位置。 我知道在CASE1和CASE2中找到位置,但不在CASE3中。 有什麼幫助嗎?第二個號碼在他的大小

 int serial = 1, num, max, max2, i = 2,n; 
     Console.WriteLine("Enter number of numbers"); 
     n = int.Parse(Console.ReadLine()); 
     Console.WriteLine("Enter number"); 
     num = int.Parse(Console.ReadLine()); 
     /*case 1 */ 
     max = num; 
     max2 = num; 
     for (; i <= n; i++) 
     { 
      Console.WriteLine("enter num"); 
      num = int.Parse(Console.ReadLine()); 
      /* case 3 */ 
      if (num > max) 
      { 
       max2 = max; 
       max = num; 
       serial = i; 
      } 
       /* case 2 */ 
      else if (num > max2) 
      { 
       max2 = num; 
       serial = i; 
      } 
     } 
+2

對不起,我不不明白你在問什麼。你可以嘗試澄清你的問題嗎? – JMarsch

+0

這應該按預期工作。 –

+0

我需要找到N個號碼中的第二大號碼(用戶輸入他將輸入多少號碼) 我還需要找到列表中第二個號碼的位置,我知道如何在CASE 1中執行此操作並且2,但不知道它的情況下工作3(VS停止工作) –

回答

0

讓我們再使用一個變量來存儲最大數量的位置。在下面serial2是你的問題的結果。

int serial = 1, serial2 = 1, num, max, max2, i = 2,n; 
Console.WriteLine("Enter number of numbers"); 
n = int.Parse(Console.ReadLine()); 
Console.WriteLine("Enter number"); 
num = int.Parse(Console.ReadLine()); 
/*case 1 */ 
max = num; 
max2 = num; 
for (; i <= n; i++) 
{ 
    Console.WriteLine("enter num"); 
    num = int.Parse(Console.ReadLine()); 
    /* case 3 */ 
    if (num > max) 
    { 
     max2 = max; 
     max = num; 
     serial2 = serial; 
     serial = i; 
    } 
     /* case 2 */ 
    else if (num > max2) 
    { 
     max2 = num; 
     serial2 = i; 
    } 
} 
+0

HAHA我很愚蠢,謝謝 –

0

我想這是你後 - 你只是沒有更新您的第二大指數當你輸入的數字替代數量最多:

Console.WriteLine("Enter number of numbers"); 
int numberOfNumbers = int.Parse(Console.ReadLine()); 
int? largestNumber = null; 
int? secondLargestNumber = null; 
int? indexOfLargestNumber = null; 
int? indexOfSecondLargestNumber = null; 

for (int i = 0; i < numberOfNumbers; i++) 
{ 
    Console.WriteLine("Enter number"); 
    int inputNumber = int.Parse(Console.ReadLine()); 

    if (largestNumber == null || inputNumber > largestNumber) 
    { 

     secondLargestNumber = largestNumber; 
     largestNumber = inputNumber; 

     indexOfSecondLargestNumber = indexOfLargestNumber; 
     indexOfLargestNumber = i; 

    } 
    else if (secondLargestNumber == null || inputNumber > secondLargestNumber) 
    { 
     secondLargestNumber = inputNumber; 
     indexOfSecondLargestNumber = i; 
    } 
} 

/*because you started i=1 rather than i=0 as I've done, incrememting the indexes by 1*/ 
indexOfSecondLargestNumber++; 
indexOfLargestNumber++; 

Console.WriteLine("The {0} number entered ({1}) was the second largest.",indexOfSecondLargestNumber,secondLargestNumber); 
相關問題