2017-08-09 76 views
-8

节目我是编译不告诉我正确的输出不告诉我正确的输出

代码

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

+2

为什么不使用Math.Max和Math.Min?当我们不知道计算是什么时,我们又该如何帮助? – john

+0

@john我有些如何找到答案,并感谢您的帮助 – pkarthicbz

回答

0

在你的第三个循环中,要重设最小值和最大值的每个值迭代。将这两行直接移到第三个循环上方,问题就会解决。

// 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]; 
    } 

}