我编译的程序没有显示正确的输出
代码是
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
答案 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];
}
}