没有向我显示正确的输出

时间:2017-08-09 16:12:15

标签: c# loops max long-integer min

我编译的程序没有显示正确的输出

代码是

using System;

namespace minsum
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            string[] arr_temp = Console.ReadLine().Split(' ');
            int[] arr = Array.ConvertAll(arr_temp,Int32.Parse);
            int i=0;
            long[] cal = new long[5];
            long max = 0;
            long min = 0;
            while(i < arr.Length)
            {
                for(int j=0; j<arr.Length; j++)
                {
                    cal[i] += arr [j];
                }
                cal [i] = cal [i] - arr [i];
                i++;
            }
            for (int l = 0; l < arr.Length; l++) 
            {
                Console.WriteLine (cal [l]);
            }
            for (int k = 0; k < arr.Length; k++) 
            {
                max = cal [0];
                min = cal [0];
                if (cal[k] > max) 
                {
                    max = cal [k];
                }
                else if (cal [k] < min) 
                {
                    min = cal [k];
                }

            }
            Console.WriteLine ("finalmax: "+ max);
            Console.WriteLine ("finalmin: "+ min);
        }
    }
}

我给该程序的输入是396285104 573261094 759641832 819230764 364801279 正确的输出将是最大值:2548418794和最小值:2093989309 但它显示错误的最小值:2516934969 enter image description here

1 个答案:

答案 0 :(得分:0)

在第三个循环中,您将在每次迭代时重置min和max的值。将这两行直接移到第三个循环上方,您的问题就会得到解决。

// Initialize max and min here instead of in your loop
max = cal [0];
min = cal [0];

for (int k = 0; k < arr.Length; k++) 
{
    if (cal[k] > max) 
    {
        max = cal [k];
    }
    else if (cal [k] < min) 
    {
        min = cal [k];
    }

}