他身材的第二个数字

时间:2012-12-08 00:43:56

标签: c#

嗯,这并不难,我做到了,但我不知道如何找到它的位置。 我知道在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 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分: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);
相关问题