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

2 回答 2

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;
    }
}
于 2012-12-08T01:18:56.000 回答
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);
于 2012-12-08T01:28:56.320 回答